Intelligenza Artificiale Ing. Tiziano Papini Email: papinit@dii.unisi.it Web: http://www.dii.unisi.it/~papinit
Constraint Satisfaction metodi costruttivi Intelligenza Artificiale - CSP Tiziano Papini - 2011 2
Metodi Costruttivi Si parte da uno stato privo di assegnamenti e si cerca di immettere valori senza violare i vincoli. In questo caso si formalizza un CSP come un PS e si risolve attraverso tecniche di Search. Stato: assegnamento di valori dal dominio D i a variabili X i X 0 : assegnamento vuoto {} Successor function: un valore per ogni var non assegnata consistente con quelle già assegnate Goal test: assegnamento completo senza violazione di vincoli Costo di cammino: costante per ogni step Intelligenza Artificiale - CSP Tiziano Papini - 2011 3
Metodi Costruttivi vantaggi Commutatività del CSP: l ordine degli assegnamenti è indifferente (non interessa il percorso), quindi: Op: genera nodi da una sola variabile (qualsiasi) Non c è bisogno di memorizzare il cammino Non c è bisogno di calcolare il costo di cammino La profondità dell albero è finita e conosciuta: d = numero di variabili da assegnare Gli algoritmi depth-first sono i più usati Le soluzioni proposte non violano i vincoli e svantaggi Grosso problema: le grandi dimensioni che può assumere D i che definisce il branching factor Intelligenza Artificiale - CSP Tiziano Papini - 2011 4
Backtracking Search E una ricerca Depth-First (per problemi CSP) in cui si espande facendo assegnamenti ad una sola variabile per volta. E l algoritmo base per i CSP. 1. assignment = {}; 2. STACK.insert(assignment); 3. do if (STACK.isEmpty()) return failure; assignment = STACK.remove(); if (complete(assignment)) return assignment; STACK.insertAll (expand(assignment)); while (true); Intelligenza Artificiale - CSP Tiziano Papini - 2011 5
Backtracking - simulazione Empty assignment 1 st variable 2 nd variable 3 rd variable Assignment = {(X {(X = {} {(X 1 1 =v11),(x 1 1 =v11),(x =v11)} =v11)} 1 2 2 =v21),(x =v22)} =v21)} 2 =v21)} 3 =v31)} =v32)} Intelligenza Artificiale - CSP Tiziano Papini - 2011 6
Backtracking - simulazione Intelligenza Artificiale - CSP Tiziano Papini - 2011 7
Migliorare il backtracking (I) La ricerca Depth-First semplice non è molto efficiente. (Come già visto in PS). Nel PS si introduce un informazione problem-specific (euristiche) per migliorare le prestazioni della ricerca. Il framework CSP permette di ottenere euristiche generali problem-independent considerando il concetto di espansione. Espandere vuol dire assegnare dei valori ad una variabile a scelta senza violare i vincoli. Intelligenza Artificiale - CSP Tiziano Papini - 2011 8
Migliorare il backtracking (II) Dal concetto di espansione: La scelta della variabile da espandere è determinante! L ordine d inserimento dei valori nello STACK è determinante! Le euristiche general-purpose del Constraint Programming rispondono quindi alle seguenti domande: 1. Quale variabile scegliere per l espansione? 2. In che ordine provare i valori? 3. E possibile scoprire in anticipo dei fallimenti? Intelligenza Artificiale - CSP Tiziano Papini - 2011 9
Scelta della Variabile (I) Minimum Remaining Values (MRV) Heuristic: Si sceglie la variabile con il minor numero di valori legali (non viola nessun vincolo) rimanenti. MRV è anche detta: Most Constrained Variable Heuristic Fail First Heuristic Cheapest First Heuristic Vantaggi: Riduce il branching factor (da cui cheapest first) Porta più facilmente ad un fallimento superficiale (da cui fail first) con conseguente backtracking e quindi aiuta a potare l albero. Intelligenza Artificiale - CSP Tiziano Papini - 2011 10
Scelta della Variabile (II) L euristica del grado (o most constraining variable ) Heuristic: In alcuni casi conviene scegliere la variabile coinvolta in più vincoli Riduce il branching factor delle scelte future Degree Heuristic ed è spesso associata a MRV (come un tiebreaker perchè è meno informativa di MRV). Intelligenza Artificiale - CSP Tiziano Papini - 2011 11
Scelta del Valore Least Constraining Value (LCV) Heuristic: Preferisci i valori che lasciano il più grande sottoinsieme di valori legali per le variabili non assegnate (numero di scelte possibili rispetto alle variabili adiacenti). E il criterio di ordinamento dell espansione L euristica LCV può permettere di arrivare più in fretta ad una soluzione Se una soluzione non c è, o se ci serve trovarle tutte, l euristica LCV non ha alcuna utilità; L idea è che si danno maggiori possibilità alla ricerca di trovare futuri assegnamenti legali. Intelligenza Artificiale - CSP Tiziano Papini - 2011 12
Evitare i fallimenti La LCV Heuristic richiede il controllo previo del numero di valori rimanenti per variabile. Per fare questo si adotta il forward checking. Il Forward checking può essere utilizzato contemporaneamente per anticipare i dead-end. Per ogni variabile non-assegnata si tiene traccia del subset di valori ancora legali. Ogni volta che v è assegnato a X i : per ogni variabile non ass. X j connessa a X i da un vincolo si cancella dal dominio D j ogni valore inconsistente con v Intelligenza Artificiale - CSP Tiziano Papini - 2011 13
Forward Checking E applicabile all interno dell algoritmo di backtracking come tecnica per stabilire quando tornare indietro. Ogni volta che si raggiunge uno stato non-consistente (con almeno una variabile priva di valori rimasti node-consistency) si effettua il backtracking. Intelligenza Artificiale - CSP Tiziano Papini - 2011 14
Forward Checking (es: colorazione grafo) WA NT SA Q V NSW T Nell esempio non vengono adottate le altre euristiche WA NT Q NSW V SA T RGB RGB RGB RGB RGB RGB RGB Intelligenza Artificiale - CSP Tiziano Papini - 2011 15
Forward Checking (es: colorazione grafo) WA NT SA Q V NSW T Nell esempio non vengono adottate le altre euristiche WA NT Q NSW V SA T RGB RGB RGB RGB RGB RGB RGB R RGB RGB RGB RGB RGB RGB Forward checking rimuove il RED da NT e da SA Intelligenza Artificiale - CSP Tiziano Papini - 2011 16
Forward Checking (es: colorazione grafo) WA NT SA Q V NSW T Nell esempio non vengono adottate le altre euristiche WA NT Q NSW V SA T RGB RGB RGB RGB RGB RGB RGB R GB RGB RGB RGB GB RGB R GB G RGB RGB GB RGB Intelligenza Artificiale - CSP Tiziano Papini - 2011 17
Forward Checking (es: colorazione grafo) WA NT SA Q V NSW T Nell esempio non vengono adottate le altre euristiche WA NT Q NSW V SA T RGB RGB RGB RGB RGB RGB RGB R GB RGB RGB RGB GB RGB R B G RB RGB B RGB R B G RB B B RGB Intelligenza Artificiale - CSP Tiziano Papini - 2011 18
Forward Checking (es: colorazione grafo) WA NT SA Q V NSW T Nell esempio non vengono adottate le altre euristiche WA NT Q NSW V SA T RGB RGB RGB RGB RGB RGB RGB R GB RGB RGB RGB GB RGB R GB G RGB RG GB RGB Intelligenza Artificiale - CSP Tiziano Papini - 2011 19
Forward Checking (es: colorazione grafo) WA NT SA Q V NSW T Nell esempio non vengono adottate le altre euristiche WA NT Q NSW V SA T RGB RGB RGB RGB RGB RGB RGB R GB RGB RGB RGB GB RGB R B G RB RGB B RGB R B G RB G B RGB Intelligenza Artificiale - CSP Tiziano Papini - 2011 20
Arc Consistency (Waltz, 72) Il metodo dell arc-consistency usa un constraint graph orientato; Un arco (X,Y ) è detto consistente se per ogni valore legale di X esiste un valore legale di Y ; L idea dell arco-consistenza è di far sì che ogni arco (orientato) nel grafo dei vincoli sia consistente; Si procede per eliminazione dei valori che generano inconsistenze. Se si elimina un valore di una variabile X, occorre ricontrollare tutti gli archi (Y,X); L arc consistency può essere usata o in fase di preprocessing, o dopo ciascuna assegnazione durante una ricerca incrementale. Intelligenza Artificiale - CSP Tiziano Papini - 2011 21
Arc Consistency (Waltz, 72) Forward Checking stabilisce un criterio di stop, ma non prevede i fallimenti con anticipo. In figura, per esempio, NT e SA sono entrambe Blu: nessuna soluzione è raggiungibile! Arc-consistency: per evitare di dead-end ci dobbiamo assicurare che, per ogni vincolo, rimanga un insieme di valori assegnabili alle variabili vincolate. Intelligenza Artificiale - CSP Tiziano Papini - 2011 22
Contraint Propagation Arc-consistency può essere usato come controllo a supporto del backtracking dopo ogni assegnamento. Individua i dead-end prima di Forward Checking. Contraint Propagation: L approccio può però essere generalizzato facendo ripetutamente il controllo di arcconsistency, rimuovendo i valori che non la garantiscono. Intelligenza Artificiale - CSP Tiziano Papini - 2011 23
Contraint Propagation Intelligenza Artificiale - CSP Tiziano Papini - 2011 24
Algoritmi di Arc Consistency Invece di affrontare un CSP facendo search sulle variabili, si effettua un search sui vincoli (gli archi della CN). Si parte da una configurazione con i domini delle variabili pieni. Se un arco è inconsistente lo si rende consistente rimuovendo i valori inconsistenti. L arco x i x j (arco diretto) è definito consistente iff: v D i v D j cioè per ogni valore di V i esiste un assegnamento legale di V j. Quando si è reso consistente ogni arco allora si ritorna l assegnamento delle variabili come soluzione. Intelligenza Artificiale - CSP Tiziano Papini - 2011 25
AC-3 (Mackworth, 77) AC-3 ARCS = {tutti gli archi della CN}; while (!ARCS.isEmpty()) (X i,x j ) ARCS.remove(); if (REMOVE-INC-VALUES(X i,x j )==true) for all X k in NEIGHBORS[X i ] ARCS.put(X k, X i ); REMOVE-INC-VALUES(X i,x j ) boolean removed = false; for all v in DOMAIN(X i ) if no value v in DOMAIN(X j ) satisfies (X i,x j ) DOMAIN(X i ).remove(v); removed = true; return removed; Intelligenza Artificiale - CSP Tiziano Papini - 2011 26
L algoritmo AC-3: Complessità di calcolo Un CSP binario ha al massimo O(n 2 ) archi; Se d è la massima cardinalità dei domini delle variabili, ogni arco (X,Y ) può essere inserito in coda al massimo d volte (perché Y ha al massimo d valori da cancellare); La consistenza di un arco si può controllare in tempo O(d 2 ); La complessità di calcolo di AC-3 è O(n 2 d 3 ). Intelligenza Artificiale - CSP Tiziano Papini - 2011 27
K-Consistency Generalizzazione del concetto di arc-consistency da coppie a gruppi di variabili: Un grafo è K-consistente se per ogni assegnamento legale di K-1 variabili esiste sempre un valore legale per ogni K-esima variabile V k nel grafo dei vincoli. Strong k-consistency = i-consistency per ogni i da 1 a k Node-consistency = strong 1-consistency Arc-consistency = strong 2-consistency Path-consistency = strong 3-consistency Un CSP con N variabili che sia strongly N-consistent, è risolvibile senza backtracking. Un CSP strongly K-consistent, è risolvibile senza backtracking se si trova l ordinamento di variabili appropriato. Intelligenza Artificiale - CSP Tiziano Papini - 2011 28
Migliorare il backtracking (III) Abbiamo sin qui visto tecniche di look-ahead che mirano ad evitare i dead-end (profondi). Possiamo anche migliorare il backtracking con tecniche di look-back: Backjump Constraint recording Backtracking: si torna indietro alla variabile precedentemente assegnata Backjumping: si torna indietro direttamente alla variabile che a creato problemi. Intelligenza Artificiale - CSP Tiziano Papini - 2011 29
Backjumping Motivazione: il motivo di un fallimento non si trova per forza nell ultima coppia di assegnamenti, ma in assegnamenti precedenti. Backjumping = non-chronological backtracking. x 1 x 2 x 3 Fare backtracking a x 5 non cambia niente. Si rimane in un dead-end. x 4 x 5 x 6 x 7 Per un backtracking efficace va scelta un altra variabile (secondo un criterio a scelta es: conflict set). x 8 1 2 3 4 5 6 7 8 Intelligenza Artificiale - CSP Tiziano Papini - 2011 30
Conflict Set Si tiene traccia in CS[x i ] delle variabili assegnate, anche una sola, che entrano in conflitto con qualche valore presente in D i. Nogood variables. Directed-conflict Backtracking torna direttamente all assegnamento (+ recente) causa del dead-end. si rimuovono le decisioni intermedie e si aggiorna CS[] {} x 1 {1} 1 1 x 2 {1,2} 1 2 1 2 x 3 {1,2,3} 1 2 1 2 3 X 4 {1,2,3,4} 1 4 2 1 2 3 x 5 {1,2,3,4} 1 3 2 4 3 1 2 3 x 6 1 2 3 4 5 6 7 8 x 7 x 8 1 3 5 2 4 Directed-conflict Backtracking Ha il vantaggio di accelerare il processo di backtracking Intelligenza Artificiale - CSP Tiziano Papini - 2011 31
Dynamic Backtracking (Ginsberg, 90, 92) E un non-chronological backtracking (backjumping) che: torna alla variabile nogood causa del dead-end NON rimuove le decisioni intermedie, ma ricostruisce l albero eliminando un solo assegnamento X 1 = 1 X 2 = 3 X 3 = 5 X 4 = 2 X 5 = 4 X 1 = 1 X 2 = 3 X 3 = 5 X 5 = 4 Stabilire la variabile effettivamente causa del dead-end non è sempre ovvio Intelligenza Artificiale - CSP Tiziano Papini - 2011 32
Dynamic Backtracking (es: crossword generation) 1 2 3 4 5 1A 3A 5A 1D 2D 4D AS FUN GO IT NAG NO IN TAD TO IF SAG DO IS LA AT NUT NUL 1 I 2 N 1 I 2 N 1 I 2 N 1 I 2 N 1 I 2 N 3 4 3 U 4 3 F U 4 3 F U 4 N 3 F U 4 N 5 5 L 5 L 5 L 5 T O 1A 2D 1D 3A 5A Intelligenza Artificiale - CSP Tiziano Papini - 2011 33
Dynamic Backtracking (es: crossword generation) (Ginsberg, 90) ha usato: euristica MRV (cheapest-first) euristica LCV min-look = 10 sul backtracking Schema di hashing (degli ingressi del dizionario) per calcolare rapidamente il dominio (matching dei pattern) 1 position 2 position 3 position A 11110000000 00100010100 01001000001 4 position B 00000001100 10001100000 C 00000000011 00010001001 10001100000 il valore k è alto se l ingresso k del dizionario contiene la data lettera i alla data posizione j Schemi grandi (15x15) riempiti in pochi secondi! Intelligenza Artificiale - CSP Tiziano Papini - 2011 34
Euristiche e discrepanze In molti problemi reali lo spazio di ricerca è talmente vasto che si deve far ricorso a delle euristiche: Suggeriscono un assegnamento da fare Dipendono strettamente dal problema (es: nella generazione di cruciverba preferire le parole con vocali o lettere comuni). Gli algoritmi devono gestire l errore dell euristica: seguire sempre l euristica può portare ad una inconsistenza gli errori si verificano più spesso nelle prime fasi della ricerca Il numero di errori dell euristica è tipicamente ridotto Si usa il concetto di discrepanza : assegnamento per il quale non viene seguito il suggerimento dell euristica. L idea è che seguendo le indicazioni dell euristica, tranne in poche occasioni (discrepanze), si può arrivare rapidamente ad una soluzione. Intelligenza Artificiale - CSP Tiziano Papini - 2011 35