Problemi con soddisfacimento dei vincoli Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Outline Esempi di CSP Ricerca generale applicata ai CSP Backtracking Controllo in avanti Euristiche per i CSP Slides Intelligenza Artificiale, Vincenzo Cutello
Problemi con soddisfacimento dei vincoli Problema di ricerca standard: lo stato è una “black box” una qualsiasi vecchia struttura dati che supporta verifica dell’obiettivo, valutazione, successore CSP: lo stato è definito da variabili Vi con valori dal dominio Di la verifica dell’obiettivo è un insieme di vincoli specificanti le combinazioni permesse di valori per sottoinsiemi di variabili Slides Intelligenza Artificiale, Vincenzo Cutello
Esempio: 4-regine come CSP Assumiamo una regina in ogni colonna. In quale riga andrà ognuna ? Variabili Q1,Q2,Q3,Q4 Domini Di = {1,2,3,4} Vincoli Qi ≠ Qk (non possono essere nella stessa riga) | Qi - Qk| ≠ |i-k| (o stessa diagonale) Traduciamo ogni vincolo in un insieme di valori permessi per le sue variabili Cioè, i valori per (Q1,Q2) sono (1,3) (1,4) (2,4) (3,1) (4,1) (4,2) Q1 = 1 Q2 = 3 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Grafo dei vincoli CSP binario; ogni vincolo coinvolge al più due variabili Grafo dei vincoli; i nodi sono variabili, gli archi rappresentano i vincoli Q1 Q2 Q3 Q4 Slides Intelligenza Artificiale, Vincenzo Cutello
Esempio: Crittoaritmetica Variabili D E M N O R S Y S E N D Domini + M O R E {0,1,2,3,4,5,6,7,8,9} M O N E Y Vincoli M ≠ 0, S ≠ 0 (vincoli unari) Y = D+E o Y = D+E-10, etc. D ≠ E, D ≠ M, D ≠ N, etc. Slides Intelligenza Artificiale, Vincenzo Cutello
Esempio: Colorazione di mappe Colorare una mappa in maniera tale che non esistano due paesi adiacenti con lo stesso colore Variabili Paesi Ci Domini {Rosso, Blu, Verde} Vincoli C1 ≠ C2, C1 ≠ C5, etc. Grafo dei vincoli: C1 C2 C3 C5 C6 C4 C1 C2 C5 C3 C6 C4 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello CSP nel mondo reale Problemi di assegnamento per esempio, chi insegna questo corso Problemi di orari per esempio, quale corso è offerto, quando e dove ? Problemi di Scheduling Si noti che molti problemi del mondo reale coinvolgono variabili con valori reali Slides Intelligenza Artificiale, Vincenzo Cutello
Applicando la ricerca standard Iniziamo con l’approccio diretto Gli stati sono definiti tramite i valori fin qui assegnati Stato iniziale: Tutte le variabili senza alcun valore Operatori: assegna un valore a una variabile senza valore Verifica dell’obiettivo: tutte le variabili assegnate, nessun vincolo violato Si noti che questo è uguale per tutti i CSP Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Implementazione Lo stato del CSP mantiene traccia di quali variabili hanno finora un valore Ogni variabile ha un dominio e un valore corrente datatype CSP-State components: UNASSIGNED, una lista di variabili ancore senza valore ASSIGNED, una lista di variabili che hanno un valore datatype CSP-Var components: NAME, per scopi di input/output DOMINIO, una lista di possibili valori VALORI, valore corrente (se esiste !) I vincoli possono essere rappresentati esplicitamente come insiemi di valori permessi implicitamente per mezzo di una funzione che verifica il soddisfacimento del vincolo Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca Standard: colorazione di mappe NON ASSEGNATO C1 C2 C3 ASSEGNATO NON ASSEGNATO C2 C3 ASSEGNATO C1 = ROSSO NON ASSEGNATO C1 C3 ASSEGNATO C2 = BLU NON ASSEGNATO C1 C2 ASSEGNATO C3 = VERDE Slides Intelligenza Artificiale, Vincenzo Cutello
Complessità dell’approccio “Dumb” Max profondità dello spazio m = ?? n (numero di variabili) Profondità dello stato soluzione d = ?? n (tutte le variabili assegnate) Algoritmo di ricerca da usare ?? Depth-first Fattore di ramificazione b = ?? i |Di| (in cima all’albero) Questo può essere migliorato sostanzialmente notando: L’ordine di assegnamento è irrilevante così molti percorsi sono equivalenti L’aggiunta di un assegnamento non può correggere un vincolo già violato Slides Intelligenza Artificiale, Vincenzo Cutello
Ricerca con backtracking Usiamo la ricerca depth-first, ma 1) Fissiamo l’ordine di assegnamento, b = |Di| (può essere fatto nella funzione SUCCESSORI) 2) Controllo per le violazioni dei vincoli Il controllo del vincolo violato può essere implementato in due maniere: 1) modificando SUCCESSORI per assegnare solo valori che sono permessi, dati i valori già assegnati 2) controllare che i vincoli siano soddisfatti prima di espandere uno stato La ricerca con backtracking è l’algoritmo di base non informato per i CSP Può risolvere il problema delle n-regine con n ≈ 15 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Controllo in avanti Idea: mantenere traccia dei rimanenti valori legali per le variabili ancora senza valore Terminare la ricerca quando qualche variabile non ha più valori legali Esempio di colorazione di mappe semplificato: C1 ROSSO BLU VERDE C1 C2 C3 C4 C5 C4 C5 C2 C3 Può risolvere il problema delle n-regine fino a n ≈ 30 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello ROSSO BLU VERDE C1 √ C2 Х C3 C4 C5 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello ROSSO BLU VERDE C1 C2 √ C3 Х C4 C5 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello ROSSO BLU VERDE C1 C2 C3 √ C4 Х C5 Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Euristiche per i CSP Più decisioni intelligenti su quali valori scegliere per ogni variabile quali variabili scegliere per l’assegnamento Dati C1 = Rosso, C2 = Verde ?? C3 = Verde: valore meno vincolante C5 : variabile più vincolata Può risolvere il problema delle n-regine fino a n ≈ 1000 C1 C2 C3 C5 C6 C4 Slides Intelligenza Artificiale, Vincenzo Cutello
Algoritmi iterativi per i CSP Hill-climbing, simulated annealing lavorano tipicamente con stati “completi”, cioè, con tutte le variabili assegnate Per applicarli ai CSP: permettere stati con vincoli non soddisfatti operatori che riassegnano i valori alle variabili Selezione della variabile: selezionare in maniera random una qualsiasi variabile con conflitti Euristica min-conflicts: scegliere il valore che vìola il minor numero di conflitti, cioè, hillclimb con h(n) = numero totale di vincoli violati Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Esempio: 4-regine Stati: 4 regine in 4 colonne (44 = 256 stati) Operatori: muovi la regina lungo la colonna Verifica dell’obiettivo: nessuno attacco Valutazione: h(n) = numero di attacchi h = 5 h = 2 h = 0 Slides Intelligenza Artificiale, Vincenzo Cutello
Prestazioni del min-conflicts Dato uno stato iniziale random, può risolvere il problema delle n-regine in al più un tempo costante per n arbitrario con alta probabilità (cioè, n = 10.000.000) Lo stesso sembra essere vero per un qualsiasi CSP generato in maniera random Eccetto in un piccolo range del rapporto numero di vincoli R = ──────────── numero di variabili Tempo di CPU Rapporto critico Slides Intelligenza Artificiale, Vincenzo Cutello
CSP strutturati ad albero Teorema: se il grafo dei vincoli non ha cicli, il CSP può essere risolto in tempo O(n|D|2) Comparato al CSP generale, dove il tempo nel caso peggiore è O(|D|n) Questa proprietà si applica anche ai ragionamenti logici e probabilistici: un importante esempio della relazione tra restrizioni sintattiche e complessità di ragionamento A E B D C F Slides Intelligenza Artificiale, Vincenzo Cutello
Algoritmi per i CSP strutturati ad alberi Il passo base è chiamato filtering FILTER (Vi, Vk) rimuovi i valori di Vi che sono inconsistenti con tutti i valori di Vk Esempio di filtering Coppie permesse <1,1> <3,2> <3,3> Vi Vk Rimuovi 2 dal dominio di Vi Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Algoritmi (cont.) A E B D C F 1) Ordina nodi con BFS partendo da una foglia qualunque A B C D E F 2) Per k = n fino a 1, applica FILTER(Vi, Vk) dove Vi è un genitore di Vk 3) Per k = 1 fino a n, scegli un valore legale per Vk dato il valore del genitore Slides Intelligenza Artificiale, Vincenzo Cutello
Slides Intelligenza Artificiale, Vincenzo Cutello Riassunto I CSP sono un genere speciale di problema: stati definiti da valori di un insieme fissato di variabili verifica dell’obiettivo definito da vincoli sui valori delle variabili Backtracking = ricerca depth-first con Ordine fissato delle variabili Solo successori legali Il controllo in avanti previene assegnamenti che portano al fallimento Euristiche per l’ordine delle variabili e la selezione dei valori aiutano significativamente Il min-conflicts iterativo è solitamente efficace in pratica I CSP strutturati ad albero possono sempre essere risolti efficacemente Slides Intelligenza Artificiale, Vincenzo Cutello