Gennaio – Aprile 2007
Intelligenza Artificiale
marco ernandes
email: [email protected]
Constraint Satisfaction
Intelligenza Artificiale - CSP
1/52
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), 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
2/52
CSP vs. PS
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
Intelligenza Artificiale - CSP
3/52
Esempi di CSP
+
otto
due
dieci
Intelligenza Artificiale - CSP
1
3
2
I N
F U
5
T
aula
4
N
O
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
ora
4/52
CSP
(problems & programming)
CSP
CS-Problems
Tipologia di problemi (CS)
CS-Programming
Metodo per formalizzare e
attaccare un problema CS.
Intelligenza Artificiale - CSP
La differenza tra PS e CSP
può essere sfumata: un CSP
può al limite essere
formalizzato come PS e
attaccato di conseguenza.
5/52
Definizione di CSP
Un problema di CSP (soddisfacimento vincoli) è
definito da:




un set di variabili: X1, X2,…, Xn
un set di vincoli (constraints): C1, C2,…, Cm
ogni variabile Xi è associata ad un dominio Di di
valori 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
6/52
CSP es: 8-Regine (I)
Variabili:

64  Xij con i = da 1 a 8, j = da 1 a 8
Dominio delle variabili

D = {1,0}
xi,1 xi,2 xi,3 xi,4 xi,5 xi,6 xi,7 xi,8
x1,j
x2,j
x3,j
x4,j
x5,j
x6,j
x7,j
x8,j
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 ih ()
da 1 a 8, h  0
Intelligenza Artificiale - CSP
7/52
CSP es: 8-Regine (II)
Variabili:

8  Xi con i = da 1 a 8
Dominio delle variabili

D = {1,2,…,8}
D=1 2 3 4 5 6 7 8
x1
x2
x3
x4
x5
x6
x7
x8
Vincoli:


Xi = k SE Xj  k per tutti j da 1 a 8, j  i ()
Xi = k SE Xih  kh per tutti ih da 1 a 8, h  0
()
Intelligenza Artificiale - CSP
8/52
CSP es: Colorazione Mappe
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)}
Intelligenza Artificiale - CSP
9/52
CSP es: Criptoaritmetica
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
two
+ two
four
10/52
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
11/52
CSP e vincoli
Constraint 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
12/52
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
13/52
Intro al CS-Programming
Il 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
14/52
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
15/52
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
Le soluzioni proposte non violano i vincoli
… e svantaggi  Grosso problema: le grandi dimensioni che può
assumere Di che definisce il branching factor
Intelligenza Artificiale - CSP
16/52
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.
2.
3.
assignment = {};
STACK.insert(assignment);
do
if (STACK.isEmpty()) return failure;
assignment = STACK.remove();
if (complete(assignment)) return assignment;
STACK.insertAll (expand(assignment));
while (true);
Intelligenza Artificiale - CSP
17/52
Backtracking - simulazione
Empty assignment
1st variable
2nd variable
3rd variable
Assignment = {(
{}X1=v11),(
=v11)} X2=v22)}
=v21),(X3=v32)}
=v21)}
=v31)}
Intelligenza Artificiale - CSP
18/52
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
19/52
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.
2.
3.
Quale variabile scegliere per l’espansione?
In che ordine provare i valori?
E’ possibile scoprire in anticipo dei fallimenti?
Intelligenza Artificiale - CSP
20/52
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
21/52
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
22/52
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.
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
23/52
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 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
24/52
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
25/52
Forward Checking
(es: colorazione grafo)
NT
WA
Q
NSW
SA
Nell’esempio non
vengono adottate
le altre euristiche
T
V
WA
NT
Q
NSW
V
SA
T
RGB
RGB
RGB
RGB
RGB
RGB
RGB
Intelligenza Artificiale - CSP
26/52
Forward Checking
(es: colorazione grafo)
NT
WA
Q
NSW
SA
Nell’esempio non
vengono adottate
le altre euristiche
T
V
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
27/52
Forward Checking
(es: colorazione grafo)
NT
WA
Q
NSW
SA
Nell’esempio non
vengono adottate
le altre euristiche
T
V
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
28/52
Forward Checking
(es: colorazione grafo)
NT
WA
Q
NSW
SA
Nell’esempio non
vengono adottate
le altre euristiche
T
V
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
29/52
Forward Checking
(es: colorazione grafo)
NT
WA
Q
NSW
SA
Nell’esempio non
vengono adottate
le altre euristiche
T
V
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
30/52
Forward Checking
(es: colorazione grafo)
NT
WA
Q
NSW
SA
Nell’esempio non
vengono adottate
le altre euristiche
T
V
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
31/52
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
32/52
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
33/52
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
34/52
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
35/52
AC-3
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);
REMOVE-INC-VALUES(Xi,Xj)
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;
Intelligenza Artificiale - CSP
36/52
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 Vk 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
37/52
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
38/52
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.
x1
x2
x3
x4
x5
x6
x7
x8
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).
1 2 3 4 5 6 7 8
Intelligenza Artificiale - CSP
39/52
Conflict Set
Si 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[]
{}
{1} 1 1
{1,2} 1 2 1
{1,2,3} 1
2
{1,2,3,4} 1 4 2
{1,2,3,4} 1 3 2
x1
x2
x3
2
X4
1 2 3
x5
1 2 3
4 3 1 2 3 x6
x7
x8
1
3
5
2
4
Directed-conflict
Backtracking
Ha il vantaggio
di accelerare il
processo di
backtracking
1 2 3 4 5 6 7 8
Intelligenza Artificiale - CSP
40/52
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
X1 = 1
X2 = 3
X2 = 3
X3 = 5
X3 = 5
X4 = 2
X5 = 4
Stabilire la variabile
“effettivamente”
causa del dead-end
non è sempre ovvio
X5 = 4
Intelligenza Artificiale - CSP
41/52
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
LA
AT
NUT
IS
NUL
1
I 2N
3
4
5
1A
I 2N
3
U
5
L
1
2D
Intelligenza Artificiale - CSP
I 2N
3
F U
5
L
1
4
1D
I 2N
3
F U 4N
5
L
1
4
2A
I 2N
3
F U 4N
5
T O
1
5A
42/52
Dynamic Backtracking
(es: crossword generation)
(Ginsberg, ’90) ha usato:

