...

Problem Solving

by user

on
Category: Documents
20

views

Report

Comments

Transcript

Problem Solving
Intelligenza Artificiale
Simbolica
m. ernandes, e. trentin
Problem Solving
Introduzione
Intelligenza Artificiale Problem Solving
2/102
“Risolvere problemi”
E’ uno dei processi intellettivi che secondo il
Comportamentismo richiede e definisce
l’“attività intellettuale”.
1.
2.
3.
4.
Induzione
(Apprendimento)
Sussunzione
(Riconoscimento)
Ragionamento
(Deduzione)
Problem Solving (implica tutte le precedenti)
Approccio comportamentista: Test di Turing
Intelligenza Artificiale Problem Solving
3/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
4/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
5/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

6/102
Cosa è un problema? (II)
Formalizzazione:

5-tupla di elementi:
3
7
6
1
5
2
4
8
P={X,SCS,x0,g,t}
1
2
3
4
5
6
7
8
Formalizzare = astrarre un problema
Intelligenza Artificiale Problem Solving
7/102
Problem Solving
Ricerca nello spazio degli stati
“Blind” Search
Intelligenza Artificiale Problem Solving
8/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
9/102
Valutare le strategie
4 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
10/102

Ricerca Cieca
Come espandere un nodo?
Coda dei nodi aperti:
CODA.insert(node);
 node = CODA.remove();

L’ordinamento dei nodi in CODA
determina la strategia di ricerca
Intelligenza Artificiale Problem Solving
11/102
Algoritmo Generale di Search
Struttura Generale
1. if (goal_test(x0)== true) return SUCCESS
2. 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
12/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
13/102
“Breadth First” - simulazione
GOAL
Intelligenza Artificiale Problem Solving
14/102
Alcuni numeri
depth
N° nodi
Tempo
Memoria
2
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 b =10, velocità
>1014 ricerca =32
TB
100anni
mila nodi/sec.,>10000
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
15/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
16/102
“Depth First” - simulazione
GOAL
Intelligenza Artificiale Problem Solving
backtracking
17/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
18/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 ottimale
Complessità spaziale: O(bd/2)
Complessità temporale: O(bd/2)
Intelligenza Artificiale Problem Solving
19/102
Ricerca Bidirezionale - Simulazione
GOAL
X0
Intelligenza Artificiale Problem Solving
20/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
21/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
bd(b/(b-1))2
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.
Intelligenza Artificiale Problem Solving
22/102
Iterative Deepening - sim
Iterazione: 0
Intelligenza Artificiale Problem Solving
23/102
Iterative Deepening - sim
Iterazione: 1
Intelligenza Artificiale Problem Solving
24/102
Iterative Deepening - sim
Iterazione: 2
Intelligenza Artificiale Problem Solving
25/102
Iterative Deepening - sim
Iterazione: 3
GOAL
Intelligenza Artificiale Problem Solving
26/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
27/102
Ricerca a costo uniforme - Sim
4
6
2
2
1
4
8
6
6
5
2
6
4
3
5
1
5
6
2
GOAL
COSTO:
Intelligenza Artificiale Problem Solving
7
6
4
3
2
0
28/102
Problem Solving
Ricerca nello spazio degli stati
“Heuristic” Search
Intelligenza Artificiale Problem Solving
29/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
30/102
Come usare un’euristica?
X0
g(n)
Actual State (n)
f(n)
h(n)
Goal State
Intelligenza Artificiale Problem Solving
31/102
Due Esempi di Euristiche
3
2
8
5
7
6
4
1
Tessere fuori posto
Distanza di Manhattan
hfp(n) = 5
hm(n) = 11
Intelligenza Artificiale Problem Solving
32/102

n
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
Intelligenza Artificiale Problem Solving
n
n
33/102
Proprietà generali delle Euristiche 2
n’
Consistenza:

h(n) è consistente se
h(n’)
c(n,n’)
n
h(n)
h
(
n
)

c
(
n
,'
n
)

h
(
n
'
)

(
n
,'
n
)
Monotonicità:

h(n) è monotona se
h
(
n
)

c
(
n
,
n
'
)(

h
n
'
)

n
|
n
'

S
C
S
(
n
)
Intelligenza Artificiale Problem Solving
34/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
35/102
2
Esempi di Euristiche Ammissibili
3 7 4
6 1
5 8 2
A) Tessere Fuori Posto
B) Distanza di Manhattan
C) 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 2 per
movimento diagonale)
Intelligenza Artificiale Problem Solving
36/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
37/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
38/102
Hill-Climbing Search
Si usa unicamente la funzione euristica
Non c’è backtracking
Non si usa memoria
4
5
4
Non è ottimale
Non è completo

Minimi locali
3
3
5
0
GOAL
Intelligenza Artificiale Problem Solving
39/102
Best-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
Intelligenza Artificiale Problem Solving
40/102
Algoritmo A*
1. if (goal_test(x0)== true) return SUCCESS
2. 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
41/102
Dimostrazioni
A* è un algoritmo ottimale
A* è un algoritmo completo
Intelligenza Artificiale Problem Solving
42/102
A* = algoritmo ottimale
n0
Per ASSURDO:
A* espande da OPEN 2 e 2 non è la soluzione ottima
1. per definizione g(2) > f*
2. sia n  * nodo foglia (in OPEN)
3. se h è ammissibile allora f(n) ≤ f*
n
*
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
43/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
44/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
45/102
WA*: 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
Intelligenza Artificiale Problem Solving
46/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
47/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
48/102
£
Algoritmo IDA*
1.
2.
3.
4.
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
}
?
Intelligenza Artificiale Problem Solving
49/102
IDA* Simulazione
1+4
0+3
1+2
Threshold: 3
1+4
2+3 2+3
Intelligenza Artificiale Problem Solving
50/102
0+3
IDA* Simulazione
1+4
2+5
2+5
3+4
Threshold: 5
1+4
1+2
2+3 2+3
3+4
3+2
4+3
Intelligenza Artificiale Problem Solving
2+5
3+4
2+3
3+4
3+4
4+3
51/102
0+3
IDA* Simulazione
1+4
2+5
3+6
4+5
3+4
2+5
3+6
1+2
Threshold: 7
1+4
2+3 2+3
3+4
3+4
4+5
4+5 4+3
5+2 5+4
6+1 - 6+3
Intelligenza7+0
Artificiale
Problem Solving
52/102
Formalizzazione Problemi:
Il Puzzle di Sam Loyd
configurazioni
risolvibili
X = tutte
le configurazioni
operatori
(non-reversibili)
SCS(x) = tutti
gli operatori
di x
N!N!/2
= ca.3
bb
=ca.
4
x0 = configurazione random
g = unitario per ogni SCS
t = configurazione ordinata
Intelligenza Artificiale Problem Solving
53/102
Formalizzazione Problemi:
Cubo di Rubik
1) Non ha senso ruotare la stessa faccia due volte
configurazioni
risolvibili
(8!
X = tutte
le configurazioni
8! 12! 38 212 )/12
consecutive
2) Muovere due facce opposte consecutivamente equivale
operatori
utilicentrale
su xdi x
18
SCS(x)
= tutti
glidell’asse
operatori
ca.11
alla sola
mossa
3) Dopo aver mosso la faccia “A” e poi la faccia “B”, va
una delle altre random
4 facce rimanenti.
x0 = mossa
configurazione
g = unitario per ogni SCS*
t = configurazione ordinata**
* 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
Intelligenza Artificiale Problem Solving
54/102
Fly UP