Upload
zelia
View
61
Download
0
Embed Size (px)
DESCRIPTION
Gennaio – Aprile 2006. Intelligenza Artificiale. marco ernandes email: [email protected]. Constraint Satisfaction. PS vs. CSP. Nel PS tutto ruota intorno al concetto di stato. Nel PS tutto è problem-specific (o state-specific) SCS( n ), g ( n ), h ( n ), t ( n ), S 0 . - PowerPoint PPT Presentation
Citation preview
Intelligenza Artificiale - CSP 2/50
Constraint SatisfactionConstraint Satisfaction
Intelligenza Artificiale - CSP 3/50
PS vs. CSPNel PS tutto ruota intorno al concetto di stato.
Nel PS tutto è problem-specific (o state-specific) SCS(n), g(n), h(n), t(n), S0.
Gli stati sono dei veri “black box” senza struttura interna.
La terminazione controlla se lo stato COINCIDE COMPLETAMENTE con uno degli stati finali.
Il CSP invece cerca di “aprire” gli stati e generalizzarne la rappresentazione interna.
Intelligenza Artificiale - CSP 4/50
Il CSP si occupa, tipicamente di Problemi di assegnazione CONSTRAINT SATISFACTION PROBLEMS
Nei problemi di assegnazione non c’è l’interesse di ottenere un percorso risolvente. non c’è (generalmente) un costo associato ad ogni passo non si possiede uno stato obiettivo (possedere uno stato
obiettivo coincide con l’aver risolto il problema)
Il PS fornisce un framework per affrontare problemi di percorso, il CSP fornisce tecniche per problemi di assegnazione: CONSTRAINT SATISFACTION PROGRAMMING
CSP vs. PS
Intelligenza Artificiale - CSP 5/50
Esempi di CSP
1I 2N3F U 4 N
5T O
otto+due
dieci
aula
ora
1A 2A
9:00-10:00 Diritto pubblico Storia 2
10:00-11:00 Diritto privato Politica comp.
11:00-12:00 Storia 1 Diritto privato
Intelligenza Artificiale - CSP 6/50
CSP(problems & programming)
CSP
CS-Programming
Metodo per formalizzare e attaccare un problema CS.
CS-Problems
Tipologia di problemi (CS)
La differenza tra PS e CSP può essere sfumata:
un CSP può al limite essere formalizzato come
PS e attaccato di conseguenza.
Intelligenza Artificiale - CSP 7/50
Definizione di CSP
Un problema di CSP (soddisfacimento vincoli) è definito da: un set di variabilivariabili: X1, X2,…, Xn
un set di vincolivincoli (constraints): C1, C2,…, Cm
ogni variabile Xi è associata ad un dominio Di di
valorivalori ammissibili v ogni vincolo Ci agisce su di un subset di variabili e
specifica le combinazioni di assegnamenti legali.
La soluzione di un CSP è data da un assegnamento completo (per ogni variabile Xi c’è un valore estratto da Di) senza violazione dei vincoli.
Intelligenza Artificiale - CSP 8/50
Variabili: 64 Xij con i = da 1 a 8, j = da 1 a 8
Dominio delle variabili D = {1,0}
Vincoli: Xij = 1 SE Xik = 0 per tutti k da 1 a 8, k j () Xij = 1 SE Xkj = 0 per tutti k da 1 a 8, k i () Xij = 1 SE Xi+h,j+h = 0, Xi-h,j-h = 0 per tutti ih ( )
da 1 a 8, h 0
CSP es: 8-Regine (I)
x1,j
x2,j
x3,j
x4,j
x5,j
x6,j
x7,j
x8,j
xi,1 xi,2 xi,3 xi,4 xi,5 xi,6 xi,7 xi,8
Intelligenza Artificiale - CSP 9/50
Variabili: 8 Xi con i = da 1 a 8
Dominio delle variabili D = {1,2,…,8}
Vincoli: Xi = k SE Xj k per tutti j da 1 a 8, j i () Xi = k SE Xih kh per tutti ih da 1 a 8, h 0
( )
CSP es: 8-Regine (II)
x1
x2
x3
x4
x5
x6
x7
x8
D = 1 2 3 4 5 6 7 8
Intelligenza Artificiale - CSP 10/50
Variabili: WA, NT, Q, NSW, V, SA, T
Domini Di = {red, green, blue}
Vincoli: regioni adiacenti devono avere colori diversi:
es 1: color(WA) ≠ color(NT), es 2: color(WA,NT) da
{(red,green), (red,blue), (green,red), (green,blue), (blue,red), (blue,green)}
CSP es: Colorazione Mappe
Intelligenza Artificiale - CSP 11/50
CSP es: Criptoaritmetica
two+
twofour
Variabili: F, T, U, W, R, O (+ Xd, Xc, Xm, i riporti)
Domini Di = {1,2,3,4,5,6,7,8,9,0}
Vincoli: ogni lettera deve essere associata ad un valore diverso e la somma tra due lettere in colonna (+ il riporto della somma precedente) deve essere uguale al valore della lettera “risultato”
Alldiff(F, T, U, W, R, O) O+O = R +10 * Xd
Xd +W+W = U + 10 * Xc
Xm = F
Intelligenza Artificiale - CSP 12/50
CSP es: Soddisfacibilità (SAT)
(x1 x2 x3) (x1 x2 x3) (x1 x2 )
Variabili: x1,x2,x3
Domini Di = {true,false}
Vincoli: il valore di ogni clausola deve essere TRUE
(x1 x2 x3) = TRUE (x1 x2 x3) = TRUE (x1 x2) = TRUE
Intelligenza Artificiale - CSP 13/50
CSP e vincoliConstraint Network (CN): la rete di relazioni che coinvolge vincoli, variabili e valori.
Arità dei vincoli k(C) Vincoli unari: k(C) = 1, il vincolo agisce solo su una variabile Vincoli binari: k(C) = 2, il vincolo agisce su una coppia di variabili Vincoli n-ari: k(C) = n, il vincolo agisce su più variabili
contemporaneamente (es: N-Regine ogni variabile con valore )
CSP-binari possiedono al max. vincoli binari e si possono descrivere con un grafo dei vincoli.
I CSP di ordine maggiore si
descrivono con ipergrafi.
Intelligenza Artificiale - CSP 14/50
CSP e complessità
CSP finiti: dominio finito di valori
CSP infiniti: dominio infinito di valori(problemi affrontati dalla programmazione lineare)
SAT: il SAT è un problema CSP finito e ogni CSP è riducibile al SAT, quindi:
La complessità dei CSP finiti è esponenziale
(es: Knapsack Problem 2n)
Intelligenza Artificiale - CSP 15/50
Intro al CS-ProgrammingIl Constraint Programming: insieme di metodologie che mirano alla risoluzione dei CSP e richiede 3 scelte progettuali
modello (definito con framework CSP) algoritmo euristica
Ognuna di queste scelte influenza l’efficienza della risoluzione (es: il modello fa aumentare o diminuire le dimensioni della CN).
Gli algoritmi si dividono in 2 categorie:
Metodi Costruttivi Metodi Riparativi
Intelligenza Artificiale - CSP 16/50
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 Di a variabili Xi
X0: 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 17/50
Metodi Costruttivi – vantaggi
Commutatività del CSP: l’ordine degli assegnamenti è indifferente (non interessa il percorso), quindi:
SCS: 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
Grosso problema: le grandi dimensioni che può assumere Di che definisce il branching factor
… e svantaggi
Intelligenza Artificiale - CSP 18/50
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 19/50
Backtracking - simulazioneEmpty assignment
1st variable
2nd variable
3rd variable
Assignment = {}Assignment = {(X1=v11)}Assignment = {(X1=v11),(X2=v21)}Assignment = {(X1=v11),(X2=v21),(X3=v31)}Assignment = {(X1=v11),(X2=v21)}Assignment = {(X1=v11),(X2=v21),(X3=v32)}Assignment = {(X1=v11),(X2=v21)}Assignment = {(X1=v11)} Assignment = {(X1=v11),(X2=v22)}
Intelligenza Artificiale - CSP 20/50
Migliorare il backtracking (I)
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.
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.
Intelligenza Artificiale - CSP 21/50
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 rispondo 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?
Migliorare il backtracking (II)
Intelligenza Artificiale - CSP 22/50
Scelta della Variabile (I)Minimum Remaining Values (MRV) Heuristic:
Si sceglie la variabile con il minor numero di valori legali 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 23/50
Scelta della Variabile (II)
Allo stato X0 di questo esempio ogni variabile ha lo stesso numero di valori legali.
In questo caso conviene scegliere la variabile coinvolta in più vincoli
Riduce il branching factor delle scelte future
Si chiama Degree Heuristic ed è spesso associata a MRV (funge da tie-breaker).
Intelligenza Artificiale - CSP 24/50
Scelta del ValoreLeast Constraining Value (LCV) Heuristic:
Preferisci i valori che lasciano il più grande sottoinsieme di valori legali per le variabili non assegnate.
E’ il criterio di ordinamento dell’espansione
L’idea è che si danno maggiori possibilità alla ricerca di trovare futuri assegnamenti legali.
Mantiene 1 valore per SA
Mantiene 0 valori per SA
Intelligenza Artificiale - CSP 25/50
Evitare i fallimenti
La LCV Heuristic richiede il controllo previo del numero di valori rimanenti per variabile.
Per fare questo si fa: forward checking.
Per ogni variabile non-assegnata si tiene traccia del subset di valori ancora legali.
Ogni volta che v è assegnato a Xi: per ogni variabile non ass. Xj connessa a Xi da un
vincolo si cancella dal dominio Dj ogni valore inconsistente con v
Intelligenza Artificiale - CSP 26/50
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.
Forward Checking
Intelligenza Artificiale - CSP 27/50
WA NT Q NSW V SA T
RGB RGB RGB RGB RGB RGB RGB
TWA
NT
SA
Q
NSW
V
Forward Checking(es: colorazione grafo)
Nell’esempio nonvengono adottatele altre euristiche
Intelligenza Artificiale - CSP 28/50
WA NT Q NSW V SA T
RGB RGB RGB RGB RGB RGB RGB
R RGB RGB RGB RGB RGB RGB
TWA
NT
SA
Q
NSW
V
Forward checking rimuove il RED da NT e da SA
Forward Checking(es: colorazione grafo)
Nell’esempio nonvengono adottatele altre euristiche
Intelligenza Artificiale - CSP 29/50
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
TWA
NT
SA
Q
NSW
V
Forward Checking(es: colorazione grafo)
Nell’esempio nonvengono adottatele altre euristiche
Intelligenza Artificiale - CSP 30/50
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
TWA
NT
SA
Q
NSW
V
Forward Checking(es: colorazione grafo)
Nell’esempio nonvengono adottatele altre euristiche
Intelligenza Artificiale - CSP 31/50
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
TWA
NT
SA
Q
NSW
V
Forward Checking(es: colorazione grafo)
Nell’esempio nonvengono adottatele altre euristiche
Intelligenza Artificiale - CSP 32/50
TWA
NT
SA
Q
NSW
V
Forward Checking(es: colorazione grafo)
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
TWA
NT
SA
Q
NSW
V
Nell’esempio nonvengono adottatele altre euristiche
Intelligenza Artificiale - CSP 33/50
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 34/50
Contraint PropagationArc-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 arc-consistency, rimuovendo i valori che non la garantiscono.
Intelligenza Artificiale - CSP 35/50
Contraint PropagationArc-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 arc-consistency, rimuovendo i valori che non la garantiscono.
Intelligenza Artificiale - CSP 36/50
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 xi xj (arco diretto) è definito consistente
iff: v Di v’ Dj cioè per ogni valore di Vi esiste un assegnamento legale di Vj.
Quando si è reso consistente ogni arco allora si ritorna l’assegnamento delle variabili come soluzione.
Intelligenza Artificiale - CSP 37/50
AC-3(Mackworth, ’86)
ARCS = {tutti gli archi della CN}; while (!ARCS.isEmpty())
(Xi,Xj) ARCS.remove();if (REMOVE-INC-VALUES(Xi,Xj)==true)
for all Xk in NEIGHBORS[Xi]ARCS.put(Xk, Xi);
boolean removed = false; for all v in DOMAIN(Xi)
if no value v’ in DOMAIN(Xj) satisfies (Xi,Xj)DOMAIN(Xi).remove(v);removed = true;
return removed;
REMOVE-INC-VALUES(Xi,Xj)
AC-3
Intelligenza Artificiale - CSP 38/50
K-ConsistencyGeneralizzazione 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 Vk nel grafo dei vincoli.
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 39/50
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.
Migliorare il backtracking (III)
Intelligenza Artificiale - CSP 40/50
BackjumpingMotivazione: il motivo di un fallimento non si trova per forza nell’ultima coppia di assegnamenti, ma in assegnamenti precedenti.
Backjumping = non-chronological backtracking.
x1
x2
x3
x4
x5
x6
x7
x8
1 2 3 4 5 6 7 8
Fare backtracking a x5 non cambia niente. Si rimane in un dead-end.
Per un backtracking efficace va scelta un’altra variabile (secondo un criterio a scelta es: conflict set).
Intelligenza Artificiale - CSP 41/50
Conflict SetSi tiene traccia in CS[xi] delle variabili assegnate, anche una sola, che entrano in conflitto con qualche valore presente in Di. Nogood variables.
Directed-conflict Backtracking
torna direttamente all’assegnamento (+ recente) causa del dead-end.
si rimuovono le decisioni intermedie e si aggiorna CS[]
{} x1
{1} 1 1 x2
{1,2} 1 2 1 2 x3
{1,2,3} 1 2 1 2 3 X4
{1,2,3,4} 1 4 2 1 2 3 x5
{1,2,3,4} 1 3 2 4 3 1 2 3 x6
x7
x8
1 2 3 4 5 6 7 8
1
3
5
2
4
Directed-conflict Backtracking
Ha il vantaggiodi accelerare il
processo di backtracking
Intelligenza Artificiale - CSP 42/50
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
X1 = 1
X2 = 3
X3 = 5
X4 = 2
X5 = 4
X1 = 1
X2 = 3
X3 = 5
X5 = 4
Stabilire la variabile“effettivamente”
causa del dead-endnon è sempre ovvio
Intelligenza Artificiale - CSP 43/50
Dynamic Backtracking(es: crossword generation)
1I 2N3 U 4
5L
1I 2N3 4
5
1I 2N3F U 4
5L
1A 3A 5A 1D 2D 4D
AS FUN GO IT NAG NO
IN TAD TO IF SAG DO
IS LA AT NUT
NUL
1 2
3 4
5
1I 2N3F U 4N
5L
1I 2N3F U 4 N
5T
Intelligenza Artificiale - CSP 44/50
Dynamic Backtracking (es: crossword generation)
(Ginsberg, ’90) ha usato:
euristica MRV (cheapest-first): x argmini=1n #Di
euristica LCV nella formula: min-look = 10 sul backtracking
Schema di hashing (degli ingressi del dizionario) per calcolare rapidamente il dominio (matching dei pattern)
Schemi grandi (15x15) riempiti in pochi secondi!
( ) + jj=1 if v = #D
®Õ
1° position 2° position 3° position 4° positionA 11110000000… 00100010100… 01001000001… …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
Intelligenza Artificiale - CSP 45/50
Metodi Riparativi(Ricerca Locale)
Si parte da uno stato “pieno”: cioè con tutte le variabili assegnate.
Per rientrare nel framework CSP:
Si consentono stati con violazione dei vincoli Gli operatori sono di riassegnamento di valori a variabili e non di
assegnamento.
Si usano tecniche di ottimizzazione locale: Min-Conflicts Hill-climbing Tabu Search Simulated annealing Algoritmi Genetici
Intelligenza Artificiale - CSP 46/50
Metodi Riparativi vs. Costruttivi
Gli algoritmi costruttivi funzionano bene soprattutto su CSP-binari (o con pochi vincoli e pochi valori): Es: complex di AC-3 = O(nk3) dipende da k=valori e n=archi
Diventano poco gestibili con Constraint Networks ad arità maggiore e con molti valori. Es: N-regine con N > 106.
Gli algoritmi riparativi, locali, forniscono meno garanzie teoriche, ma nel caso di problemi molto complessi risultano efficienti nella pratica.
Gli algoritmi riparativi non sono completi.
Intelligenza Artificiale - CSP 47/50
Min-Conflicts(Minton, ‘92)
Si sceglie una configurazione iniziale (random)Ripeti: Prendi una variabile xi in conflitto (random) Assegna a xi il valore che minimizza il numero di conflitti Se la configurazione è valida allora RETURN ASSEGNAZIONE,
altrimenti CONTINUE
12
33223
22
22
202
Intelligenza Artificiale - CSP 48/50
Min-Conflicts - vantaggiE’ estremamente efficace per problemi come quello delle n-regine. Risolti problemi di milioni di regine (con solo ~50 iterazioni partendo da assegn. random!). Con algoritmi costruttivi è impossibile.
E’ estremamente utile (ed efficace) in problemi CSP “reali”, come quelli di scheduling:
Perché se c’è una variazione nei vincoli (es: cambio di orario di un professore nel problema del Class Scheduling) non si deve ricominciare da capo.
E’ quindi un sistema che può far fronte ad un ambiente dinamico: online-CSP.
Ha risolto il problema dello scheduling delle osservazioni del Telescopio Hubble.
Può essere usato in forma iterativa o in associazione con algoritmi locali come simulated-annealing
Intelligenza Artificiale - CSP 49/50
Sim-AnnealingL’approccio di riparazione ha due modelli puri opposti:
Hill-climbing: si segue uno schema di costante ascesa. Migliora gli stati ma si ferma nei massimi locali (si può ricominciare da uno stato iniziale diverso: Iterative Hill-Climbing)
Random Walk: è completo, ma non cerca di migliorare gli stati.
Simulate Annealing: generalizzazione che combina l’hill-climbing con il random walk per ottenere completezza ed efficenza:
Invece di fare la migliore scelta se ne fa una random. IF la scelta migliora lo stato attuale allora si accetta. ALTRIMENTI la scelta è accettata con una probabilità < 1 La probabilità è relata al peggioramento prodotto: exp(-/T) è dato dalla differenza di valore degli stati (peggioramento). T è la “temperatura” = se è alta si accettano molti peggioramenti Si tende a far decrescere la temperatura durante la ricerca.
Intelligenza Artificiale - CSP 50/50
Generalizzazione del CSP
Variabili, valori, vincoli (modello o “constraint network”) potrebbero avere pesi diversi:
1) Rilassamento peso vincoli (libertà di violare).2) Rilassamento peso variabili (libertà di non istanziare)3) Rilassamento peso valori (alcuni preferibili).
Questo si presenta quando:
casting di un problema dal mondo reale al dominio dei CSP non vi sono soluzioni con una constraint network hard-valued.
V-CSP: un peso su ogni elemento del modello
Crossword Solving = P-CSP (sottoinsieme di V-CSP)
Intelligenza Artificiale - CSP 51/50
RiassumendoMotivazioni per il framework CSPDefinizione e formalizzazione dei CSPComplessità dei CSPAlgoritmi Costruttivi Backtracking Search MetaEuristiche:
MRV, LCV, Forward checking, consistency search
Backjumping Dynamic Backtracking
Algoritmi Riparativi Minimization Conflicts Simulated Annealing