prob solving 2007 - marco/ia/materiale_didattico/prob_solving... · intelligenza artificiale -...

27
Intelligenza Artificiale marco ernandes email: ernandes@dii . unisi . it Gennaio – Aprile 2007 Intelligenza Artificiale - Problem Solving 1/105 Problem Solving Introduzione Introduzione Intelligenza Artificiale - Problem Solving 2/105 Intelligenza Artificiale - Problem Solving 3/105 “Risolvere problemi” E’ uno dei processi intellettivi che secondo il Comportamentismo richiede e definisce l’“attività intellettuale”. !" Induzione (Apprendimento) #" Sussunzione (Riconoscimento) $" Ragionamento (Deduzione) %" Problem Solving (implica tutte le precedenti) Approccio comportamentista: Test di Turing

Upload: phambao

Post on 08-Dec-2018

216 views

Category:

Documents


1 download

TRANSCRIPT

Intelligenza Artificiale

marco ernandesemail: [email protected]

Gennaio – Aprile 2007

Intelligenza Artificiale - Problem Solving 1/105

Problem Solving

IntroduzioneIntroduzione

Intelligenza Artificiale - Problem Solving 2/105 Intelligenza Artificiale - Problem Solving 3/105

“Risolvere problemi”

E’ uno dei processi intellettivi che secondo il

Comportamentismo richiede e definisce

l’“attività intellettuale”.

!" Induzione (Apprendimento)

#" Sussunzione (Riconoscimento)

$" Ragionamento (Deduzione)

%" Problem Solving (implica tutte le precedenti)

Approccio comportamentista: Test di Turing

Intelligenza Artificiale - Problem Solving 4/105

PS: uomo & macchina

Il PS è un’attività tipicamente definita come “razionale”.

Razionale = ciò che si basa su procedimenti esprimibiliin formula chiusa (algoritmi)

L’AI ha dimostrato che più un task richiede “razionalità”in senso stretto più l’uomo perde il confronto con lamacchina.

Hard Computing vs. Soft Computing

Intelligenza Artificiale - Problem Solving 5/105

“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 6/105

A cosa “serve” un Problem Solver?

Spiegare in maniera computazionale

come l’uomo risolve i problemi

Fornire all’uomo uno strumento di

supporto

Intelligenza Artificiale - Problem Solving 7/105

GPS: General Problem Solver(Newell, Simon e Shaw - 1958)

Risultato dell’approccio cognitivo

Esperienza previa con “Logic Theorist”

Uso di resoconti di PS umano

Analisi mezzi-fini

Intelligenza Artificiale - Problem Solving 8/105

Analisi Mezzi-Fini

a) Identificare la più grande differenza tra stato attuale e statodesiderato.

b) Creare un sotto-obiettivo che cancelli questa differenza.

c) Selezionare un operatore che raggiunga questo sotto-obiettivo

d) SE l’operatore può essere applicato ALLORA lo si applica e,arrivati nello stato successivo, si riapplica l’A-M-F.

e) SE l’operatore non può essere applicato ALLORA si usa l’A-M-F in modo ricorsivo per rimuovere la condizione di blocco.

Intelligenza Artificiale - Problem Solving 9/105

“Bias” della razionalità

Aristotele e l’ “animale razionale”

3 limiti della razionalità& Informativi

& Cognitivi

& Deliberativi

Uomo “irrazionale” nella presa di decisioni& Paradosso di Allais

& Ragionamento non Bayesiano

Per “irrazionalità” si intende contradditorietà diacronica nella presa didecisioni

Intelligenza Artificiale - Problem Solving 10/105

Paradosso di Allais (’53)

Tra 2 scommesse, quale preferite?

& A) vincere 30 Euro con probabilità 100%

& B) vincere 45 Euro con probabilità 80%

Eppure… l’utilità attesa è:

& A = 30 x 1,0 = 30 Euro

& B = 45 x 0,8 = 36 Euro

Il 78% degli intervistati risponde A!

Intelligenza Artificiale - Problem Solving 11/105

Kahneman & Tversky (’78)

Cosa preferite?

& A) vincere 120 Euro con probabilità 25%

& B) vincere 180 Euro con probabilità 20%

