intelligenza artificiale simbolica m. ernandes, e. trentin
TRANSCRIPT
Intelligenza Artificiale Simbolica
m. ernandes, e. trentin
Intelligenza Artificiale - Problem Solving
2/102
Problem Solving
IntroduzioneIntroduzione
Intelligenza Artificiale - Problem Solving
3/102
“Risolvere problemi”
E’ uno dei processi intellettivi che secondo il Comportamentismo richiede e definisce l’“attività intellettuale”.
1. Induzione (Apprendimento)
2. Sussunzione (Riconoscimento)
3. Ragionamento (Deduzione)
4. Problem Solving (implica tutte le precedenti)
Approccio comportamentista: Test di Turing
Intelligenza Artificiale - Problem Solving
4/102
“Come” costruire un Problem Solver ?
Approccio Human-oriented (cognitivista) Deve SIMULARE l’attività intelligente Risolvere problemi “pensando come un uomo”
Approccio Machine-oriented (comport.) Deve MANIFESTARE attività intelligente Risolvere i problemi al meglio
Intelligenza Artificiale - Problem Solving
5/102
Approccio Machine-Oriented
Problem Solver che MANIFESTA intelligenza Algoritmi di Ricerca
Problem Solving = ricerca nello spazio degli stati. Perchè? PS = Hard Computing
Il bias della “potenza di calcolo”: Con calcolatori sufficientemente potenti si può “attaccare”
ogni tipo di problema. Falso: l'esplosione combinatoria rende futile la forza bruta
Intelligenza Artificiale - Problem Solving
6/102
Cosa è un problema? (I)
“Problema” è un concetto non definibile, solo esemplificabile. (Nilsson, 1982)
Alcuni esempi: I puzzle “da tavola” in genere NP “Commesso viaggiatore” Rompicapo come il Cubo di Rubik SAT, Dimostrazione teoremi Giochi (Dama, Scacchi, etc.) VLSI
Intelligenza Artificiale - Problem Solving
7/102
Cosa è un problema? (II)
Formalizzazione: 5-tupla di elementi: P={X,SCS,x0,g,t}
2
87
654
317
25 8
16
43
Formalizzare = astrarre un problema
Intelligenza Artificiale - Problem Solving
8/102
Problem Solving
Ricerca nello spazio degli statiRicerca nello spazio degli stati
“Blind” Search
Intelligenza Artificiale - Problem Solving
9/102
Grafi e strategie
Spazio degli Stati X
Spazio della Ricerca (SCS(SCS(…(x0)…))) Alberi Nodi
Cosa vuol dire trovare una soluzione?
Cosa è una strategia di ricerca?
Intelligenza Artificiale - Problem Solving
10/102
Valutare le strategie4 criteri fondamentali:
Completezza
Ottimalità
Complessità Spaziale
Complessità Temporale
Le “regole d’oro” di J.Pearl (1984) Non dimenticarsi di cercare sotto ogni pietra Non alzare due volte la stessa
Intelligenza Artificiale - Problem Solving
11/102
Ricerca Cieca
Come espandere un nodo?
CodaCoda dei nodi aperti:CODA.insert(node);node = CODA.remove();
L’ordinamento dei nodi in CODAdetermina la strategia di ricerca
Intelligenza Artificiale - Problem Solving
12/102
Algoritmo Generale di Search
Struttura Generale
1. if (goal_test(x0)== true) return SUCCESS2. else CODA.insert(x0)3. do { if (CODA.isEmpty()) return FAILURE nodo = CODA.remove() figli[] = SCS(nodo) CODA.insert(figli)
} while( goal_test(nodo)== false )4. return SUCCESS
Intelligenza Artificiale - Problem Solving
13/102
“Breadth First”Ricerca in Ampiezza
Usa una memoria FIFO
E’ un algoritmo “difensivo”
E’ completo e ottimale
Complessità spaziale: O(bd)
Complessità temporale: O(bd)
Intelligenza Artificiale - Problem Solving
14/102
“Breadth First” - simulazione
GOAL
Intelligenza Artificiale - Problem Solving
15/102
Alcuni numeridepth N° nodi Tempo Memoria2 111 1 msec 11 KB
4 11111 0,1 sec 1 MB
6 >106 10 sec >100 MB
8 >108 17 min >10 GB
10 >1010 28 ore >1 TB
12 >1012 116 giorni >100 TB
14 >1014 32 anni >10000 TBb =10, velocità ricerca = 100 mila nodi/sec., 100 byte/nodo
Korf: dagli anni ’60 la velocità di ricerca è cresciuta di 2 x 106. Quasi il 50% del contributo va ai miglioramenti algoritmici.
Intelligenza Artificiale - Problem Solving
16/102
“Depth First”Ricerca in Profondità
Usa una memoria LIFO
E’ un algoritmo “aggressivo”
E’ non completo e non ottimale
Complessità temporale: O(bd)
Complessità spaziale: O(db)
Intelligenza Artificiale - Problem Solving
17/102
“Depth First” - simulazione
GOALbacktracking
Intelligenza Artificiale - Problem Solving
18/102
Come migliorarli?
Conoscendo lo stato goal
Non ripetendo gli stati Evitando di espandere lo stato di provenienza
Evitando i cicli In generale: evitando di generare nodi con stati già
visitati nella ricerca
Conoscendo il costo degli operatori
Intelligenza Artificiale - Problem Solving
19/102
Ricerca Bidirezionale(sfruttare la conoscenza dello stato goal)
Ricerca in Ampiezza Dallo stato iniziale verso il goal Dal goal verso lo stato iniziale
Quando termina?Perché non usare 2 “depth first”?E’ completa e ottimaleComplessità spaziale: O(bd/2)Complessità temporale: O(bd/2)
Intelligenza Artificiale - Problem Solving
20/102
Ricerca Bidirezionale - SimulazioneGOAL
X0
Intelligenza Artificiale - Problem Solving
21/102
Ricerca a profondità limitata(evitare di cadere in loop infiniti)
Ricerca in profondità Si stabilisce una profondità massima l Se la coda è vuota al raggiungimento di l si ritorna un
fallimento
Non è completa (se l<d) né ottimale
Complessità spaziale: O(bl)
Complessità temporale: O(bl)
PRO: evita loop infiniti senza usare memoria!
CON: richiede conoscenza a priori del problema
Intelligenza Artificiale - Problem Solving
22/102
Iterative Deepening Search(evitare di cadere in loop infiniti)
Ricerca a profondità limitata Passo 1: l = 0 Passo 2:
si applica la ricerca a profondità limitata partendo da X0 se la coda è vuota al raggiungimento di l si reitera il passo 2
aumentando l
E’ ottimale e completa
Complex. temporale: (d+1)1 + (d)b + (d-1)b2 + … + (1)bd = O(bd)
Complex. spaziale: O(bd)
CONTRO: si espandono più volte gli stessi stati.
bd(b/(b-1))2bd(b/(b-1))2
Intelligenza Artificiale - Problem Solving
23/102
Iterative Deepening - sim
Iterazione: 0
Intelligenza Artificiale - Problem Solving
24/102
Iterative Deepening - sim
Iterazione: 1
Intelligenza Artificiale - Problem Solving
25/102
Iterative Deepening - sim
Iterazione: 2
Intelligenza Artificiale - Problem Solving
26/102
Iterative Deepening - sim
GOAL
Iterazione: 3
Intelligenza Artificiale - Problem Solving
27/102
Ricerca a costo uniforme(sfruttare la conoscenza del costo degli operatori)
La “Breadth First” Search minimizza il costo di cammino della soluzione se la funzione
di costo per ogni operatore è costante (es: 1) funzione di costo: g(n)
La “Uniform-Cost” Search minimizza il costo di cammino anche con operatori a costo
variabile (es: “commesso viaggiatore”) Requisito: g(n) <= g(SCS(n)), cioè costo non negativo Altrimenti non c’è strategia che tenga! E’ completa e ottimale.
Intelligenza Artificiale - Problem Solving
28/102
Ricerca a costo uniforme - Sim
44
26
6 2
1 4 5 6
1 568 5 6
COSTO: 023467GOAL
2 3 2
Intelligenza Artificiale - Problem Solving
29/102
Problem Solving
Ricerca nello spazio degli statiRicerca nello spazio degli stati
“Heuristic” Search
Intelligenza Artificiale - Problem Solving
30/102
Cosa è un’euristica?
“Qualsiasi cosa” che serva di supporto in un processo decisionale
E’ una conoscenza, magari imperfetta, del dominio in cui ci troviamo
Un esempio reale: “la Carta di Mercatore”
Tipicamente nel Problem Solving: Valutazione del costo di cammino futuro
Intelligenza Artificiale - Problem Solving
31/102
Come usare un’euristica?
X0
Actual State (n)
Goal State
g(n)
h(n)
f(n)
Intelligenza Artificiale - Problem Solving
32/102
Due Esempi di Euristiche
2
67 1
58
43
Tessere fuori posto
hfp(n) = 5
Distanza di Manhattan
hm(n) = 11
Intelligenza Artificiale - Problem Solving
33/102
Proprietà generali delle Euristiche
Ammissibilità: h(n) è ammissibile se h(n) ≤ h*(n)
Dominanza: h2 domina h1 se h1(n) ≤ h2(n)
e h1 & h2 sono ammissibili
n
n
n
Intelligenza Artificiale - Problem Solving
34/102
Proprietà generali delle Euristiche 2
Consistenza:h(n) è consistente se
Monotonicità:h(n) è monotona se
( ) ( , ') ( ') ( , ')h n c n n h n n n
( ) ( , ') ( ') | ' ( )h n c n n h n n n SCS n
n
c(n,n’) h(n’)
h(n)
n’
Intelligenza Artificiale - Problem Solving
35/102
Dim: consistenza = ammissibilità1. Per def: h(n) c(n,n’) + h(n’) (n,n’)
2. Allora possiamo sostituire n’ con un nodo risolvente
3. quindi: h(n) c(n,) + h()
4. h() = 0 e c(n,) = h*(n) per * (percorso ottimo)
5. da 3 e 4 abbiamo che h(n) h*(n)
Dim: monotonicità = consistenza
1. Per def: h(n) c(n,n’) + h(n’) n,n’ SCS(n)2. e anche: h(n’) c(n’,n’’) + h(n’’) n’,n’’ SCS(n’)3. ripetendo il punto 2 con: n’ n’’ e c(n,n’’) c(n,n’) + c(n’,n’’) rimane garantito che h(n) c(n,n’’) + h(n’’) n,n’’ SCS(…(SCS(n))…)
4. quindi: h(n) c(n,n’) + h(n’) (n,n’)
Intelligenza Artificiale - Problem Solving
36/102
Esempi di Euristiche Ammissibili
7
85 21643 A) Tessere Fuori Posto
B) Distanza di ManhattanC) h3=hfp+ hm non è ammissibile!
Navigazione Robot tra ostacoli
h(n) = Distanza in linea retta
(se il costo degli step è 1 per movimento ortogonale e per movimento diagonale)
2
2
Intelligenza Artificiale - Problem Solving
37/102
Euristica di Manhattan
Somma delle distanze ortogonali delle parti (le tessere nel Puzzle di Sam-Loyd) dalle loro posizioni nel goal state.
E’ ammissibile
E’ monotona.
Rispetta la parità di h*(n)
E’ pienamente informata quando siamo vicini all’obiettivo
Intelligenza Artificiale - Problem Solving
38/102
Algoritmi di Ricerca Euristica
Hill-Climbing
Best-First Search Algoritmi Greedy Algoritmi A* Algoritmo Generale: WA*
Memory Bounded Search IDA*, SMA*
Ricerca a miglioramenti Iterativi Simulated Annealing
Intelligenza Artificiale - Problem Solving
39/102
Hill-Climbing Search
Si usa unicamente la funzione euristica
Non c’è backtracking
Non si usa memoria
Non è ottimale
Non è completo Minimi locali
4 5 4
3 0
GOAL
53
Intelligenza Artificiale - Problem Solving
40/102
Best-First Ottimale: A*(Hart, Nilsson and Raphael, 1968)
A* = un nome ambizioso
Funzione di valutazione f(n)=g(n)+h(n)
Caratteristiche:OttimaleCompletoComplex time & space: O(bd)Ottimamente efficiente
Intelligenza Artificiale - Problem Solving
41/102
Algoritmo A*
1. if (goal_test(x0)== true) return SUCCESS2. else OPEN.insert(x0, g(x0)+h(x0) )3. do {
if (OPEN.isEmpty()) return FAILURE nodo = OPEN.remove()
CLOSED.insert(nodo) figli[] = SCS(nodo)
for all figli{ if (!CLOSED.contains(figlio))
OPEN.insert(figlio, g(figlio)+h(figlio))
}} while( goal_test(nodo)== false )
4. return SUCCESS
Intelligenza Artificiale - Problem Solving
42/102
Dimostrazioni
A* è un algoritmo ottimale
A* è un algoritmo completo
Intelligenza Artificiale - Problem Solving
43/102
A* = algoritmo ottimale
Per ASSURDO:
A* espande da OPEN 2 e 2 non è la soluzione ottima
n
*
n0
1. per definizione g(2) > f*2. sia n * nodo foglia (in OPEN)
3. se h è ammissibile allora f(n) ≤ f*
4. 2 viene preferito a n quindi f(n) ≥ f(2)5. da 3 e 4 abbiamo che f* ≥ f(2)
6. dato che 2 è finale allora h(2)=0 e f(2)= g(2) 7. da 5 e 6 abbiamo che f* ≥ g(2) che contraddice il punto 1
Intelligenza Artificiale - Problem Solving
44/102
A* = algoritmo completo
Per ASSURDO: A* ritorna un insuccesso o non termina
1. A* ritorna un insuccesso se OPEN è vuota
2. OPEN si svuota se nessuna foglia ha figli
3. se esiste un tra n0 e allora per ogni n esiste un figlio
4. da 2 e 3 deriva che se esiste allora OPEN non si svuota e
A* non ritorna un insuccesso
5. se è di lunghezza finita allora A* termina anche in grafi infiniti grazie all’uso di g(n): perché g(n) < n
6. due condizioni per la completezza:
- costo di un infinito = - * non infinito
Intelligenza Artificiale - Problem Solving
45/102
Best-First Generale: WA*(Ira Pohl, 1970)
Funzione di valutazione f(n) = (1-w)g(n) + wh(n) w = 0 ricerca breadth-first w = 0,5 ricerca A* w = 1 ricerca Greedy Come cambia il costo della ricerca? w < 0,5 non ha senso, quindi:
Funzione di valutazione f(n) = g(n) + w h(n) Crescendo w la ricerca diventa sempre più “greedy” Il costo delle soluzioni è limitato superiormente da: wC*
(se w > 1)
Intelligenza Artificiale - Problem Solving
46/102
WA*: alcuni risultati sul 15-puzzle
wMosse Nodi
1 52,7 380 x 106
1,5 56,6 500 x 103
2 63,5 79 x 103
6 103,3 10500
99 145,3 7000
Intelligenza Artificiale - Problem Solving
47/102
Iterative Deepening A* (IDA*)(Korf, 1985)
Una innovazione “attesa”
1985: prime soluzioni ottime del gioco del 15
Eredita due qualità: linear space search: O(bd) da DFID ottimalità da A*
E’ completo, complex. temp = O(bd)
Intelligenza Artificiale - Problem Solving
48/102
Algoritmo IDA*
Come funziona: Ha una soglia di costo: threshold.
Funzione di valutazione f(n) = g(n) + h(n)
Ha una LISTA di nodi LIFO
SE f(n) threshold si espande il nodo.
SE la LISTA è vuota si ricominca da capo la ricerca aggiornando threshold
Intelligenza Artificiale - Problem Solving
49/102
Algoritmo IDA*
1. if (goal_test(x0)== true) return SUCCESS2. soglia = g(x0)+h(x0) 3. LISTA.insert(x0)4. do { nodo = LISTA.remove() figli[] = SCS(nodo)
for all figli{ if (g(figlio)+h(figlio) soglia)
LISTA.insert(figlio)}
} while( goal_test(nodo)== false and !LISTA.isEmpty())
if(goal_test(nodo)== true) return SUCCESSelse{
update(soglia) GOTO 3}
£
?
Intelligenza Artificiale - Problem Solving
50/102
2+3 2+3
1+4 1+41+2
0+3IDA* SimulazioneThreshold: 3
Intelligenza Artificiale - Problem Solving
51/102
4+3 4+3
3+43+4
3+23+43+4
3+4
2+52+5 2+5
2+32+3 2+3
1+4 1+41+2
0+3IDA* SimulazioneThreshold: 5
Intelligenza Artificiale - Problem Solving
52/102
6+36+1
5+45+2
4+34+5
3+6
4+54+5
3+63+4
2+3
3+4 3+4
2+52+5
1+4 1+4
2+3
1+2
7+0
0+3IDA* SimulazioneThreshold: 7
Intelligenza Artificiale - Problem Solving
53/102
b =ca. 4
Formalizzazione Problemi: Il Puzzle di Sam Loyd
X = tutte le configurazioni
SCS(x) = tutti gli operatori di x
x0 = configurazione random
g = unitario per ogni SCS
t = configurazione ordinata
N!configurazioni risolvibili
operatori (non-reversibili)
N!/2
b = ca.3
Intelligenza Artificiale - Problem Solving
54/102
Formalizzazione Problemi: Cubo di Rubik
X = tutte le configurazioni
SCS(x) = tutti gli operatori di x
x0 = configurazione random
g = unitario per ogni SCS*
t = configurazione ordinata**
8! 12! 38 212
18
configurazioni risolvibili
operatori utili su x
(8! 12! 38 212)/12
* se si usa costo unitario h(n) deve essere normalizzato a 1!** per usare manhattan si associa ad un lato il colore delle tessere centrali
ca.11
1) Non ha senso ruotare la stessa faccia due volte consecutive
2) Muovere due facce opposte consecutivamente equivale alla sola mossa dell’asse centrale
3) Dopo aver mosso la faccia “A” e poi la faccia “B”, va mossa una delle altre 4 facce rimanenti.