euristica MRV (cheapest-first):
x ! argmin # Di

euristica LCV nella formula:
w ! argmax
i = 1" N
w ! Dx
%
# cons (D y, w)
y ! cr oss(x)

min-look = 10 sul backtracking

Schema di hashing (degli ingressi del dizionario) per
calcolare rapidamente il dominio (matching dei pattern)
A
B
C
…
1° position
2° position
3° position
4° position
11110000000…
00000001100…
00000000011…
00100010100…
10001100000…
00010001001…
01001000001…
…
…
…
…
…
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
43/52
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
44/52
(Harvey, Ginsberg ‘95)
Limited Discrepancy Search
LDS è un algoritmo iterativo.
Quick Time™e u n
de compr ess ore T IF F (Non c ompr esso )
so no nec essa ri per v is ualizzar e que st'immag in e.
Quic kTime™ e un
dec ompres sore TIFF (Non c ompres so)
s ono nec es sari per visualiz z are ques t'immagine.
QuickTime™ e un
decompressore TIFF (Non compresso)
sono necessari per visualizzare quest'immagine.
QuickTime™ e un
decompressore TIFF (Non compresso)
sono necessari per visualizzare quest'immagine.
Euristica = “go left”
Intelligenza Artificiale - CSP
Ad ogni iterazione viene
associato un numero
massimo di discrepanze d.
Se ad una iterazione non è
stato possibile trovare una
soluzione, la soglia di
discrepanze d viene
aumentata e si riparte.
Ad ogni iterazione si
effettuano tutte le ricerche con
d discrepanze, iniziando con
quelle che hanno le
discrepanze più superficiali.
45/52
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/52
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. Si tratta infatti
di algoritmi “locali”.
Intelligenza Artificiale - CSP
47/52
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
1
2
3
3
2
2
3
Intelligenza Artificiale - CSP
2
0
2
2
2
2
2
48/52
Min-Conflicts - vantaggi
E’ 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/52
Simulated Annealing
L’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/52
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/52
Riassumendo
Motivazioni per il framework CSP
Definizione e formalizzazione dei CSP
Complessità dei CSP
Algoritmi Costruttivi


Backtracking Search
MetaEuristiche:





MRV, LCV
Forward checking, consistency search
Backjumping
Dynamic Backtracking
Discrepancy Search: LDS
Algoritmi Riparativi


Minimization Conflicts
Simulated Annealing
Intelligenza Artificiale - CSP
52/52