Eppure… l’utilità attesa è sempre la stessa:

& A = 120 x 0,25 = 30 Euro

& B = 180 x 0,20 = 36 Euro

Oltre il 50% risponde B!

Intelligenza Artificiale - Problem Solving 12/105

Ragionamento non-bayesiano

Secondo il Teorema di Bayes:

& P(M|T) = P(T|M) x P(M) / P(T)

& P (M+ | T+) = 0.99 x 0.001 =0.00099 (0,1%) ' Malato

& P (M- | T+ ) = 0.02 x 0.999 =0.01998 (2%) ' Sano

Mario si sottopone al test e risulta positivo. E’ più probabile chesia malato o che sia sano?

A Siena si è diffusa una malattia che interessa un soggetto su 1000. Seuna persona ammalata si sottopone al test diagnostico la malattia vienerilevata nel 99% dei casi. Se una persona sana si sottopone allo stessotest vengono rilevati un 2% di falsi positivi.

Cap. 14

Intelligenza Artificiale - Problem Solving 13/105

Alcune Conclusioni

Perde credito l’ipotesi simulativa su basi razionali.

Il ragionamento umano (PS e decisioni) non è

simulabile “razionalmente”

& E’ studiato dalla Psicologia Cognitiva

Può avere più senso usare le macchine:

& Sfruttando le loro potenzialità

& Come supporto per l’uomo

& (es: Problem Solving attuale, Sistemi Esperti)

Intelligenza Artificiale - Problem Solving 14/105

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 15/105

Cosa è un problema? (I)

