|
CSP: L’ESEMPIO DELLE N-REGINE.
Il Constraint Satisfaction Problem (CSP) è un paradigma semplice
e potente, con il quale possono essere formulati numerosi problemi. A livello
informale, il concetto fondamentale del ragionamento basato sui vincoli
è quello di constraint network, definito da un insieme di variabili,
un dominio di valori per ogni variabile ed un insieme di vincoli tra le
variabili. Risolvere un constraint network significa trovare un assegnamento
di valori per ogni variabile, in modo tale che tutti i vincoli siano soddisfatti.
Il problema delle n-regine può essere formulato in CSP:
In figura sono visualizzate due istanze del problema delle 4-regine;
con la lettera Q sono indicate le regine disposte sulla scacchiera, mentre
le posizioni in grigio sono quelle in cui non possono essere poste altre
regine perché potrebbero venire attaccate dalle regine già
disposte. Ad esempio {(x1, 4)} indica che nella colonna 1 è
stata messa la regina alla riga 4, e questo implica che saranno vietate
per le altre regine le posizioni {(x2, 4), (x3, 4),
(x4, 4)} (perché sono sulla stessa riga) e {(x2,
3), (x3, 2), (x4, 1)} (perché sono sulla stessa
diagonale): le caselle colorate indicano proprio le posizioni vietate.
Nell’istanza di destra la tupla {(x1, 2), (x2, 4),
(x3, 1), (x4, 3)} (o, più semplicemente (2,4,1,3))
è una soluzione completa: è facile verificare che nessuna
regina può essere attaccata dalle altre.
Come viene applicato il
backtracking al problema delle n-regine così formulato?