Algoritmi di ricerca - L.Int.Ar

annuncio pubblicitario
Intelligenza Artificiale Elementi 2004 – 2005
Università degli Studi di Milano Bicocca
Algoritmi di ricerca
Matteo Palmonari
[email protected]
Outline
1. Problemi come spazio delle soluzioni
•
Alcuni esempi di problemi
•
Stati e transizioni
•
Rappresentazione dello spazio degli stati con grafi
•
Alberi di ricerca
2. Algoritmo generale di ricerca e ricerca non
informata
•
Algoritmo generale di ricerca
•
Algoritmi di ricerca non informata: deep-first, breat-first, iterative
deepening (IDA).
•
Accenni a problemi di complessità
3. Euristiche e ricerca informata
•
Il concetto di euristica
•
Ricerca best-first: ricerca golosa e A*
•
IDA*
Risolvere problemi...
problemi
PROBLEM SOLVING
Capacità di risolvere problemi
Un fattore deve
attraversare un fiume
portando lupo, capra
e cavolo
con una barca a due
posti. Non possono
stare soli lupo con
capra o
capra con cavoli.
Quale sequenza per
trasbordare tutti sani
e salvi?
conosenza simbolica
incerta
conosenza simbolica abilità
linguistica
apprendimento
I – Problemi come spazio delle
soluzioni
Outline
1. Problemi come spazio delle soluzioni
•
Alcuni esempi di problemi
•
Stati e transizioni
•
Rappresentazione dello spazio degli stati con grafi
•
Alberi di ricerca
2. Algoritmo generale di ricerca e ricerca non
informata
•
Algoritmo generale di ricerca
•
Algoritmi di ricerca non informata: deep-first, breat-first, iterative
deepening (IDA).
•
Accenni a problemi di complessità
3. Euristiche e ricerca informata
•
Il concetto di euristica
•
Ricerca best-first: ricerca golosa e A*
•
IDA*
Esempio di soluzione di problemi (1)
Un fattore deve attraversare un fiume portando lupo, capra e cavolo
con una barca a due posti. Non possono stare soli lupo con capra o
capra con cavoli. Quale sequenza per trasbordare tutti sani e salvi?
[Bechet de Merizac, Lione 1613]
F
L
Cp Cv
F
L Cp Cv
stato
stato
Transizione tra i due stati in seguito ad un’azione
Rappresentazione: specifica ciò che è vero di una situazione e
omette ciò che non è vero (ad esempio, non c’è un ponte più avanti
sul fiume). Astrarre caratteristiche rilevanti
Esempio di soluzione di problemi (2)
Un contenitore parzialmente riempito di acqua contiene un litro
di una soluzione alcohol-acqua al 90%. Quanta acqua deve
essere aggiunta per diluire la soluzione all’80% di alcohol?
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
A1 + dA = A2
W1 + dW = W2
L1 + dL = L2
A1 + W1 = L1
A2 + W 2 = L2
dA + d W = dL
dA = 0
A1 = 0.9 * L1
A2 = 0.8 * L2
L1 = 1
Trovare dW:
(a): (10) in (8)
(b): (a) + (7) in (1)
(c): (b) in (9)
A1 = 0.9
A2 = 0.9
L2 = 0.9
(d): (c) e (10) in (3)
0.8
0.9
dL = 0.8 - 1
(e): (d) e (7) in (6)
dW = 0.9 - 1
0.8
Rappresentazione: solo (8), (9) e (10) sono esplicite, le altre
implicite (leggi di conservazione: conoscenza di senso comune).
Ricerca: ci sono altre 21 sequenze di soluzione (da 5 a 7 passi).
Non determinismo: gli operatori (di trasformazione delle equazioni)
dicono cosa si può fare, non cosa si deve fare e in che ordine.
Cammino minimo
Qual’è la strada più breve per raggiungere Bucarest partendo
da Oradea?
• “...a partire da X (Oradea)”: dove mi trovo?
• “...per raggiungere Y (Bucarest)”: dove devo andare?
stato
transizione
stato
Tipi di problemi principali
Di cosa sono a conoscenza?
Ho conoscenza del mio stato interno?
Ho conoscenza dell’effetto delle mie azioni?
Problema a stati singoli:
Ho percezione dello stato corrente e di quello prodotto da ogni
singola azione
Ogni azione da uno stato a un’altro
Problemi a stato multiplo:
• non ho percezione (certa) dello stato in cui mi trovo.
Devo
ragionare sull’insieme di stati a cui ogni azione potrebbe condurmi.
Ogni azione da un insieme di stati a un insieme di stati
• non so con precisione che stato produce ogni azione.
Ogni azione da uno stato a un insieme di stati
Transizioni su insiemi di stati
Problemi di contingenza:
Capacità di rilevamento che dipende dalla fase di esecuzione. Ambieti
dinamici
Problemi ben definiti
• Problema un insieme di informazioni
• Soluzione = ricerca della soluzione + esecuzione
• A noi interessa soprattutto la ricerca di una soluzione:
• Input: Problema
• Output: Soluzione
• Questo output dovrà essere tale da poter essere passato
come input nell’eventuale fase di esecuzione.
• La definizione del problema è fondamentale perchè
la sua soluzione possa essere cercata in modo
algoritmico!
• Astrazione: estrarre le caratteristiche rilevanti
Problemi a stato singolo
• Formulazione:
individuare gli aspetti rilevanti e il grado di dettaglio
• specificare lo spazio degli stati
• stato iniziale
• stato/i finale/i (esplicito o con test obiettivo)
• azioni (transizioni/operatori/mosse) che conducono da uno
stato all’altro
• specificare il costo di ogni azione
• Risoluzione:
trovare un cammino dal costo ottimale dallo stato iniziale allo stato
finale
• Un cammino è una sequenza di azioni
• una soluzione è un cammino dallo stato iniziale allo stato finale
• il costo cammino è la somma dei costi delle azioni componenti
• costo totale = costo della soluzione + costo della ricerca
Problemi a stato multiplo
Nei problemi a stato multiplo:
• Il punto di partenza è un insieme di stati iniziali.
• Per ciascuna azione gli operatori specificano un’insieme Y di
stati raggiungibili a partire da un insieme X. Gli operatori
sono funzioni da insiemi di stati ad altri insiemi.
[Y è l’unione degli stati raggiugibili da ciascuno stato elemento di X]
• Il cammino collega insiemi di stati
In sostanza si tratta di raggiungere una soluzione in
condizione di incertezza rispetto allo stato iniziale.
Problema a stato singolo
FILETTO o TRIS (TIC-TAC-TOE)
Spazio degli stati
Vi sono:
9 prime mosse
8 risposte a ognuna
di esse
7 risposte a ognuna
di esse
…..
In totale:
9x8x7x…x1=
9! = 362.880
Gioco dell’8
E' più semplice muovere lo 'spazio vuoto'. Quattro possibili mosse:
• muovi lo spazio verso l'alto (UP) muovi lo spazio verso il basso (DOWN)
• muovi lo spazio a destra (RIGHT)
• muovi lo spazio a sinistra (LEFT)
UP
1
4
3
7
1
6
5
8
2
Esercizio: GIOCO
DELL’8 in prolog
(rappresentazione stati
e azioni)
LEFT
DOWN
RIGHT
1
2
3
1
4
3
1
4
3
1
4
3
7
4
6
8
7
6
7
8
6
7
6
4
5
8
2
5
8
2
5
6
2
5
8
2
LEFT
RIGHT
UP
DOWN
LEFT
RIGHT
UP
DOWN
1
1
3
1
3
3
1
4
3
1
4
3
1
4
3
1
4
3
1
4
3
1
4
3
7
4
6
7
4
6
1
7
6
5
7
6
7
8
6
7
8
6
7
6
3
7
6
2
5
8
2
5
8
2
5
8
2
7
8
2
5
5
2
5
2
2
5
8
2
5
8
2
Risolvere problemi...
problemi
Rappresentazione
del problema
“ragionamento”:
sfruttare la
rappresentazione
per trovare la
soluzione
PROBLEM SOLVING
Capacità di risolvere problemi
conosenza simbolica
incerta
conosenza simbolica abilità
linguistica
apprendimento
Definizione dello spazio
degli stati
Costruzione della ricerca nello
spazio degli stati:
Albero di ricerca
Rappresentazione dello spazio degli stati con grafi
Lo spazio del problema è rappresentato da un grafo.
Uno spazio degli stati è una quadrupla < N, A, I, F >:
N = insieme di nodi (non necessariamente finito)
A = insieme di archi (connettono coppie di nodi)
I ⊆ N nodi iniziali (I ≠Ø )
F ⊆ N nodi finali (F≠Ø )
•
•
•
•
•
•
I nodi rappresentano gli stati, e gli archi le transizioni del problema
Una sequenza di nodi [N1,N2,N3 ....,Nn] in cui ogni N j -1,Nj (1< j ≤ n) è un arco, è detto un cammino di
lunghezza n. Se N1=Nn il cammino è detto ciclo
dato un nodo Ni,
• ogni nodo NJ , con j < i è detto antenato di Ni
• ogni nodo NJ , con I < j è detto discendente di Ni
• il nodo Ni -1 è detto genitore
• il nodo Ni +1 è detto figlio
Un nodo Ni è detto radice se non ha genitori
è detto foglia se non ha figli
Il grafo è detto
DAG (Directed Acyclic Graph) se non contiene cicli
albero se ogni nodo ha al massimo un genitore
Un cammino è detto cammino soluzione se il primo nodo è un nodo iniziale e l'ultimo è un nodo finale
Obiettivo della ricerca è trovare attraverso lo spazio degli stati un cammino (o più cammini) soluzione
Esempi di grafi
D
C
A
B
F
E
G
H
Alberi di ricerca nello spazio degli stati
Processo di ricerca
come costruzione di un
albero di ricerca
n1
n0
n2
p=0
n3
n4
n11 n12 n13 n14
Parametri di struttura:
profondità p
fattore di ramificazione r
nell'esempio : p = 2 , r = 4
Lo spazio di ricerca non è dato (memorizzato) in anticipo,
ma si costruisce passo per passo mediante regole
p=1
p=2
I nodi degli alberi di ricerca
I nodi sono strutture di dati.
Un nodo n è una n-upla {s, nGen, o, p, c}
• s: stato a cui corrisponde il nodo
• nGen: nodo genitore
• o: operatore da cui ottenuto n
• p: profondità del nodo
• c: costo cammino da stato iniziale
(Russel Norvig)
I nodi non coincidono con gli stati! (Due nodi diversi possono corrispondere a
medesimi stati a cui si è arrivati da differenti cammini)
Gli stati costituiscono i nodi nello spazio degli stati. I nodi degli alberi sono
strutture dati.
Lo spazio degli stati non è l’albero di ricerca (l’albero parte sempre da un nodo:
ha una radice).
La collezione di nodi in attesa di essere espansi è detta frontiera o confine.
Rappresentazione dello spazio degli
stati: esplicita/implicita
Non sempre è possibile rappresentare esaustivamente uno spazio degli
stati
Rappresentazione esplicita: lo spazio degli stati è rappresentato in
una struttura dati (che contiene tutti gli stati e le rispettive transizioni)
Ex. Navigazione tra le città
Rappresentazione implicita: gli stati sono rappresentati attraverso
caratteristiche astratte, e metodi che, dato uno stato, consentono di
ottenere uno stato raggiungibile attraverso una transizione
Ex. Tris
Quando si ha una rappresentazione esplicita la definizione dello spazio
degli stati viene per lo più demandata alla costruzione dell’albero di
ricerca
Missionari e cannibali
Esempio: missionari e cannibali
Su una sponda di un fiume ci sono tre missionari: Rossi, Rossini e
Rossetti, e tre cannibali: Bingo, Bongo e Bango. Si può
attraversare il fiume con una barca che porta al più due persone.
Se il numero di cannibali supera il numero di missionari
presenti su una delle due sponde, i missionari vengono
mangiati.
Come usare la barca per trasbordare attraverso il fiume tutti i
missionari e i cannibali senza rischi?
Problema di soddisfacimento di vincoli (CSP)
• Stati: valori di un insieme di variabili
• Stato iniziale: nessun assegnamento di valori alle variabili
• Stato finale: assegnamento di valori a tutte le variabili che
soddisfa tutti i vincoli dati
• Operatore: assegna a una variabile un valore del suo dominio
• Profondità dell’albero = numero n di variabili
Metodi di soluzione:
• naif: generazione (assegnare valori a tutte le variabili) e prova
(verificare se tutti i vincoli sono soddisfatti) in sequenza
• migliorativo: generazione e prova sono intrecciati (per ogni
assegnamento di valori a una variabile verificare se soddisfa i
vincoli)
• euristico: si possono applicare le ricerche iterative
CSP: criptoaritmetica
Esempio:
S END+
MORE=
MONEY
Assegnare una cifra (0-9) a ciascuna lettera in modo che:
• cifre distinte corrispondano a lettere distinte
• le somme dei numeri ottenuti sostituendo lettere con
cifre rispettino i vincoli dell’aritmetica
VINCOLI
CSP: puzzle logico
I coniugi Brillante hanno cinque figli, che tengono fede al loro nome.
Alle età di 4,5,6,7 e 8 anni, Rosa e i suoi fratelli mostrano un buon
talento ciascuno in un campo diverso da quello degli altri.
Determinare l'età e il talento di ognuno dei figli, sapendo che:
•
•
•
•
•
•
Uno di loro suona bene il piano
Carla ha 4 anni, e non è la Brillante matematica
Il mago del computer è di un anno più vecchio di Stefano
Il violinista ha 7 anni
Giovanna non è quella di 8 anni
All'età di 5 anni, Roberto è più giovane del Brillante bravo nel nuoto.
VINCOLI
Domini:
età: {4,5,6,7,8}
figlio: {carla, giovanna, roberto,rosa, stefano}
talento: {matematica,violino,nuoto,computer,piano)
Soluzione:
Soluzione:
(4,carla,piano),(5,roberto,matematica),
(4,carla,piano),(5,roberto,matematica),
(6,giovanna,nuoto),(7,stefano,violino),(8,rosa,computer)
(6,giovanna,nuoto),(7,stefano,violino),(8,rosa,computer)
Un esempio noto di ricerca...
n0
n1
n2
n3
SLD-Risoluzione
SLD-Risoluzione
n11 n12 n13 n14
Spazio degli stati:
Quali sono gli stati e quali le transizioni?
Stato iniziale e stato obiettivo?
Costruzione dell’albero?
n4
II – Algoritmo generale di ricerca e
ricerca non informata
Outline
1. Problemi come spazio delle soluzioni
•
Alcuni esempi di problemi
•
Stati e transizioni
•
Rappresentazione dello spazio degli stati con grafi
•
Alberi di ricerca
2. Algoritmo generale di ricerca e ricerca non
informata
•
Algoritmo generale di ricerca
•
Algoritmi di ricerca non informata: deep-first, breat-first, iterative
deepening (IDA).
•
Accenni a problemi di complessità
3. Euristiche e ricerca informata
•
Il concetto di euristica
•
Ricerca best-first: ricerca golosa e A*
•
IDA*
Algoritmo generale di ricerca
1. L: lista di nodi da esaminare
(inizialmente: i nodi iniziali)
2. Se L vuota, fallimento.
Altrimenti, selezionare un nodo n da L.
3. Se n è un nodo finale, terminare restituendo il cammino dal nodo
iniziale a n.
4. Altrimenti, cancellare n da L e aggiungere a L tutti i figli di n,
ciascuno con il suo cammino dal nodo iniziale.
Tornare al passo 2.
LE STRATEGIE DI RICERCA DIFFERISCONO NELLA SCELTA DEL NODO DA
ESPANDERE E NEL MODO IN CUI I NODI FIGLI SONO AGGIUNTI ALLA FRONTIERA
Strategie di ricerca
• E' garantito che la ricerca trovi una soluzione (se c’è)?
COMPLETEZZA
• E’ garantito che la soluzione trovata è ottimale?
Soluzione = cammino dal costo minore
OTTIMALITA’
• Qual è la complessità in tempo e spazio della ricerca?
EFFICIENZA
• Si possono sfruttare caratteristiche specifiche del problema per
ridurre la complessità?
Dipende dalla strategia di ricerca adottata
Criteri di valutazione tra strategie
Ricerca informata e non informata
• Ricerca non informata:
l’algoritmo di ricerca procede adottando strategie
generali indipendenti dal problema specifico. Quali
nodi espando, in che modo?
• Deep First, Breadth First, Iterative Deepening
• Ricerca informata:
si usano informazioni sul problema specifico per
indirizzare la ricerca verso la soluzione.
• Funzioni euristiche: misura dell’avvicinamento allo
stato obiettivo.
• Best First, Greedy search, A*, IDA*, etc.
Risolvere problemi...
problemi
Rappresentazione
del problema
“ragionamento”:
sfruttare la
rappresentazione
per trovare la
soluzione
PROBLEM SOLVING
Capacità di risolvere problemi
conosenza simbolica
incerta
conosenza simbolica abilità
linguistica
apprendimento
Definizione dello spazio
degli stati
Costruzione della ricerca nello
spazio degli stati:
Albero di ricerca
Ricerca Euristica...
Rappresentazione “ragionamento”:
sfruttare la
del problema
rappresentazione
per trovare la
+
soluzione
Definizione dello spazio
degli stati
Costruzione della ricerca nello
spazio degli stati:
Albero di ricerca
Funzione di valutazione euristica
Ricerca non informata
Ricerca in profondità (depth-first)
Lista L gestita come stack:
• si seleziona il nodo di testa
• si aggiungono i figli generati in testa
1
2
n1
7
n11 n12 n13 n14
3
4
5
6
8
9
n2
10
[n0]
p=0
p=1
[n1,n2,n3,n4]
[n11,n12,n13,n14,n2,n3,n4] p = 2
m=1
m=4
m=7
n0
12
11 13 14
n3
15
17
16 18 19
n4
20
21
M: numero di nodi da memorizzare M = p (r - 1) + 1 per r fissato: p (r - 1) + 1 = O (rp)
Complessità in spazio lineare rispetto alla profondità
T: numero di nodi da esaminare
se nodo soluzione il più a sinistra:
T=p+1
se nodo soluzione il più a destra:
T = 1 + r + r 2 + r 3 + ... + ( r p - 1 )
in media, per p grande:
T = 1 + r + r 2 + r 3 + ...+ (r p - 1 ) = O (r p )
Complessità in tempo esponenziale rispetto alla profondità
Ricerca in ampiezza (breadth-first)
Lista L gestita come coda:
•
•
[n0]
[n1,n2,n3,n4]
[n2,n3,n4,n11,n12,n13,n14]
si seleziona il nodo di testa
si aggiungono i figli generati in coda
1
n1
2
6
7
8
3
9
n2
p=0
p=1
p=2
n0
4
n3
5
10 11 12 13 14 15 16 17 18 19
n4
20 21
n11 n12 n13 n14
Numero massimo di nodi espansi: 1+ r + r 2 + r 3 + ...+ (r p - 1) = O(r p )
La frontiera è la parte più impegnativa.
Complessità in spazio anch'essa esponenziale.
(RICERCA IN AMPIEZZA: UN CASO SPEC IALE DI RICERCA A COSTO UNIFORME)
Consumo risorse per complessità rp
Ipotesi:
fattore ramificazione r = 10
1.000 nodi/sec
100 bytes/nodo
profondità p
0
2
4
6
8
10
12
14
nodi
1
111
11.111
106
108
1010
1012
1014
tempo
1 msec
0,1 sec
11 sec
18 min
31 ore
128 giorni
35 anni
3500 anni
memoria
100 b
11 Kb
1Mb
111 Mb
11 Gb
1 Tb
111 Tb
11.111 Tb
Depth-first vs. Breadth-first
• Ricerca in profondità e ricerca in ampiezza entrambe
esponenziali in tempo, ma:
• complessità in spazio:
• lineare in profondità
• esponenziale in ampiezza
• ottenimento della soluzione:
• garantita in ampiezza
• non garantita in profondità
• ottimalità della soluzione:
• in ampiezza, la prima soluzione trovata è quella del cammino più
corto (ottimale se costo cammino costante)
• in profondità non è garantita
Scelta della strategia
PAROLE CROCIATE
(una parola per volta)
p=0
....
A
G
O
A
M
O
A
V
O
....
p=1
....
A
M
O
R
....
p=2
O
1.
2.
3.
Qual è la profondità della soluzione?
Qual è il fattore di ramificazione?
Preferibile ricerca in profondità o in ampiezza? [preferibile in profondità
perchè è fissata (4) e ogni nodo di profondità 4 è soluzione]
Riduzione dello spazio di ricerca
Utilizzare caratteristiche peculiari del problema
per ridurne la complessità riducendo lo spazio di ricerca.
Si individuano classi di equivalenza degli stati
per simmetria
per astrazione
.…
Riduzione per simmetria
FILETTO o TRIS
in angolo
al centro
al centro di un lato
12 x 7! = 60.480 anzicchè 9! = 362.880
Riduzione per astrazione
Esempio: missionari e cannibali
Su una sponda di un fiume ci sono tre missionari: Rossi, Rossini e
Rossetti, e tre cannibali: Bingo, Bongo e Bango. Si può attraversare il
fiume con una barca che porta al più due persone.
Se il numero di cannibali supera il numero di missionari presenti su una
delle due sponde, i missionari vengono mangiati.
Come usare la barca per trasbordare attraverso il fiume tutti i missionari
e i cannibali senza rischi?
ASTRAZIONE: le identità individuali non contano
Primo trasbordo:
5 operatori:
1c, 1m, 2c, 2m, 2cm
3M, 3C-0M,0C
3M,2C-0M,1C
3M,1C-0M,2C
2M,2C-1M,1C
Controllo di loop
Se il grafo (dello spazio degli stati) contiene cicli occorre evitare loop
per evitare di generare rami infiniti
Si usano 2 liste:
• lista aperta: nodi da esaminare
• lista chiusa: nodi già esaminati
Un nodo selezionato dalla lista aperta viene espanso solo se non
compare già nella lista chiusa
Ricerca a profondità limitata:
Si fissa una soglia massima di profondità pt.
Va bene quando è nota la profondità della soluzione ps. Altrimenti:
• se pt < ps: soluzione non trovata
• se pt > ps: tempo di esecuzione maggiore del necessario
In generale: come scegliere pp?
Iterative deepening: ID (1)
• Provare la ricerca a profondità limitata con tutti i pt
finchè soluzione:
• si inizia con pt = 0,
• si finisce con pt = p: è ottimale!
• Simile a ricerca in ampiezza ma non memorizzo tutti i
nodi che esploro: riduco la complessità nello spazio.
• Espando dei nodi più di una volta. Questo costo
aggiuntivo è spesso preferibile alla memorizzazione
di tutti i nodi.
• I nodi che vengono espansi più volte sono i nodi vicini alla
radice
• In generale preferito quando grande spazio di ricerca
e non si conosce la profondità della soluzione
Iterative deepening: ID (2)
Soglia di profondità s, incrementata ad ogni iterazione
∀s, ricerca in profondità, ma comportamento in ampiezza; i nodi sono rigenerati e non
memorizzati
0. s = 1 (soglia iniziale).
1. L: lista dei nodi iniziali: la radice.
2. Se L è vuota [fallimento] incrementare s e tornare al passo 1. Altrimenti, selezionare un
nodo n da L.
3. Se n è un nodo finale, terminare restituendo n e il cammino dal nodo iniziale a n.
4. Altrimenti, cancellare n da L. Se la profondità di n è minore di s, aggiungere a L tutti i figli
di n, ciascuno con il suo cammino dal nodo iniziale. Tornare al passo 2.
1, 2, 7
3, 8
9
10
4, 13
11
12
14 15
5,18
16
17
19
20
21
6, 23
22
24 25
26
27
2
p 2
p 1
p
Numero di espansioni: ( p +1)1+ ( p ) r + ( p - 1) r + ... + 3r - + 2r - +1r
per r fissato e p grande: tempo O (rp) ; spazio O (rp)
E' la procedura di ricerca esaustiva asintoticamente ottimale
Direzioni di ricerca
Due possibili direzioni + loro combinazione:
• in avanti (forward chaining, data-driven):
dallo stato iniziale (dai dati del problema)
generando gli stati intermedi
verso lo stato finale (obiettivo)
• all'indietro (backward chaining, goal-driven):
dall'obiettivo da raggiungere
esaminando le condizioni per raggiungerlo (sotto-obiettivi)
verso i dati del problema
• bidirezionale, alternando le due direzioni
Lo spazio di ricerca è lo stesso,
differisce il numero di stati effettivamente esaminati
Quale direzione preferire dipende dal problema
Scelta della direzione di ricerca
• All'indietro preferibile se:
• l'obiettivo è formulato chiaramente
• vi è un gran numero di regole che corrispondono ai dati del
problema, generando molte possibili conclusioni
• i dati del problema devono essere acquisiti (nella diagnosi, molti
test sono possibili)
• esempio: dimostrare un teorema
• In avanti preferibile se:
• vi sono molti dati iniziali
• vi sono poche regole
• è difficile formulare l'obiettivo
• esempio: formulazione chimica
• In generale:
• conviene passare dall'insieme di stati più piccolo a quello più
grande
• conviene procedere nella direzione di minore fattore di
ramificazione
III – Euristiche e ricerca informata
Outline
1. Problemi come spazio delle soluzioni
•
Alcuni esempi di problemi
•
Stati e transizioni
•
Rappresentazione dello spazio degli stati con grafi
•
Alberi di ricerca
2. Algoritmo generale di ricerca e ricerca non
informata
•
Algoritmo generale di ricerca
•
Algoritmi di ricerca non informata: deep-first, breat-first, iterative
deepening (IDA).
•
Accenni a problemi di complessità
3. Euristiche e ricerca informata
•
Il concetto di euristica
•
Ricerca best-first: ricerca golosa e A*
•
IDA*
Valutazione euristica degli stati (Es. 1)
Esempio: tris
Euristica: valutare per ogni stato il numero di tris potenziali
3
4
4
2
4
3
5
5
4
4
3
Valutazione euristica degli stati (Es. 2)
Esempio: gioco dell'8
•
Euristica 1:
• per ogni stato: n1= quadrati fuori posto
[per lo stato (a): n1 = 7]
• sottostima la distanza dallo stato finale (b) (con una mossa, al più un
quadrato può andare a posto)
6
4
2
8
1
3
5
8
7
1
7
(a)
•
2
3
4
4
6
(b)
5
7
2
8
3
1
5
6
(c)
Euristica 2:
• per ogni stato, n2 = somma delle distanze dalla destinazione di ogni
quadrato fuori posto
[per lo stato (a): n2 = 3 + 0 +3 + 2 + 1 + 3 + 1 + 4 = 17]
• sottostima distanza da stato finale (con una mossa avanza al più un
quadrato e al più di un passo)
Euristica 2 più accurata di Euristica 1:
n2 ≥ n1
Non adeguate a inversione di quadrati (nello stato (c) i quadrati 5 e 6 sono
da invertire)
Ricerca euristica
• Usa informazione specifica del dominio per scegliere quali nodi
espandere
• Associa allo spazio degli stati una funzione euristica di valutazione
che assegna un valore ad ogni stato
• Strategia euristica: espandere il nodo più 'promettente' (ritenuto più
vicino al nodo finale)
4
Esempio:
2
8
3
1
6
4
7
5
2
2
8
3
1
6
4
1
7
5
7
3
5
8
6
3
2
8
3
4
1
6
4
5
7
5
5
Ricerca in salita (hill climbing)
Detta anche metodo del gradiente
Seleziona uno stato successivo solo se migliora la condizione attuale
secondo l’euristica in uso, fallisce se non c’e’.
MEMORIZZA SOLO I NODI APPARTENENTI AL CAMMINO ATTIVO (IN PROFONDITA')
10
9
5
6
3
4
1
8
7
9
Ricerca in salita con euristiche diverse
Esempio (MONDO DEI BLOCCHI)
D
C
B
A
(1)
A
D
C
B
(2)
D
C
B
A
(3)
C
B
D
A
C
B
(4)
A
(5)
D
MOSSE: spostare un blocco libero per volta o sul tavolo o su un altro blocco
(1) stato finale
(2) stato iniziale
(3) stato dopo la prima mossa
(2), (4), (5) stati possibili dallo stato (3)
Euristica 1 (locale): +1 ∀blocco in posizione corretta
-1 ∀blocco in posizione errata
(1): +4 (2): 0 (3): +2 (4): 0 (5): 0
Nello stato (3) la ricerca in salita si ferma: (2), (4), (5) non sono migliori di (3)
Euristica 2 (globale): +n ∀ blocco sopra n-1 blocchi corretti
- n ∀ blocco sopra n-1 blocchi errati
(1): +10 (2): -10 (3): -5 (4): -4 (5): -3
Nello stato 3 la ricerca in salita sceglie lo stato (5) che porta verso la soluzione
Ricerca in salita: problemi
•
La ricerca in salita non può procedere quando incontra:
Massimo locale:
stato migliore di tutti i vicini ma non migliore di altri più lontani
•
Pianoro:
tutti gli stati vicini sono di pari valore
•
Crinale:
vi sono stati vicini di valore migliore ma non raggiungibili con una singola
mossa
Soluzioni ai limiti della ricerca in salita
• Massimo locale:
tornare a uno stato precedente e spostarsi in un'altra direzione
• Pianoro:
saltare in qualche direzione verso una nuova zona (simulated
annealing)
• Crinale:
fare due o più mosse insieme (aggiramento) prima di valutare i
prossimi stati (macroregole)
• Ma tutte le euristiche sono:
• fallibili
• difficili da individuare
• da verificare sperimentalmente su campioni di prova
Ricerca best-first
1. L: lista dei nodi iniziali.
2. Se L è vuota, fallimento.
Altrimenti, selezionare da L [un] il nodo n migliore.
3. Se n è un nodo finale, terminare restituendo n ed il cammino dal nodo iniziale
a n.
4. Altrimenti, cancellare n da L e aggiungere a L tutti i figli di n, ciascuno con il
suo cammino. Tornare al passo 2.
IL NODO DA ESPANDERE E' SCELTO TRA I FIGLI DEI NODI ESPANSI IN
TUTTI I PASSI PRECEDENTI
1
9
3
2
5
8
6
4
8
7
5
4
Greedy Search (Ricerca Golosa):
minimizzare la distanza dall’obiettivo
• Funzione di valutazione degli stati h: distanza da obiettivo
[h(n) = 0 se n è l’obiettivo]. Distanza stimata da obiettivo.
• Simile a Hill-Climbing ma vero e proprio albero: espando
sempre i nodi valutati più vicini a obiettivo
• Ex. Cammino da Arad a Bucarest: distanza in linea d’aria da
obiettivo come funzione di valutazione
• Nodi non necessari espansi, (false partenze) e oscillazioni
causate da loop
• Simile a Deep First... Incompleta e non ottimale, ma se la
funzione euristica è buona può essere molto veloce
• Trovare una buona h è in generale molto difficile
Ricerca Golosa (esempio)
Supponiamo di voler andare da
Iasi a Fagaras
h: distanza in linea d’aria
Oscillazione (loop)
False partenze
Supponiamo
di avere un
nuovo nodo
x...
x
… la soluzione può
non essere ottimale
Costo dei cammini
Misura della lunghezza di un cammino tra due stati
Esempio: problema del commesso viaggiatore
Partendo dalla sede visitare n città ciascuna una sola volta, e tornare in sede
percorrendo la minima distanza possibile. E' data la distanza tra le diverse città.
A
100
75
B
125
125
100
E
75
125
50
C
150
D
300
E
375
A
250
50
B
C
275
D
E
325
D
C
100
D
A
E
100
E
C
D
E
425
A
Per N città vi sono (N - 1) ! cammini
B
C
E
Branch and bound:
minimizzare il costo cammino
Memorizza tutti i cammini e i loro costi, espandendo ad ogni passo
il cammino di costo minore rispetto a tutti quelli generati.
Algoritmo:
1. Lista L dei cammini dal nodo iniziale
2.
•
•
•
•
3.
(inizialmente: nodo iniziale, cammino di lunghezza nulla)
Finchè L è vuota o si è raggiunto un nodo finale:
se il primo cammino in L contiene un nodo finale, termina con
successo, altrimenti
rimuovi il cammino da L e forma nuovi cammini espandendo di un
passo il cammino rimosso
calcola il costo dei nuovi cammini e aggiungili in L
ordina i cammini in L per costi crescenti dei cammini
Altrimenti, termina con fallimento
Trova sicuramente il cammino di costo minimale
Utile quando esistono più cammini da nodo iniziale a nodo finale
Funzione di valutazione totale: ricerca A
f(n)=g(n)+h(n)
g ( n ) : misura lunghezza effettiva cammino da nodo iniziale a nodo n
h ( n ) : stima euristica distanza nodo n da nodo finale
f ( n ) : costo totale cammino da nodo iniziale a nodo finale attraverso nodo n
a
1
2
8
7
6
3
2
4
1 1
(obiettivo)
e
3
7
5
b
3
c
3
8
3
4
6
g(n)=0
5
3
d
4
2
8
3
2
8
3
2
8
3
2 1
1
4
1
8
4
1
4
4
7
6
5
7
6
5
7
6
5
4
g
3
f
2
2
8
3
2
8
3
2
2
3
2
1
4
7
1
4
1
8
4
7
6
5
7
6
5
7
6
5
f(e)=g(e)+ h(e)=2+3=5
g(n)=1
g(n)=2
f(c)=g(c)+ h(c)=1+3=4
AAparità
paritàdidistima,
stima,scelto
sceltonodo
nodoccpiù
piùvicino
vicinoaanodo
nodoiniziale
iniziale
Algoritmo
AlgoritmoA:
A:best-first
best-firstcon
confunzione
funzionedidivalutazione
valutazionetotale
totale
Funzione di valutazione totale: ricerca A
f(n)=g(n)+h(n)
g ( n ) : misura lunghezza effettiva cammino da nodo iniziale a nodo n
h ( n ) : stima euristica distanza nodo n da nodo finale
f ( n ) : costo totale cammino da nodo iniziale a nodo finale attraverso nodo n
a
1
2
8
7
6
3
2
4
1 1
(obiettivo)
e
7
5
b
3
c
3
8
3
4
6
g(n)=2
5
3
d
4
2
8
3
2
8
3
2
8
3
2 1
1
4
3 1
8
4
1
4
4
7
6
5
7
6
5
7
6
5
4
g
3
f
2
2
8
3
2
8
3
2
2
3
2
1
4
7
1
4
1
8
4
7
6
5
7
6
5
7
6
5
f(e)=g(e)+ h(e)=2+3=5
g(n)=1
g(n)=2
f(c)=g(c)+ h(c)=1+3=4
AAparità
paritàdidistima,
stima,scelto
sceltonodo
nodoccpiù
piùvicino
vicinoaanodo
nodoiniziale
iniziale
Algoritmo
AlgoritmoA:
A:best-first
best-firstcon
confunzione
funzionedidivalutazione
valutazionetotale
totale
Ricerca A*: h ammissibile
Una funzione è ammissibile se non sopravvaluta mai la distanza effettiva
all’obiettivo
A* è un algoritmo con funzione di valutazione totale dove la
funzione euristica h è ammissibile.
f*(n)=g*(n)+h*(n)
g* ( n ) = costo cammino più corto da nodo iniziale a nodo n
h* ( n ) = costo effettivo cammino più corto da nodo n a nodo finale
f * ( n ) = costo effettivo cammino ottimale da nodo iniziale a nodo finale
attraverso nodo n
Funzioni g*, h*, f * non note
Usualmente g ( n )
≥
g, h, f loro approssimazioni
g*(n)
Algoritmo A* : algoritmo A con funzione f in cui
A* è ottimale e completo
h(n)≤ h*(n)
Ottimalità e completezza
Ottimale: I nodi in tutte le frontiere
successive hanno un costo f più grande
Prima o poi frontiera: cammino reale
A* è ottimamente efficiente: non esiste nessun altro algoritmo ottimale che
garantisce di espandere un minor numero di nodi di A*
Informatività
Funzioni a valutazione totale:
f(n)=g(n)+h(n)
•
La ricerca breadth-first è un algoritmo A * con h = 0 e costo cammino
costante per ogni arco, cioè f ( n ) = g ( n )
•
La ricerca branch and bound è un algoritmo A* con
h = 0 e g diverso per ogni arco
Sono ammissibili, perchè, essendo h = 0,
∀ n 0 ≤ h* ( n )
Date due euristiche A*: h1 e h2, h2 è più informata di h1 se
∀ n h1 ( n ) ≤ h2 ( n )
Più un'euristica è informata, minore è il numero di nodi da espandere per
trovare la soluzione ottimale:
E’ sempre meglio utilizzare una funzione euristica più informativa a meno
che non sopravvaluti
Informatività (2): ex. Il gioco dell’8
2
8
1
Ex. Gioco dell'8
7
3
4
6
5
euristica h1 (numero quadrati fuori posto)
euristica h2 (somma spostamenti minimi dei quadrati)
Si ha:
•0 ≤ h1 ≤ h2
≤
h*
•entrambe ammissibili
•entrambe migliori di breadth-first
•euristica h2 più informata di euristica h1
Efficacia delle euristiche
Confronto tra ID (Iterative Deepening) e A*, media su 100 istanze nel gioco dell’8
Costo della ricerca
Fattore di ramificazione effettivo
p
ID
A*(h1)
A*(h2)
ID
A*(h1)
A*(h2)
2
4
6
8
10
12
14
10
112
680
6384
47127
364404
3473941
6
13
20
39
93
227
539
6
12
18
25
39
73
113
2.45
2.87
2.73
2.80
2.79
2.78
2.83
1.79
1.48
1.34
1.33
1.38
1.42
1.44
1.79
1.45
1.30
1.24
1.22
1.24
1.23
Euristiche per CSP
Effettuare per prima la sostituzione più vincolata.
Esempio di criptoaritmetica:
la cifra più a sinistra può avere solo valore 0 o 1
Iterative deepening A* (IDA*) (1)
Iterative deepening con funzione di valutazione totale ammissibile.
LIMITE DI COSTO al posto di limite di profondità
0. s = f(stato iniziale).
1. L: lista dei nodi iniziali.
2. Se L è vuota incrementare s a next_s e tornare al passo 1.
Altrimenti, selezionare un nodo n da L.
3. Se n è un nodo finale, terminare restituendo n e il cammino dal nodo
iniziale a n.
4. Altrimenti, cancellare n da L. Aggiungere in testa a L ogni figlio n' di n
per cui f(n') ≤ s, ciascuno con il suo cammino dal nodo iniziale.
Settare next_s come il min(f(n’)) tale che f(n’) > s. Tornare al passo 2.
Ricerca completa ed ottimale (euristiche ammissibili)
Funzione euristica usata per potare nodi, non per determinare l'ordine di
espansione, che rimane in profondità
Iterative deepening A* (IDA*) (2)
Complessità in spazio esponenziale in p per A*, lineare in p per IDA*
Complessità in tempo dipende da euristica
Asintoticamente espande lo stesso numero di nodi di A*
A* include una funzione di ordinamento: costo aggiuntivo!
Minore è il range di valori dell’euristica minore è il numero di espansioni
Problemi con domini complessi (ampio range della funzione euristica)
Se il valore euristico cambia ad ogni stato:
ciascuna frontiera un solo stato in più rispetto a quella precedente!
Se A* espande n nodi, IDA* n iterazioni: espande 1+2+3+…+ n nodi
Unasoluzione:
soluzione:IDA*
IDA*εε-ammissibile
ammissibile
Una
Incrementareilillimite
limitedidicosto
costodidiuna
unaquantità
quantitàfissata
fissataεε
Incrementare
Siriduce
riduceililcosto
costodidiricerca,
ricerca,ma
malalasoluzione
soluzionepuò
puònon
non
Si
esserepeggiore
peggiorerispetto
rispettoall’ottimale,
all’ottimale,alalpiù
piùdidiun
unvalore
valore
essere
(masempre
semprecompleta)
completa)
pariaaεε(ma
pari
Un’altra
SMA*:Simplified
Memory-Bounded A*
Un esempio: la formulazione chimica
High-level Prop of “XYZ
Low-level Prop of “XYZ
Desired High-level Properties
Recipe."XYZ"
Test obiettivo, euristiche…
Desired Low-level Properties
?
Done
Wanted
Recipe satisfying the given goals
Scoperta di euristiche
Nel gioco dell’8:
h1 = n0 tessere fuori posto
h2 = distanza di Manhattan (somma delle distanze dalla posizione finale)
sono lunghezze di cammino effettive per versioni semplificate con condizioni rilassate.
Regola del gioco:
Una tessera può muovere dal quadrato A al quadrato B
(i) se A è adiacente a B e
(ii) se B è vuoto
Rilassando (ii) si ottiene h2
Rilassando sia (i) che (ii) si ottiene h1
Nota
h2 domina h1
∀ n: h2 (n) ≥ h1 (n)
Se ci sono k euristiche h1 , … , hk nessuna delle quali domina le altre, allora
h (n) = max (h1 (n) , … , hk (n)) è dominante
ATTENZIONE a costo di esecuzione di funzioni euristiche
Minimax
Giochi a 2 (MIN e MAX) a mosse alternate e informazione perfetta
ESEMPIO: gioco del NIM
N fiammiferi, mossa: dividere una fila in due sottofile non vuote e non uguali
1
7
MIN
6-1
MAX
MIN
MAX
5-1-1
1
0
4-2-1
4-1-1-1
MIN
0
3-1-1-1-1
MAX
Ad ogni nodo foglia:
5-2
1
1
4-3
0
1
1
3-2-2
3-2-1-1
0
3-3-1
1
2-2-1-1
2-2-1-1-1
2-1-1-1-1-1
0
1
0
(N=7, MIN muove per primo)
valore 0 se vincente per MIN - valore 1 se vincente per MAX
Propagazione dei valori a ritroso:
ai genitori MAX (MIN), valore massimo (minimo) dei figli (nell'esempio, MAX può
vincere per qualunque prima mossa di MIN)
In grafi grandi, si danno valori di stima ai nodi n mosse più avanti, si propagano a ritroso,
e si usano per selezionare la prossima mossa.
Alfa-Beta
Procede in profondità, potando rami
Valore alfa (con MAX), non decrescente
beta (con MIN), non crescente
3
A
MAX
MIN
3
MAX
MIN
B
3
2
2
D
3
5
val (D) = max (5,E)
BETA ← val (B) = min (3,max (5,E)) = 3
appena trova un figlio di D con valore ≥
val (C) = min (2,F)
ALFA ← val (A) = max (3,min (2,F)) = 3
appena trova un figlio di C con valore ≤
C
2
E
2
F
1
∀E (E potato)
BETA, ignora gli altri
∀F (F potato)
ALFA, ignora gli altri
Si esaminano tutte le possibilità di un giocatore (ramificazione r) e la migliore
risposta a ognuna di esse dell'altro giocatore (ramificazione 1).
A profondita' p: p/2 nodi con r figli e p/2 nodi con 1 figlio.
Numero totale di nodi: 2 r p/2 anzicchè r p
6
4
2
8
1
3
5
8
7
1
7
(a)
2
3
4
4
6
5
(obiettivo)
7
2
8
3
1
5
6
(c)
Scarica