“Problema” è un concetto non definibile, soloesemplificabile. (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 16/105

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

Ha senso quindi pensare ad un GPS?

Intelligenza Artificiale - Problem Solving 17/105

I giochi nell’IA e non solo

M. Minsky (1968):

“i giochi non vengono scelti perché sono chiari e semplici, ma

perché ci danno la massima complessità con le minime

strutture iniziali”

Pungolo Scientifico& Matematica: teoria dei grafi e complessità

& Computer Science: database e calcolo parallelo

& Economia: teoria dei giochi

Intelligenza Artificiale - Problem Solving 18/105

Teoria dei Giochi

Von Neumann & Morgenstern (1944)

Teoria della Decisione Teoria dei Giochi

Analizzare il comportamento

Individuale le cui azioni hanno

effetto diretto

Analizzare il comportamento

Individuale le cui azioni hanno effetto

che dipende dalle scelte degli altri

Scommesse &

Mondo dei Puzzle

Mondo dei Giochi

a + giocatori

Intelligenza Artificiale - Problem Solving 19/105

Problem Solving

Ricerca nello spazio degli statiRicerca nello spazio degli stati

“Blind” Search

Intelligenza Artificiale - Problem Solving 20/105

Ruolo del Search nell’AI

Anni ’60 – ‘80: cuore dell’AI

& “Tutto” è Search o Knowledge

Recentemente… nei textbooks& Nilsson (1980): 17%

& Rich (1983): 31%

& Norvig & Russel (1995): 13 %

& Pool, Mackworth & Goebel (1998): 10%

Intelligenza Artificiale - Problem Solving 21/105

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 22/105

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 23/105

Ricerca Cieca

Come espandere un nodo?

CodaCoda dei nodi aperti:

& CODA.insert(node);

& node = CODA.remove();

L’ordinamento dei nodi in CODA

determina la strategia di ricerca

Intelligenza Artificiale - Problem Solving 24/105

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 25/105

“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 26/105

“Breadth First” - simulazione

GOAL

Intelligenza Artificiale - Problem Solving 27/105

Alcuni numeri

1 MB0,1 sec111114

>10 GB17 min>1088

>100 TB116 giorni>101212

>10000 TB

>1 TB

>100 MB

11 KB

Memoria

>1014

>1010

>106

111

N° nodi

32 anni14

28 ore10

10 sec6

1 msec2

Tempodepth

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.

Intelligenza Artificiale - Problem Solving 28/105

“Depth First”Ricerca in Profondità

Usa una memoria LIFO

E’ un algoritmo “aggressivo”

E’ non completo e non ottimale

Complessità temporale: O(bm)

Complessità spaziale: O(mb)

Intelligenza Artificiale - Problem Solving 29/105

“Depth First” - simulazione

GOALbacktracking

Intelligenza Artificiale - Problem Solving 30/105

Come migliorarli?

Conoscendo lo stato goal

Non ripetendo gli stati& Evitando di espandere lo stato di provenienza

& Che effetto ha sui costi di ricerca?

& Evitando i cicli

& In generale: evitando di generare nodi con statigià visitati nella ricerca

Conoscendo il costo degli operatori

Intelligenza Artificiale - Problem Solving 31/105

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 32/105

Ricerca Bidirezionale - Simulazione

GOAL

X0

Intelligenza Artificiale - Problem Solving 33/105

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 34/105

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 2aumentando 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. Quanto?

bd(b/(b-1))2

Intelligenza Artificiale - Problem Solving 35/105

Iterative Deepening - sim

Iterazione: 1

Intelligenza Artificiale - Problem Solving 36/105

Iterative Deepening - sim

Iterazione: 2

Intelligenza Artificiale - Problem Solving 37/105

Iterative Deepening - sim

GOAL

Iterazione: 3

Intelligenza Artificiale - Problem Solving 38/105

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 39/105

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 40/105

Dijkstra?

Sì. Ricerca Uniforme = Algoritmo Dijkstra

E’ il progenitore degli algoritmi Best-First

Ricerca Operativa ' Ricerca Cieca (AI)

Complex temp. Dijkstra = O(X2)

Complex temp. Unif-cost = O(bd)

Perché due stime diverse?FF

Intelligenza Artificiale - Problem Solving 41/105

Branching Factor

Branching Factor Naive

Branching Factor Asintotico

Branching Factor Effettivo

7

25 8

16

43

2

54

31 C S C

C S C

CS SS

CC SC

1 = fcc+fcs+fss+fsc

bfcc = fsc

bfcs = fcc

bfss=fcs

bfsc= 2fss+fcs

b4 - b - 2 = 0

Intelligenza Artificiale - Problem Solving 42/105

Confronto tra bnaive e basyn

2,2

2,2100=1,7 x 1034

2

253=9 x 1015

1,67

1,6722=8 x 104

1,33

bnaive

2,37

2,37100=3 x 1037

24-Puzzle

2,13

2,1353=2,5 x 1017

15-Puzzle

1,73

1,7322=1,7 x 105

8-Puzzle

1,355-Puzzle

basyn

Intelligenza Artificiale - Problem Solving 43/105

Branching factor effettivo b*

Fattore di ramificazione reale di un processo di ricerca.

E’ valutabile solo a posteriori! Quando conosci il numero

di nodi visitati (N).

N = 1 + b* + b*2 + ... + b*d = (b*d+1-1)/(b*-1).

(approx. ) .

b* è utile per testare la efficienza di un algoritmo (o di

una euristica)

es: trovare sol a profondità 5 in 52 nodi, b* = 1,92

Intelligenza Artificiale - Problem Solving 44/105

Problem Solving

Ricerca nello spazio degli statiRicerca nello spazio degli stati

“Heuristic” Search

Intelligenza Artificiale - Problem Solving 45/105

Cosa è un’euristica?

“Qualsiasi cosa” che serva di supporto in unprocesso decisionale

E’ una conoscenza, magari imperfetta, deldominio 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 46/105

Come usare un’euristica?

X0

Actual State (n)

Goal State

g(n)

h(n)

f(n)

Intelligenza Artificiale - Problem Solving 47/105

Ricerca Informata

1 2 3

Strategia di ricerca Euristica Politica f(n)= g(n) e h(n)

3 pilastri

Intelligenza Artificiale - Problem Solving 48/105

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 49/105

Proprietà generali delle Euristiche

Ammissibilità:& h(n) è ammissibile se h(n) ! h*(n) !n

Dominanza:& h2 domina h1 se h1(n) ! h2(n) !n

e h1 & h2 sono ammissibili

Intelligenza Artificiale - Problem Solving 50/105

Proprietà generali delle Euristiche 2

Consistenza:

& h(n) è consistente se

h(n) " c(n,n’) + h(n’) !(n,n’)

Monotonicità:

& h(n) è monotona se

h(n) " c(n,n’) + h(n’) ! n,n’ $ SCS(n)

n

c(n,n’) h(n’)

h(n)

n’

#

Intelligenza Artificiale - Problem Solving 51/105

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 52/105

Proprietà generali delle Euristiche 3

Ammissibilità e Ottimalità:

& SE h(n) è ammissibile

& SE l’algoritmo usato è Best-First

& SE h(n) non viene MAI pesato più di g(n)

& ALLORA la Ricerca è ottimale

Formalmente: ! "( ) *f n f n

Intelligenza Artificiale - Problem Solving 53/105

Proprietà generali delle Euristiche 4

Altre conseguenze:

& se un’euristica è monotona allora è ammissibile

& se un’euristica è monotona allora f(.) non decresce

(per cui vale f(n) " f* !n)

& se h è non ammissibile la si può rendere ammissibilegarantendone il vincolo di monotonicità!

& se h1 domina h2 tutti i nodi espansi usando BEST-FIRSTe h1 sono espansi usando h2

& Ogni nodo n’ espanso da un algoritmo BEST-FIRST conh ammissibile costruisce un percorso ottimo tra n0 e n’

Intelligenza Artificiale - Problem Solving 54/105

Come ottenere un’euristica

ammissibile?

7

85 2

16

43

Analisi dei vincoli sugli operatori

Per muovere una tessera da A a B:

3) A e B devono essere confinanti

2) B deve essere una casella vuota

