Upload
croccifixio-pandolfi
View
218
Download
1
Embed Size (px)
Citation preview
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
11
Problemi con soddisfacimento Problemi con soddisfacimento dei vincolidei vincoli
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
22
OutlineOutline
Esempi di CSPEsempi di CSP Ricerca generale applicata ai CSPRicerca generale applicata ai CSP BacktrackingBacktracking Controllo in avantiControllo in avanti Euristiche per i CSPEuristiche per i CSP
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
33
Problemi con soddisfacimento dei Problemi con soddisfacimento dei vincolivincoli
Problema di ricerca standard:Problema di ricerca standard:lo lo statostato è una “black box” è una “black box”una qualsiasi vecchia struttura dati che supporta una qualsiasi vecchia struttura dati che supporta verifica dell’obiettivo, valutazione, successoreverifica dell’obiettivo, valutazione, successore
CSP:CSP:
lolo stato stato è definito da è definito da variabili Vvariabili Vii con valori dal con valori dal dominio dominio DDii
la la verifica dell’obiettivoverifica dell’obiettivo è un insieme di è un insieme di vincolivincoli specificanti le combinazioni permesse di valori per specificanti le combinazioni permesse di valori per sottoinsiemi di variabili sottoinsiemi di variabili
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
44
Esempio: 4-regine come CSPEsempio: 4-regine come CSPAssumiamo una regina in ogni colonna. In quale riga andrà Assumiamo una regina in ogni colonna. In quale riga andrà
ognuna ?ognuna ?VariabiliVariabili QQ11,Q,Q22,Q,Q33,Q,Q44
DominiDomini DDii = = {1,2,3,4}{1,2,3,4}VincoliVincoli
QQii ≠ ≠ QQkk (non possono essere (non possono essere nella stessa riga)nella stessa riga)
| Q| Qii - - QQkk| | ≠ |i-k|≠ |i-k| (o stessa diagonale) (o stessa diagonale)
Traduciamo ogni vincolo in un insieme di valori permessi per Traduciamo ogni vincolo in un insieme di valori permessi per le sue variabili le sue variabili Cioè, i valori per Cioè, i valori per (Q(Q11,Q,Q22)) sono sono (1,3) (1,4) (2,4) (3,1) (4,1) (4,2)(1,3) (1,4) (2,4) (3,1) (4,1) (4,2)
Q1 = 1 Q2 = 3
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
55
Grafo dei vincoliGrafo dei vincoliCSP binarioCSP binario; ogni vincolo coinvolge al più due ; ogni vincolo coinvolge al più due
variabilivariabili
Grafo dei vincoliGrafo dei vincoli; i nodi sono variabili, gli archi ; i nodi sono variabili, gli archi
rappresentano i vincolirappresentano i vincoli
Q1 Q2
Q3 Q4
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
66
Esempio: CrittoaritmeticaEsempio: Crittoaritmetica
VariabiliVariabiliD E M N O R S Y S E N DD E M N O R S Y S E N D
DominiDomini + M O R E+ M O R E{0,1,2,3,4,5,6,7,8,9} M O N E Y {0,1,2,3,4,5,6,7,8,9} M O N E Y
VincoliVincoliM ≠ 0, S ≠ 0 (vincoli unari)M ≠ 0, S ≠ 0 (vincoli unari)Y = D+E o Y = D+E-10, etc.Y = D+E o Y = D+E-10, etc.
D ≠ E, D ≠ M, D ≠ N, etc.D ≠ E, D ≠ M, D ≠ N, etc.
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
77
Esempio: Colorazione di mappeEsempio: Colorazione di mappeColorare una mappa in maniera Colorare una mappa in maniera tale che non esistano due paesi tale che non esistano due paesi adiacenti con lo stesso coloreadiacenti con lo stesso coloreVariabili Variabili
Paesi CPaesi Cii
DominiDomini{Rosso, Blu, Verde}{Rosso, Blu, Verde}
VincoliVincoli
CC11 ≠ C≠ C22, C, C1 1 ≠ C≠ C55, etc., etc.
Grafo dei vincoli:Grafo dei vincoli:
C1 C2
C3 C6
C4
C5
C6 C4
C2
C1
C5
C3
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
88
CSP nel mondo realeCSP nel mondo reale Problemi di assegnamentoProblemi di assegnamento
– per esempio, chi insegna questo corsoper esempio, chi insegna questo corso
Problemi di orariProblemi di orari– per esempio, quale corso è offerto, quando e per esempio, quale corso è offerto, quando e
dove ?dove ?
Problemi di SchedulingProblemi di Scheduling
Si noti che molti problemi del mondo realeSi noti che molti problemi del mondo reale
coinvolgono variabili con valori reali coinvolgono variabili con valori reali
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
99
Applicando la ricerca standardApplicando la ricerca standardIniziamo con l’approccio direttoIniziamo con l’approccio diretto
Gli stati sono definiti tramite i valori fin qui Gli stati sono definiti tramite i valori fin qui assegnatiassegnatiStato iniziale: Tutte le variabili senza alcun valoreStato iniziale: Tutte le variabili senza alcun valoreOperatori: assegna un valore a una variabile senza Operatori: assegna un valore a una variabile senza
valorevaloreVerifica dell’obiettivo: tutte le variabili assegnate, Verifica dell’obiettivo: tutte le variabili assegnate,
nessun vincolo violatonessun vincolo violato
Si noti che questo è uguale per tutti i CSPSi noti che questo è uguale per tutti i CSP
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1010
ImplementazioneImplementazioneLo stato del CSP mantiene traccia di quali variabili hanno finora un valoreLo stato del CSP mantiene traccia di quali variabili hanno finora un valoreOgni variabile ha un dominio e un valore correnteOgni variabile ha un dominio e un valore corrente
datatype CSP-Statedatatype CSP-State
components: UNASSIGNED, una lista di variabili ancore senza valorecomponents: UNASSIGNED, una lista di variabili ancore senza valore
ASSIGNED, una lista di variabili che hanno un valoreASSIGNED, una lista di variabili che hanno un valore
datatype CSP-Var datatype CSP-Var
components: NAME, per scopi di input/outputcomponents: NAME, per scopi di input/output
DOMINIO, una lista di possibili valoriDOMINIO, una lista di possibili valori
VALORI, valore corrente (se esiste !)VALORI, valore corrente (se esiste !)
I vincoli possono essere rappresentati esplicitamente come insiemi di valori permessiimplicitamente per mezzo di una funzione che verifica il
soddisfacimento del vincolo
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1111
Ricerca Standard: colorazione di mappeRicerca Standard: colorazione di mappe
NON ASSEGNATO C1 C2 C3
ASSEGNATO
NON ASSEGNATO C2 C3
ASSEGNATOC1 = ROSSO
NON ASSEGNATO C1 C3
ASSEGNATOC2 = BLU
NON ASSEGNATO C1 C2
ASSEGNATOC3 = VERDE
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1212
Complessità dell’approccio “Dumb”Complessità dell’approccio “Dumb”
Max profondità dello spazio m = ?? n (numero di variabili)Max profondità dello spazio m = ?? n (numero di variabili)
Profondità dello stato soluzione d = ?? n (tutte le variabili Profondità dello stato soluzione d = ?? n (tutte le variabili assegnate)assegnate)
Algoritmo di ricerca da usare ?? Depth-firstAlgoritmo di ricerca da usare ?? Depth-first
Fattore di ramificazione b = ?? Fattore di ramificazione b = ?? i i |D|Dii| (in cima all’albero)| (in cima all’albero)
Questo può essere migliorato sostanzialmente notando:Questo può essere migliorato sostanzialmente notando: L’ordine di assegnamento è irrilevante così molti percorsi L’ordine di assegnamento è irrilevante così molti percorsi
sono equivalentisono equivalenti L’aggiunta di un assegnamento non può correggere un L’aggiunta di un assegnamento non può correggere un
vincolo già violatovincolo già violato
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1313
Ricerca con backtrackingRicerca con backtrackingUsiamo la ricerca depth-first, maUsiamo la ricerca depth-first, ma1) Fissiamo l’ordine di assegnamento, 1) Fissiamo l’ordine di assegnamento, b = |D b = |Dii| (può essere | (può essere
fatto nella funzione SUCCESSORI)fatto nella funzione SUCCESSORI)2) Controllo per le violazioni dei vincoli2) Controllo per le violazioni dei vincoliIl controllo del vincolo violato può essere implementato in due Il controllo del vincolo violato può essere implementato in due maniere:maniere:
1) modificando SUCCESSORI per assegnare solo valori 1) modificando SUCCESSORI per assegnare solo valori che sono permessi, dati i valori già assegnatiche sono permessi, dati i valori già assegnati
2) controllare che i vincoli siano soddisfatti prima di 2) controllare che i vincoli siano soddisfatti prima di espandere uno statoespandere uno statoLa ricerca con backtracking è l’algoritmo di base non La ricerca con backtracking è l’algoritmo di base non informato per i CSPinformato per i CSPPuò risolvere il problema delle n-regine con n Può risolvere il problema delle n-regine con n ≈ 15≈ 15
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1414
Controllo in avantiControllo in avantiIdea: mantenere traccia dei rimanenti valori legali per le variabili ancora Idea: mantenere traccia dei rimanenti valori legali per le variabili ancora senza valore senza valore Terminare la ricerca quando qualche variabile non ha più valori legaliTerminare la ricerca quando qualche variabile non ha più valori legaliEsempio di colorazione di mappe semplificato:Esempio di colorazione di mappe semplificato:
Può risolvere il problema delle n-regine fino a n ≈ 30
ROSSOROSSO BLUBLU VERDEVERDE
CC11
CC22
CC33
CC44
CC55
C1
C2
C3
C4
C5
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1515
ROSSOROSSO BLUBLU VERDEVERDE
CC11 √√
CC22 ХХ
CC33
CC44 ХХ
CC55 ХХ
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1616
ROSSOROSSO BLUBLU VERDEVERDE
CC11
CC22 √√
CC33 ХХ
CC44 ХХ
CC55 ХХ
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1717
ROSSOROSSO BLUBLU VERDEVERDE
CC11
CC22
CC33 √√
CC44 ХХ
CC55 ХХ
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1818
Euristiche per i CSPEuristiche per i CSPPiù decisioni intelligenti suPiù decisioni intelligenti su
quali valori scegliere per ogni variabilequali valori scegliere per ogni variabilequali variabili scegliere per l’assegnamento quali variabili scegliere per l’assegnamento
Dati Dati CC1 1 = = RossoRosso, , CC2 2 = = VerdeVerde ?? ?? CC3 3 = = VerdeVerde: : valore meno vincolantevalore meno vincolante
Dati Dati CC1 1 = = RossoRosso, , CC2 2 = = VerdeVerde ?? ?? CC5 5 : : variabile più vincolatavariabile più vincolata
Può risolvere il problema dellen-regine fino a n ≈ 1000
C6 C4
C2
C1
C5
C3
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
1919
Algoritmi iterativi per i CSPAlgoritmi iterativi per i CSP
Hill-climbing, simulated annealing lavorano tipicamente con Hill-climbing, simulated annealing lavorano tipicamente con stati “completi”, cioè, con tutte le variabili assegnatestati “completi”, cioè, con tutte le variabili assegnatePer applicarli ai CSP:Per applicarli ai CSP:
permettere stati con vincoli non soddisfattipermettere stati con vincoli non soddisfattioperatori che riassegnano i valori alle variabilioperatori che riassegnano i valori alle variabili
Selezione della variabile: selezionare in maniera random una Selezione della variabile: selezionare in maniera random una qualsiasi variabile con conflittiqualsiasi variabile con conflittiEuristica Euristica min-conflictsmin-conflicts: :
scegliere il valore che vìola il minor numero di conflitti, cioè, scegliere il valore che vìola il minor numero di conflitti, cioè, hillclimb con h(n) = numero totale di vincoli violatihillclimb con h(n) = numero totale di vincoli violati
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
2020
Esempio: 4-regineEsempio: 4-regineStati: 4 regine in 4 colonne (4Stati: 4 regine in 4 colonne (444 = 256 stati) = 256 stati)Operatori: muovi la regina lungo la colonnaOperatori: muovi la regina lungo la colonnaVerifica dell’obiettivo: nessuno attaccoVerifica dell’obiettivo: nessuno attaccoValutazione: h(n) = numero di attacchiValutazione: h(n) = numero di attacchi
h = 5 h = 0h = 2
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
2121
Prestazioni del min-conflictsPrestazioni del min-conflictsDato uno stato iniziale random, può risolvere il problema delle Dato uno stato iniziale random, può risolvere il problema delle
nn-regine in al più un tempo costante per -regine in al più un tempo costante per nn arbitrario con arbitrario con alta probabilità (cioè, alta probabilità (cioè, nn = 10.000.000) = 10.000.000)
Lo stesso sembra essere vero per un qualsiasi CSP generato Lo stesso sembra essere vero per un qualsiasi CSP generato in maniera randomin maniera random
Eccetto in un piccolo range del rapportoEccetto in un piccolo range del rapporto numero di vincolinumero di vincoliR = R = ──────────────────────── numero di variabilinumero di variabili
Rapporto critico
Tempo di CPU
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
2222
CSP strutturati ad alberoCSP strutturati ad albero
Teorema: se il grafo dei vincoli non ha cicli, il CSP può essere risolto in Teorema: se il grafo dei vincoli non ha cicli, il CSP può essere risolto in tempo tempo O(n|D|O(n|D|22)) Comparato al CSP generale, dove il tempo nel caso peggiore è Comparato al CSP generale, dove il tempo nel caso peggiore è O(|D|O(|D|nn))Questa proprietà si applica anche ai ragionamenti logici e probabilistici:Questa proprietà si applica anche ai ragionamenti logici e probabilistici:un importante esempio della relazione tra restrizioni sintattiche e un importante esempio della relazione tra restrizioni sintattiche e complessità di ragionamentocomplessità di ragionamento
A
C
B D
F
E
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
2323
Algoritmi per i CSP strutturati ad Algoritmi per i CSP strutturati ad alberialberi
Il passo base è chiamato Il passo base è chiamato filtering filtering
FILTER (VFILTER (Vii, V, Vkk))
rimuovi i valori di Vrimuovi i valori di Vii che sono inconsistenti che sono inconsistenti
con tutti i valori di Vcon tutti i valori di Vkk
Esempio di filtering Esempio di filtering
Vi Vk
Coppie permesse<1,1><3,2><3,3>
Rimuovi 2 daldominio di Vi
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
2424
Algoritmi (cont.)Algoritmi (cont.)
2) Per k = n fino a 1, applica FILTER(V2) Per k = n fino a 1, applica FILTER(V ii, V, Vkk) dove V) dove Vii è un è un
genitore di Vgenitore di Vkk
3) Per k = 1 fino a n, scegli un valore legale per V3) Per k = 1 fino a n, scegli un valore legale per Vkk dato il dato il
valore del genitorevalore del genitore
A
C
B D
F
E
A CB D FE
1) Ordina nodi con BFS partendo da una foglia qualunqueOrdina nodi con BFS partendo da una foglia qualunque
Slides Intelligenza Artificiale, VincenSlides Intelligenza Artificiale, Vincenzo Cutellozo Cutello
2525
RiassuntoRiassuntoI CSP sono un genere speciale di problema:I CSP sono un genere speciale di problema:
stati definiti da valori di un insieme fissato di variabilistati definiti da valori di un insieme fissato di variabiliverifica dell’obiettivo definito da verifica dell’obiettivo definito da vincolivincoli sui valori delle variabili sui valori delle variabili
Backtracking = ricerca depth-first conBacktracking = ricerca depth-first con Ordine fissato delle variabiliOrdine fissato delle variabili Solo successori legaliSolo successori legali
Il controllo in avanti previene assegnamenti che portano al fallimentoIl controllo in avanti previene assegnamenti che portano al fallimento
Euristiche per l’ordine delle variabili e la selezione dei valori aiutano Euristiche per l’ordine delle variabili e la selezione dei valori aiutano significativamentesignificativamente
Il min-conflicts iterativo è Il min-conflicts iterativo è solitamentesolitamente efficace in pratica efficace in pratica
I CSP strutturati ad albero possono I CSP strutturati ad albero possono sempresempre essere risolti efficacemente essere risolti efficacemente