Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006.

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Algoritmi e Programmazione

Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
Generazione di Piani attraverso Grafi di Pianificazione
RB-alberi (Red-Black trees)
Intelligenza Artificiale marco ernandes Gennaio – Aprile 2007.
Teoria e Implementazione
Università degli Studi di Roma Tor Vergata
Intelligenza Artificiale 1 Gestione della conoscenza lezione 5 Prof. M.T. PAZIENZA a.a
1 Esempi di consistenza sui limiti Non consistente sui limiti, considera Z=2, poi X-3Y=10 Ma il dominio qui sotto e consistente sui limiti: Confrontare.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e Strutture Dati (Mod. B)
Grafi.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Semantica per formule di un linguaggio proposizionale p.9 della dispensa.
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
Ingegneria della conoscenza e sistemi esperti Dario Bianchi, 1999 Risoluzione di problemi e ricerca.
Programmazione logica
Radix-Sort(A,d) // A[i] = cd...c2c1
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Usi (meno scontati) della visita DFS
Agenti logici: sistemi a regole
Agenti logici: calcolo proposizionale Maria Simi a.a. 2008/2009.
Euristiche: algoritmi costruttivi e di ricerca locale
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Web Communities and their identificaton
Problemi con soddisfacimento dei vincoli
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
Cammini minimi da un sorgente
Usi (meno scontati) della visita DFS. Informazioni utili: tenere il tempo clock=1 pre(v)=clock clock=clock+1 post(v)=clock; clock=clock+1 pre(v): tempo.
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
4/5/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo – Algoritmi.
Risoluzione di Problemi con gli algoritmi Ricorsivi
Algoritmi online Maria Simi, a.a. 2007/08 Problemi di esplorazione  Gli agenti per il problem-solving assumono:  ambienti deterministici e osservabili.
Ricerca euristica Maria Simi a.a. 2008/2009 Ricerca euristica  La ricerca esaustiva non è praticabile in problemi di complessità esponenziale  Noi.
Oltre la ricerca classica Cap 4 – Ricerca locale, ricerca online Maria Simi a.a. 2014/2015.
Didattica e Fondamenti degli Algoritmi e della Calcolabilità Terza giornata: principali classi di complessità computazionale dei problemi Guido Proietti.
Intelligenza Artificiale Metodologie di ragionamento Prof. M.T. PAZIENZA a.a
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2008/2009.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Sistemi basati su conoscenza Metodi di ricerca informata Prof. M.T. PAZIENZA a.a
Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Risoluzione dei Problemi (parte 2) Agostino Poggi.
Risolvere vincoli soft Francesca Rossi Giugno 2004.
1 Capitolo 3: Vincoli a dominio finito. 2 Vincoli a dominio finito u Problemi di soddisfazione di vincoli u Un risolutore con backtracking u Consistenza.
Ricerca locale M. Simi, Algoritmi di ricerca locale  Efficienti in occupazione di memoria: tengono traccia solo dello stato corrente (non.
1 Vincoli ‘Programming with constraints’ Capitolo 1.
Progetti Regole dei progetti Due studenti per progetto Due studenti per progetto Lavoro indipendente, con coordinamento per mettere insieme le due.
Gli agenti per il problem solving Maria Simi a.a 2007/2008.
Esercizi.
Agenti logici: calcolo proposizionale Maria Simi a.a. 2006/2007.
I giochi con avversario Maria Simi a.a. 2008/2009.

Grafi: rappresentazione e visita
Reti Logiche A Lezione 2.1 Sintesi di reti combinatorie a due livelli
Ricerca locale Maria Simi Assunzioni sui problemi  Gli algoritmi visti esplorano gli spazi di ricerca alla ricerca di un goal e restituiscono.
Algoritmi e Strutture Dati HeapSort. Select Sort: intuizioni L’algoritmo Select-Sort  scandisce tutti gli elementi dell’array a partire dall’ultimo elemento.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2011/2012.
Agenti risolutori di problemi Risolvere i problemi mediante ricerca Maria Simi a.a 2013/2014.
Ricerca online Maria Simi a.a. 2011/2012 Ambienti più realistici  Gli agenti risolutori di problemi “classici” assumono:  Ambienti completamente osservabili.
Ricerca euristica Maria Simi a.a. 2013/2014 Ricerca euristica  La ricerca esaustiva non è praticabile in problemi di complessità esponenziale  Noi.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2013/2014.
ASD a.a.2010/2011- Lezione 12 Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi Backtracking/ Branch and Bound Lezione n°12.
Problemi di soddisfacimento di vincoli Maria Simi a.a. 2010/2011.
Esempio: Map-Coloring
Transcript della presentazione:

Problemi di soddisfacimento di vincoli Maria Simi a.a. 2005/2006

Problemi di soddisfacimento di vincoli (CSP) Problemi con una struttura particolare, per cui conviene pensare ad algoritmi specializzati. La classe di problemi formulabili in questo modo è piuttosto ampia: layout di circuiti, scheduling, … Esistono euristiche generali che si applicano e che consentono la risoluzione di problemi significativi per questa classe

Formulazione di problemi CSP Problema: insieme di variabili: X 1 X 2 … X n con associato dominio: D 1 D 2 … D n insieme di vincoli (relazioni tra le variabili): C 1 C 2 … C m Stato: un assegnamento parziale di valori a variabili {X i = v i, X j = v j … } Stato iniziale: { } Azioni: assegnamento di un valore a una variabile Soluzione (goal test): un assegnamento completo (le variabili hanno tutte un valore) e consistente (i vincoli sono soddisfatti)

Esempio: colorazione di una mappa Variabili: WA, NT, SA, Q, NSW, V, T Domini: {red, green, blue} Vincoli: WA NT, WA SA, NT Q, SA Q, SA NSW SA V NSW V Grafo dei vincoli

Tipi di problemi CSP Variabili discrete con domini finiti o infiniti CSP booleani (valori vero e falso) Variabili con domini continui (progr. lineare) I vincoli possono essere: unari (es. x pari) binari (es. x y) di grado superiore (es. x+y = z) Vincoli assoluti o di preferenza

Ricerca in problemi CSP La massima profondità della ricerca è fissata dal n. di variabili k: ad ogni passo si assegna una variabile. Lampiezza dello spazio di ricerca è |D 1 | |D 2 | … |D k | dove |D i | è la cardinalità del dominio di X i il fattore di diramazione pari alla dimensione media dei domini d (e non kd + (k-1)d +...) Riduzione drastica dello spazio di ricerca dovuta al fatto che il goal-test è decomponibile e commutativo

Strategie di ricerca Ricerca con backtracking (BT): ad ogni passo si assegna una variabile e si torna indietro in caso di fallimento (Generate and Test). Controllo anticipato della violazione dei vincoli: è inutile andare avanti fino alla fine e poi controllare; si può fare backtracking non appena si scopre un vincolo violato. La ricerca è naturalmente limitata in profondità dal numero di variabili

Esempio di backtracking

Algoritmo di backtracking ricorsivo function Ricerca-Backtracking (csp) returns una soluzione o fail return Backtracking-Ricorsivo({ }, csp) function Backtracking-Ricorsivo(ass, csp) returns una soluzione o fail if ass è completo then return ass var Scegli-var-non-assegnata(Variabili[csp], ass, csp) for each val in Ordina-Valori-Dominio(var, ass, csp) do if val consistente con ass in base a Vincoli[csp] then aggiungi [var=val] ad ass risultato Backtracking-Ricorsivo(ass, csp) If risultato = fail then return risultato rimuovi [var=val] da ass return fail

Euristiche per problemi CSP 1. Quale variabile scegliere? 2. Quali valori scegliere? 3. Qual è linfluenza di una scelta sulle altre variabili? (Propagazione di vincoli) 4. Come evitare di ripetere i fallimenti? (Backtracking intelligente)

Scelta delle variabili 1. MRV (Minimum Remaining Values): scegliere la variabile che ha meno valori possibili, la variabile più vincolata. Si scoprono prima i fallimenti. 2. In base al grado: scegliere la variabile coinvolta in più vincoli con le altre variabili (la variabile più vincolante) Da usare a parità di MRV

Scelta dei valori Scelta la variabile come scegliere il valore da assegnare? 1. Valore meno vincolante: quello che esclude meno valori per le altre variabili direttamente collegate con la variabile scelta

Propagazione di vincoli 1. Verifica in avanti (forward checking o FC): assegnato un valore ad una variabile si possono eliminare i valori incompatibili per le altre var. collegate da vincoli (un passo solo) 2. Propagazione di vincoli: si itera il forward checking; se una variabile ha il suo dominio ristretto per effetto del forward checking si vanno a controllare le variabili collegate …

Esempio di FC {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} WA=r Q=g V=b {g b}{g b} {g b}{g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} WA {b}{b} {b}{b} {r b} {r g b}{r g b} {r g b}{r g b} WA Q {b}{b} { } { r } {r g b}{r g b} WA Q V

Stesso esempio in forma tabellare

Consistenza degli archi Un metodo veloce per propagare i vincoli. Nel grafo di vincoli, un arco orientato da A a B è consistente se per ogni valore x di A cè almeno un valore y di B consistente con x. Quello che si fa è controllare la consistenza degli archi allinizio e dopo ogni assegnamento (MAC – Maintaining Arc Consistency)

{r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {g b}{g b} {g b}{g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} {r g b}{r g b} WA Esempio di MAC { } {r b} {r g b}{r g b} {r g b}{r g b} WA Q WA=r Q=g Si scopre subito che non va bene

Complessità di MAC (o AC-3) Devono essere controllati tutti gli archi (max k 2 ) Se durante il controllo di un arco X Y il dominio di Y si restringe vanno ricontrollati tutti gli archi collegati Z Y Il controllo di consistenza di un arco ha complessità d 2 Un arco deve essere controllato al max d volte Complessità: O(k 2 d 3 )... polinomiale

MAC non rileva tutte le inconsistenze Più efficace di forward-checking, ma non completo. Esempio: WA=red NSW=red... non viene rilevata inconsistenza {g b} {g b}{g b} {g b}{g b} {r g b}{r g b} WA NSW

Backtracking cronologico Supponiamo di avere {Q=red, NSW=green, V=blue, T=red} Cerchiamo di assegnare SA Il fallimento genera un backtracking cronologico … e si provano tutti i valori alternativi per lultima variabile, T, continuando a fallire {r, b, g} Q NSW V T

Backtracking intelligente Si considerano alternative solo per le variabili che hanno causato il fallimento {Q, NSW, V}, linsieme dei conflitti Backtracking guidato dalle dipendenze. {r, b, g} {r}{r} {g}{g} {b}{b} {r }{r } Q NSW V T

CSP con miglioramento iterativo Si parte con tutte le variabili assegnate (tutte le regine sulla scacchiera) e ad ogni passo si modifica lassegnamento ad una variabile per cui un vincolo è violato (si muove una regina minacciata su una colonna). È un algoritmo di riparazione euristica. Uneuristica nello scegliere un nuovo valore potrebbe essere quella dei conflitti minimi: si sceglie il valore che crea meno conflitti.

Il problema delle 8 regine come CSP Formulazione come CSP: V i : posizione della regina nella colonna i-esima D i : {1 … 8} Vincoli di non-attacco tra V 1 e V 2 : { … … …}

Esempio Molto efficace: 1 milione di regine in 50 passi! Utilizzabile in problemi reali di progettazione e scheduling.