1) A e B devono invertire le proprie posizioni

Rilassando 1,2,3,4: h(n) = 1 ' non c’è informazione

4) Un solo movimento per volta

Rilassando 1,2,3: h1(n) = 7 ' hfp(n)

Rilassando 1,2: h2(n) = 17 ' hm(n)

Non rilassando: si deve risolvere il problema stesso!

Heuristic generation

by Abstraction

ABSOLVER(Prieditis ‘93)

Intelligenza Artificiale - Problem Solving 55/105

Esempi di Euristiche Ammissibili

7

85 2

16

43 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 per

movimento diagonale)

2

2

Intelligenza Artificiale - Problem Solving 56/105

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 57/105

6

15

10

1

5

14

12

13

9

8

11

2 3

7

4 Per ogni permutazione delle tesserePer ogni permutazione delle tessere

““fringefringe”” si risolve il sottoproblema, si risolve il sottoproblema,

considerando il pivot e le altre tessere. Siconsiderando il pivot e le altre tessere. Si

memorizza in un DB il numero di mosse.memorizza in un DB il numero di mosse.

Si fa lo stesso per lSi fa lo stesso per l’’altro Pattern.altro Pattern.

Pattern Databases(Culberson&Schaeffer 1996)

Pattern Database è la prima euristica memory-based.

Vi sono N! / (N!-n!) permutazioni delle tessere fringe compresoil pivot. Fringe del 15-puzzle = 519 milioni (495 MB memoria).

Usando solo il fringe: speedup* su hm = 6, nodi = 1/346

Usando il doppio Pattern: speedup = 12, nodi = 1/2000

Grandi miglioramenti con Disjoint Pattern DB (Korf & Taylor, ‘02)

Intelligenza Artificiale - Problem Solving 58/105

Effetti delle euristiche

Nella pratica: migliorano i tempi della ricerca.

In teoria: solo un’euristica “oracolare” elimina lacomplessità esponenziale!

& Constant Absolute Error:

h*(n)-h(n) = costante ' costo di ricerca lineare b*d

& Constant Relative Error:

h*(n)-h(n) = dipende da h* ' costo di ricerca bd

La ricerca è asintoticamente cieca.

Intelligenza Artificiale - Problem Solving 59/105

Algoritmi di Ricerca Euristica

Hill-Climbing

Best-First Search& Algoritmi Greedy

& Algoritmi A*

& Algoritmo Generale: WA*

Memory Bounded Search

& Linear search (IDA*), mem-bounded A* (SMA*)

Bidirectional Heuristic Search& Front-to-end (BHPA*),

& Front-to-front (perimeter search: BIDA*)

Intelligenza Artificiale - Problem Solving 60/105

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 61/105

“Greedy” Search

