Title: Intelligenza Artificiale Simbolica
1Intelligenza Artificiale Simbolica
2Problem Solving
3Risolvere problemi
- E uno dei processi intellettivi che secondo il
Comportamentismo richiede e definisce lattività
intellettuale. - Induzione (Apprendimento)
- Sussunzione (Riconoscimento)
- Ragionamento (Deduzione)
- Problem Solving (implica tutte le precedenti)
- Approccio comportamentista Test di Turing
4Come costruire un Problem Solver ?
- Approccio Human-oriented (cognitivista)
- Deve SIMULARE lattività intelligente
- Risolvere problemi pensando come un uomo
- Approccio Machine-oriented (comport.)
- Deve MANIFESTARE attività intelligente
- Risolvere i problemi al meglio
5Approccio 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
6Cosa è 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
7Cosa è un problema? (II)
- Formalizzazione
- 5-tupla di elementi PX,SCS,x0,g,t
- Formalizzare astrarre un problema
8Problem Solving
Blind Search
9Grafi 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?
10Valutare le strategie
- Le regole doro di J.Pearl (1984)
- Non dimenticarsi di cercare sotto ogni pietra
- Non alzare due volte la stessa
11Ricerca Cieca
- Come espandere un nodo?
- Coda dei nodi aperti
- CODA.insert(node)
- node CODA.remove()
- Lordinamento dei nodi in CODA
- determina la strategia di ricerca
12Algoritmo Generale di Search
- if (goal_test(x0) true) return SUCCESS
- else CODA.insert(x0)
- do
- if (CODA.isEmpty()) return FAILURE
- nodo CODA.remove()
- figli SCS(nodo)
- CODA.insert(figli)
- while( goal_test(nodo) false )
- 4. return SUCCESS
13Breadth FirstRicerca in Ampiezza
- Usa una memoria FIFO
- E un algoritmo difensivo
- E completo e ottimale
- Complessità spaziale O(bd)
- Complessità temporale O(bd)
14Breadth First - simulazione
GOAL
15Alcuni numeri
depth N nodi Tempo Memoria
2 111 1 msec 11 KB
4 11111 0,1 sec 1 MB
6 gt106 10 sec gt100 MB
8 gt108 17 min gt10 GB
10 gt1010 28 ore gt1 TB
12 gt1012 116 giorni gt100 TB
14 gt1014 32 anni gt10000 TB
b 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.
16Depth FirstRicerca in Profondità
- Usa una memoria LIFO
- E un algoritmo aggressivo
- E non completo e non ottimale
- Complessità temporale O(bd)
- Complessità spaziale O(db)
17Depth First - simulazione
backtracking
GOAL
18Come 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
19Ricerca 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 ottimale
- Complessità spaziale O(bd/2)
- Complessità temporale O(bd/2)
20Ricerca Bidirezionale - Simulazione
GOAL
X0
21Ricerca 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 lltd) né ottimale
- Complessità spaziale O(bl)
- Complessità temporale O(bl)
- PRO evita loop infiniti senza usare memoria!
- CON richiede conoscenza a priori del problema
22Iterative 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 (d1)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))2
23Iterative Deepening - sim
Iterazione 0
24Iterative Deepening - sim
Iterazione 1
25Iterative Deepening - sim
Iterazione 2
26Iterative Deepening - sim
Iterazione 3
GOAL
27Ricerca 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) lt g(SCS(n)), cioè costo non
negativo - Altrimenti non cè strategia che tenga!
- E completa e ottimale.
28Ricerca a costo uniforme - Sim
4
2
4
6
6
5
2
1
6
8
5
6
1
4
5
6
2
3
2
GOAL
0
2
3
4
6
7
COSTO
29Problem Solving
Heuristic Search
30Cosa è uneuristica?
- 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
31Come usare uneuristica?
X0
g(n)
Actual State (n)
f(n)
h(n)
Goal State
32Due Esempi di Euristiche
Tessere fuori posto hfp(n) 5
Distanza di Manhattan hm(n) 11
33Proprietà 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
34Proprietà generali delle Euristiche 2
- Consistenza
- h(n) è consistente se
-
- Monotonicità
- h(n) è monotona se
35Dim 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)
36Esempi di Euristiche Ammissibili
A) Tessere Fuori Posto B) Distanza di
Manhattan C) h3hfp 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)
37Euristica 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
allobiettivo
38Algoritmi 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
39Hill-Climbing Search
- Si usa unicamente la funzione euristica
- Non cè backtracking
- Non si usa memoria
- Non è ottimale
- Non è completo
- Minimi locali
4
5
4
5
3
3
0
GOAL
40Best-First Ottimale A(Hart, Nilsson and
Raphael, 1968)
- A un nome ambizioso
- Funzione di valutazione ? f(n)g(n)h(n)
- Caratteristiche
- Ottimale
- Completo
- Complex time space O(bd)
- Ottimamente efficiente
41Algoritmo A
- if (goal_test(x0) true) return SUCCESS
- else OPEN.insert(x0, g(x0)h(x0) )
- 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
42Dimostrazioni
- A è un algoritmo ottimale
- A è un algoritmo completo
43A algoritmo ottimale
n0
- Per ASSURDO
- A espande da OPEN ?2 e ?2 non è la soluzione
ottima
n
1. per definizione g(?2) gt 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
44A 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 alluso di g(n)
perché g(n) lt ? ?n
6. due condizioni per la completezza - costo
di un ? infinito ? - ? non infinito
45Best-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 lt 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 gt 1)
46WA alcuni risultati sul 15-puzzle
w Mosse 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
47Iterative 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)
48Algoritmo 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
49Algoritmo IDA
- if (goal_test(x0) true) return SUCCESS
- soglia g(x0)h(x0)
- LISTA.insert(x0)
- 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 SUCCESS
- else
- update(soglia) GOTO 3
-
?
50IDA Simulazione
03
Threshold
3
51IDA Simulazione
03
Threshold
5
52IDA Simulazione
03
Threshold
7
53Formalizzazione Problemi Il Puzzle di Sam Loyd
configurazioni risolvibili
N!/2
N!
- X tutte le configurazioni
- SCS(x) tutti gli operatori di x
- x0 configurazione random
- g unitario per ogni SCS
- t configurazione ordinata
operatori (non-reversibili)
b ca.3
b ca. 4
54Formalizzazione Problemi Cubo di Rubik
- Non ha senso ruotare la stessa faccia due volte
consecutive - Muovere due facce opposte consecutivamente
equivale alla sola mossa dellasse centrale - Dopo aver mosso la faccia A e poi la faccia
B, va mossa una delle altre 4 facce rimanenti.
configurazioni risolvibili
- 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)/12
8! 12! 38 212
operatori utili su x
18
ca.11
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