Ricerca Best-First che minimizza f(n) = h(n)

Memorizza tutti i nodi frontiera

1. if (goal_test(x0)== true) return SUCCESS

2. else CODA.insert(x0, h(x0) )

3. do {

if (CODA.isEmpty()) return FAILURE

nodo = CODA.remove(0)

figli[] = SCS(nodo)

CODA.insert(figli, h(figli))

} while( goal_test(nodo)== false )

4. return SUCCESS

Intelligenza Artificiale - Problem Solving 62/105

“Greedy” Search 2

Proprietà:& Non Ottimale

& Non Completo (senza l’Hash)

& Complex time & space: O(bm)

Miglioramenti per non ripetere stati:& check sulla CODA dei nodi da espandere

& aggiunta di tabella HASH per nodi già espansi

& lista dei nodi espansi ' CLOSED

& lista dei nodi da espandere ' OPEN

Intelligenza Artificiale - Problem Solving 63/105

“Greedy Search” - simulazione

7 85 6 7 7 8

3 5 4 2

3 0

3

GOAL

5 4 2

3

7 8 8 7

5 6

3

Intelligenza Artificiale - Problem Solving 64/105

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 (anche senza l’Hash!!)

& Complex time & space: O(bd)

& Ottimamente efficiente

Intelligenza Artificiale - Problem Solving 65/105

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 (!OPEN.contains(figlio))

AND if (!CLOSED.contains(figlio))

OPEN.insert(figlio, g(figlio)+h(figlio))

}

} while( goal_test(nodo)== false )

4. return SUCCESS

Se “figlio” è in

OPEN e ha

f() minore, la

si aggiorna!

Intelligenza Artificiale - Problem Solving 66/105

Dimostrazioni

A* è un algoritmo ottimale

A* è un algoritmo completo

Intelligenza Artificiale - Problem Solving 67/105

A* = algoritmo ottimale

Per ASSURDO:

A* espande da OPEN #2 e #2 non è la soluzione ottima

n

#* #2

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 68/105

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 69/105

Confronto tra Greedy e A*

Robot Navigation

h(n) = Distanza Manhattan

g(n,SCS(n)) = 1

Intelligenza Artificiale - Problem Solving 70/105

4

3

27 8

1 5

6

g=0, h=6

4 3

27 8

1 5

6

g=1, h=7

4

3

2

7 8

1 5

6

g=1, h=5

4

3

27 8

1 5

6

g=1, h=7

4

3

27 8

1 5

6

g=1, h=7

4

3

2

7 8

1 5

6

4

3

2

7 8

1 5

6

g=2, h=4

g=2, h=6

4

3

27 8

1

56

g=2, h=6

4

3

27

8

1 5

6

g=2, h=8

4

3

2

7 8

1 5

6

g=3, h=5

4

3

27 8

1

56

g=4, h=6

4

3

27 8

1

5

6

g=4, h=6

g=4, h=4

4

3

2

7 8

1

5

6

4

3

2

7 8

1 5

6

g=4, h=6

4

3

2

7 8

1

5

6

g=5, h=3

4

3

2

7 8

1

5

6

g=6, h=4

4

32

7 8

1

5

6

g=6, h=2

g=3, h=5

4

3

27 8

1

56 goal

Simulazione di A*

Intelligenza Artificiale - Problem Solving 71/105

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*

Intelligenza Artificiale - Problem Solving 72/105

WA*: alcuni risultati sul 15-puzzle

500 x 10356,61,5

7000145,399

103,3

63,5

52,7

Mosse

105006

79 x 1032

380 x 1061

Nodiw

Intelligenza Artificiale - Problem Solving 73/105

WA* Esempio: maze problem

O

X

w = 1

w = 2

w = 5

Intelligenza Artificiale - Problem Solving 74/105

16+615+714+813+912+1011+1110+129+138+147+156+16

17+51+112+123+134+145+15

18+40+10

19+3

20+2

22+221+117+7

23+1X

15+9

w = 1

WA* Esempio: maze problem

Intelligenza Artificiale - Problem Solving 75/105

5+30

O1+222+24

3+224+24

28+427+65+22

30+429+226+47+186+20

31+2X25+224+423+624+128+169+18

22+818+1217+1414+1613+1810+20

21+1020+1219+1416+1615+1812+2011+22

w = 2

WA* Esempio: maze problem

Intelligenza Artificiale - Problem Solving 76/105

2+401+45O1+55

9+258+303+354+40

26+1025+1510+207+256+305+35

28+1027+524+1011+1512+2013+2514+3015+3516+40

29+5X23+522+1021+1520+2019+2518+3017+35

24+20

w = 5

WA* Esempio: maze problem

Intelligenza Artificiale - Problem Solving 77/105

O

X

O

X

O

X

w = 1

CLOSED=41

OPEN=18

d = 24

wC* = 24

w = 2

CLOSED=66

OPEN=18

d = 32

wC* = 48

w = 5

CLOSED=37

OPEN=16

d = 30

wC* = 120

WA* Esempio: maze problem

Intelligenza Artificiale - Problem Solving 78/105

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 79/105

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 80/105

Algoritmo IDA*

1. if (goal_test(x0)== true) return SUCCESS

2. 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 SUCCESS

else{

update(soglia)

GOTO 3

}

£

?

La nuova soglia

è data dal

minore f(n) fuori

soglia nella

iterazione

precedente

Intelligenza Artificiale - Problem Solving 81/105

2+3 2+3

1+4 1+41+2

0+3IDA* SimulazioneThreshold: 03

Intelligenza Artificiale - Problem Solving 82/105

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 83/105

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 84/105

IDA*:difetti

Non è ottimamente efficiente:

& Ripete i nodi delle iterazioni precedenti (incidepoco, specie se b è grande)

& Ripete nodi nella stessa iterazione

Funziona solo se:& costo degli operatori del problema hanno

valore discreto e (quasi) costante

& le valutazioni euristiche hanno valore discreto

& altrimenti…

= O(b2d )

bd(b/(b-1))2

(d+1)1 + (d)b + (d-1)b2 + … + (1)bd

ii=0

bd

/

Intelligenza Artificiale - Problem Solving 85/105

Miglioramenti ad A* e IDA*

A*& A parità di f(n): si deve preferire min(h(n))

& Implementare OPEN con Array di Hashtable& Si prelevano i nodi da OPEN[min f(n)]

IDA*& Sfruttare l’informazione delle iterazioni precedenti

& Espansione nodi: ordinamento dei figli

& Tenere in memoria una transposition table deinodi già visitati per evitare ripetizioni

& -40% visite sul 15-puzzle

Intelligenza Artificiale - Problem Solving 86/105

Simplified Memory-Bounded A* (SMA*)(Russel, ’92)

SMA* è un A* che adatta la ricerca alla quantità dimemoria disponibile.

Se la mem è esaurita si “dimenticano” dei nodi ndella frontiera e più in alto nell’albero si fa backupdel minimo f(n) dei nodi dimenticati.

Completata l’espansione di n si aggiorna f(n) alminimo f(.) osservato tra i nodi successori di n

E’ ottimale se c’è mem sufficiente per il camminorisolutivo ottimale

Se c’è mem per tutto l’albero SMA* coincide con A*

Rispetto ad IDA*: quando conviene e quando no?

Intelligenza Artificiale - Problem Solving 87/105

Simplified Memory-Bounded A* (SMA*)

12

2420

15 13

25

35 30 24 29

18

12 12

15

13

15 13

!

13

13

(15)

15

15 24

!

15

15

(24)

20

20

15

(!)

(24)

ES:

MAX num nodi = 3

In giallo i nodi GOAL

I valori sono gli f(n)

24

24(!)

15(15)

Intelligenza Artificiale - Problem Solving 88/105

BHPA* - Bidirectional A*(Pohl ‘71)

Bi-directional Heuristic Path Algorithm compie due

ricerche A* “simultanee” in direzioni opposte usando 2

euristiche: una forward (hf ) e una backward (hb).

Ad ogni espansione la direzione è scelta con il criterio

della cardinalità:

& if |OPENf| < |OPENb| then dir = f else dir = b

L’algoritmo termina se la migliore soluzione trovata Lmin

:

Questo vincolo di terminazione

rende BHPA* poco efficiente!

Lmin# max[ minn!OPEN f

ff (n), minn!OPENb

fb (n)]

s t

n’

n’’

hf(n’)

hb(n’’)

front-to-end heuristics

Intelligenza Artificiale - Problem Solving 89/105

Il problema della ricerca front-to-end

A* è più efficiente di BHPA*! Perchè?

& #(BHPA) ! 2(#A*) e non #(BHPA) ! "#(A*) come dovrebbe risultare

dalla blind search theory.

“Metafora del Missile”?

& Le due ricerche si sorpassano

senza toccarsi, come due missili?

& Questa congettura (Pohl, Nilsson) è falsa!

Le due ricerche vanno una attraverso l’altra.

Il vero problema è la garanzia di ottimalità.

Intelligenza Artificiale - Problem Solving 90/105

Front-to-front perimeter search(BIDA*, Manzini ‘95)

BIDA* si basa su due step distinti:

& una ricerca breadth-first visita tutti i nodi attorno al target e

poi vengono memorizzati i nodi della frontiera (perimeter)

con i loro valori di h* value (k nella figura sotto)

& ricerca IDA* forward usando front-to-front evaluations

front-to-front evaluations sono calcolate così:

& Per maggior velocità i

nodi “non necessari”

possono essere rimossi

max(h1 (A), mini! frontier

(h (A,Bi) + k (Bi))

Intelligenza Artificiale - Problem Solving 91/105

Perimeter search: valutazione

La perimeter search è efficiente solo in 2 casi:

& quando IDA* è “feasible” (operatori a costo unitario)

& quando la soluzione ottima non è molto profonda(altrimenti il perimetro contiene troppo poco del percorso)

Ottimi risultati con i puzzle, pessimi nel path-finding

2000x2000 path

finding: avg. d = ca.

3000, un perimetro di

50 copre solo l’1,7%

15-puzzle: avg. d = 52,7

(un perimetro di 15 copre

quasi il 30% della distanza)

Intelligenza Artificiale - Problem Solving 92/105

Problem Solving

Ricerca nello spazio degli statiRicerca nello spazio degli stati

Online Search

Intelligenza Artificiale - Problem Solving 93/105

Online Search

La differenza rispetto alla offline search è che l’agente

conosce SCS(n) (e i suoi costi) solo quando SI TROVA in n.

Nell’esempio sotto l’agente (senza lookahead) scopre che

l’operatore UP porta da (1,1) a (2,1) solo dopo averlo applicato!

L’agente deve muoversi con 2 scopi:

& esplorare lo spazio

& arrivare allo stato finale

Il costo è dato dalla somma degli operatori

applicati in tutta l’esplorazione

Intelligenza Artificiale - Problem Solving 94/105

Online Search

PROBLEMI:

& DEAD END: se gli operatori sono irreversibili allora non è possibile

garantire completezza (spazio non “safely explorable”) ' CR unbounded

& BLOCCO AVVERSARIO: (ambiente dinamico) un avversario potrebbe

porci degli ostacoli in modo da rendere il cammino altamente inefficiente

VANTAGGI:

& La ricerca online può attaccare problemi in un

ambiente dinamico (non avverso!)

(es: aggirare ostacoli che si muovono)

VALUTAZIONE ALGORITMI:Competitive Ratio (CR) = g cammino percorso / g cammino ottimo

(E’ molto difficile riuscire a porre bound su CR!)

Intelligenza Artificiale - Problem Solving 95/105

Algoritmi Online (Real Time)

Hill-Climbing:dato che è una ricerca locale può essere usata come algoritmoonline (ha il difetto di bloccarsi in un minimo locale, perchè ?)

Online Depth First Search (Online-DFS):usa il principio della ricerca in profondità con backtracking. Se adogni stato tutte le azioni sono state provate: backtracking fisico allostato predecessore!

& Richiede di mappare lo spazio “visitato” in una tabella:result[A,S1] ( S2

& Richiede di monitorare le zone dello spazio “da esplorare” con untabella indicizzata per ogni stato unexplored[S].

& Richiede di monitorare le zone dello spazio in cui poter farebacktracking con una tabella unbacktracked[S].

Intelligenza Artificiale - Problem Solving 96/105

Online Depth First Search

if (goal_test(sa)== true) return STOPif (UNEXPLORED[sa] == null) {

figli[] = SCS(sa)for all (figli != sp) UNEXPLORED[sa].add(figlio)

}

RESULT[ap,sp] ( saif (UNEXPLORED[sp].is_empty()==false)

UNBACKTRACKED[sa].add(sp)if (UNEXPLORED[sa].is_empty()==true) {

if (UNBACKTRACKED[sa].is_empty()==true) return STOP

back_state ( UNBACKTRACKED[sa].pop()for all (actions of sa) if (RESULT[action,sa] == back_state)

new_action ( action}

else new_action ( UNEXPLORED[sa].pop()sp = sa / ap = new_actionreturn new_action

ONLINE-DFS(sa)

> action = ONLINE-DFS(S)

Intelligenza Artificiale - Problem Solving 97/105

Algoritmi Online “informati”LRTA* (Learning Real-Time A*, Korf ‘90):

& E’ dato da: Hill-Climbing + Memoria + aggiornamento funzioneeuristica

& Possiede una tabella H[S] dei costi aggiornati per ogni stato.

Il criterio di aggiornamento è dato dal classico f(n) = g(n)+h(n)

Funzionamento (l’agente entra in uno stato sa)

& 1) se H[sa] è null allora H[sa] ( h(sa)

& 2) se sa ha un predecessore allora

& result[ap,sp ] ( sa

& H[sp] ( min g(s) + H[s] ! a $ action[sp] e s = result[a,sp ] (update)

& 3) scegli l’azione a che porta allo stato s vicino con min g(s)+H[s]

(se è null allora si prende h(s)), aggiorna sp ( sa e ricomincia

Intelligenza Artificiale - Problem Solving 98/105

LRTA*: un esempio

Spazio monodimensionale

I valori all’interno dei cerchi corrispondono a H[S]

Intelligenza Artificiale - Problem Solving 99/105

LRTA*: proprietà

In spazi “sicuri” trova una soluzione in tempo finito

Complessità = O(n2)

Non è completo in spazi infiniti (a differenza di A*)

E’ possibile dimostrare che il valore di H[s] convergead h*(s) durante il cammino.

Se aumento il lookahead migliora il cammino, maaumenta il costo computazionale per passo. Bisognafare una scelta nel TRADEOFF:

costo simulazione / costo esecuzione

Intelligenza Artificiale - Problem Solving 100/105

Riassumendo…Formalizzazione dei problemi

Risolvere problemi = cercare un percorso in un albero di scelte

Metodi di valutazione della ricerca

Algoritmi di ricerca cieca

Cosa è un’euristica

Proprietà delle euristiche ed effetti sul costo di ricerca

Come generare un’euristica ammissibile

Componenti degli algoritmi di ricerca informata

Algoritmo Hill-Climbing

Algoritmi Best-First (Greedy ed A*)

Proprietà dell’algoritmo A*

WA*: generalizzazione della ricerca informata

Algoritmi Memory-Bounded (IDA*, SMA*)

Ricerca informata bidirezionale (BHPA*, BIDA*)

Algoritmi Real-Time (OnlineDFS, LRTA*)

Intelligenza Artificiale - Problem Solving 101/105

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 102/105

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.

Intelligenza Artificiale - Problem Solving 103/105

Formalizzazione Problemi:Robot Navigation

X = le coordinate possibili del robot

SCS(x) = tutti gli spostamenti da x

x0 = posizione random del robot

g = lunghezza spostamento

t = (coord. Robot == coord. GOAL)

sup. totale – ostacoli

= ca. 105 pixel

molto variabile:

< 105 spostamenti

Variabile tra

1 e 2 2b h+

Intelligenza Artificiale - Problem Solving 104/105

Spazio degli stati ed operatori

Robot Navigation

Intelligenza Artificiale - Problem Solving 105/105

Formalizzazione Problemi:Robot Navigation

X = i vertici dei poligoni + x0 e goal

SCS(x) = tutti gli spostamenti da x

x0 = posizione random del robot

g = lunghezza spostamento

t = (coord. Robot == coord. GOAL)

Lineare con il

numero di poligoni

pochissimi

Variabile tra

1 e 2 2b h+