Sunteți pe pagina 1din 48

Inteligenta Artificiala

Universitatea Politehnica Bucuresti


Anul universitar 2006-2007

Adina Magda Florea


http://turing.cs.pub.ro/ia_07
Curs nr. 2
Strategii de rezolvare a problemelor
 Reprezentarea solutiei problemei
 Strategii de cautare de baza
 Strategii de cautare informate
1. Reprezentarea solutiei problemei
 Structura simbolica
 Instrumente computationale

 Metoda de planificare
1.1. Rezolvarea problemei reprezentata
prin spatiul starilor

 Stare
 Spatiu de stari
 Stare initiala
 Stare/stari finala/finale
 (Si, O, Sf)
 Solutia problemei
8-puzzle
Si Sf

2 3 1 2 3 SUS - Mutare patrat liber in sus


1 8 4 8 4 STINGA - Mutare patrat liber la stinga
JOS - Mutare patrat liber in jos
7 6 5 7 6 5 DREAPTA - Mutare patrat liber la dreapta

(a) Stare initiala (b) Stare finala (c) Operatori


Si

2 3
1 8 4
7 6 5

STINGA JOS DREAPTA

2 3 2 8 3 2 3
S1 1 8 4 S2 1 4 S3 1 8 4
7 6 5 7 6 5 7 6 5

(d) Tranzitii posibile din starea Si


1.2 Rezolvarea problemei reprezentata prin
grafuri SI/SAU

 (Pi, O, Pe)
 Semnificatie graf SI/SAU
 Nod rezolvat
 Nod nerezolvabil
 Solutia problemei
Graf SI/SAU

Nod SAU

Noduri SI

Noduri SAU
Turnurile din Hanoi

A B C A B C
(a) Stare initiala (b) Stare finala

n=3
A la C

O - operator de descompunere
n=2 n=2
A la B B la C

n=1
A la C

n=1 n=1 n=1 n=1 n=1 n=1


A la C A la B C la B B la A B la C A la C
(c) Arborele SI/SAU de descompunere in subprobleme
1.3 Echivalenta reprezentarilor

Tranzitie din S j in S f
Sj

Sk
Tranzitie din S j in S k Tranzitie din S k in S f
Sj, S k - stari intermediare S f - stare finala

(a) Spatiul starilor (b) Descompunerea problemei in subprobleme


2. Strategii de cautare de baza
Criterii de caracterizare
 Completitudine

 Optimalitate

 Complexitate

 Capacitatea de revenire

 Informare

 Conventii: nod necunoscut, evaluat,


expandat, FRONTIERA, TERITORIU
Costuri ale cautarii

Cost
Computational
Cost control
Cost parcurgere (cost evaluare stari)
(cost aplicare
operatori) Cost total

Grad de
Neinformat Informat informare
2.1. Cautari neinformate in spatiul starilor
Algoritm NIV: Strategia cautarii pe nivel in spatiul starilor
1. Initializeaza listele FRONTIERA ← {Si}, TERITORIU ← {}
2. daca FRONTIERA = {}
atunci intoarce INSUCCES
3. Elimina primul nod S din FRONTIERA si insereaza-l in TERITORIU
4. Expandeaza nodul S
4.1. Genereaza toti succesorii directi Sj ai nodului S
4.2. pentru fiecare succesor Sj al lui S executa
4.2.1. Stabileste legatura Sj → S
4.2.2. daca Sj este stare finala
atunci
i. Solutia este (Sj, S, .., Si)
ii. intoarce SUCCES
4.2.3. Insereaza Sj in FRONTIERA, la sfarsit
5. repeta de la 2
 Caracteristici cautare pe nivel
 Algoritmul presupune spatiul de cautare arbore si nu graf
 Pentru un spatiu de cautare graf se insereaza pasul 3’
3’. daca S ∈FRONTIERA ∪ TERITORIU atunci repeta de la 2

Strategia cautarii in adancime in spatiul starilor


 Intr-o reprezentare a solutiei problemei prin spatiul starilor

adancimea unui nod se defineste astfel:


 Ad(S ) = 0, unde S este nodul stare initiala,
i i

 Ad(S) = Ad(Sp)+1, unde Sp este nodul predecesor nodului


S.
Algoritm ADANC(AdMax): Strategia cautarii in adancime in spatiul starilor
1. Initializeaza listele FRONTIERA ← {Si}, TERITORIU ← {}
2. daca FRONTIERA = {}
atunci intoarce INSUCCES
3. Elimina primul nod S din FRONTIERA si insereaza-l in TERITORIU
3’. daca Ad(S) = AdMax atunci repeta de al 2
4. Expandeaza nodul S
4.1. Genereaza toti succesorii directi Sj ai nodului S
4.2. pentru fiecare succesor Sj al lui S executa
4.2.1. Stabileste legatura Sj → S
4.2.2. daca Sj este stare finala
atunci
i. Solutia este (Sj,.., Si)
ii. intoarce SUCCES
4.2.3. Insereaza Sj in FRONTIERA, la inceput
5. repeta de la 2
sfarsit.
 Caracteristici cautare in adancime

 Cautare in adincime cu nivel iterativ (ID)


pentru AdMax=1, Val executa
ADANC(AdMax)

Caracteristici cautare in adancime cu nivel iterativ

 Cautare de tip backtracking


 Cautare bidirectionala

 Care strategie este mai buna ?


2.2. Cautari neinformate in grafuri SI/SAU

Adancimea unui nod


 Ad(S ) = 0, unde S este nodul problema
i i
initiala,
 Ad(S) = Ad(S ) + 1 daca S este nod SAU
p p
predecesor al nodului S,
 Ad(S) = Ad(S ) daca S
p p este nod SI
predecesor al nodului S.
Algoritm NIV-SI-SAU: Strategia cautarii pe nivel in arbori SI/SAU.
1. Initializeaza listele FRONTIERA ← {Si}, TERITORIU ← {}
2. Elimina primul nod S din FRONTIERA si insereaza-l in
TERITORIU
3. Expandeaza nodul S
3.1. Genereaza toti succesorii directi Sj ai nodului S
3.2. pentru fiecare succesor Sj al lui S executa
3.2.1. Stabileste legatura Sj → S
3.2.2. daca Sj reprezinta o multime de cel putin 2 subprobleme
atunci /* este nod SI */
i. Genereaza toti succesorii subprobleme Skj ai lui
Sj
ii. Stabileste legaturile intre nodurile Skj → Sj
iii. Insereaza nodurile Skj in FRONTIERA, la sfirsit
3.2.3. altfel insereaza Sj in FRONTIERA, la sfirsit
4. daca nu s-a generat nici un succesor al lui S in pasul precedent
(3)
atunci
4.1. daca S este nod terminal etichetat cu o problema
neelementara
atunci
4.1.1. Eticheteaza S nerezolvabil
4.1.2. Eticheteaza cu nerezolvabil toate nodurile
predecesoare lui S care devin nerezolvabile
datorita lui S
4.1.3. daca nodul Si este nerezolvabil
atunci intoarce INSUCCES /* problema nu are solutie */
4.1.4. Elimina din FRONTIERA toate nodurile care au
predecesori nerezolvabili
4.2. altfel /* S este nod terminal etichetat cu o problema elementara */
4.2.1. Eticheteaza S rezolvat
4.2.2. Eticheteaza cu rezolvat toate nodurile predecesoare lui
S care devin rezolvate datorita lui S
4.2.3. daca nodul Si este rezolvat
atunci
i. Construieste arborele solutie urmarind legaturile
ii. intoarce SUCCES /* s-a gasit solutia */
4.2.4. Elimina din FRONTIERA toate nodurile rezolvate si
toate nodurile care au predecesori rezolvati
5. repeta de la 2
sfarsit.
2.3. Complexitatea strategiilor de cautare
 B - factorul de ramificare al unui spatiu de cautare
8-puzzle
 Numar de miscari:
 2 m pt colt = 8
 3 m centru lat = 12
 4m centru ⇒ 24 miscari
 B = nr. misc. / nr. poz. p. liber = 2.67
 Numar de miscari:
 1 m pt colt = 4
 2 m centru lat = 8
 3m centru ⇒ 15 miscari ⇒ B = 1.67
Complexitatea strategiilor de cautare
 B - factorul de ramificare

Rad – B noduri, B2 pe niv 2, etc.


 Numarul de stari posibil de generat pe un nivel

de cautare d este Bd
 T - numarul total de stari generate intr-un proces

de cautare, d – adancime nod solutie


T = B + B2 + … + Bd = O(Bd)
Complexitatea strategiilor de cautare
 Cautare pe nivel
Numar de noduri generate
B + B2 + … + Bd + (Bd+1-B) = O(Bd+1)
B - factor de ramificare, d - adancime solutie
Complexitate timp, spatiu
 Cautare in adancime
B - factor de ramificare, m - adancimea maxima
(Admax)
Numar de noduri generate
B*m+1
Complexitate timp, spatiu
Complexitatea strategiilor de cautare
 Cautare backtracking
Numar de noduri generate m
m - adancimea maxima (Admax)
Complexitate timp, spatiu
 Cautare cu nivel iterativ
Numar de noduri generate
d*B+(d-1)*B2+ … + (1)*Bd = O(Bd)
Complexitate timp, spatiu
Adancime Nr noduri Timp Memorie
10000 noduri/sec
1 nod
1000 bytes memorie 2 1100 .11 sec 1 megabyte

4 111 100 11 sec 106


megabyte

6 107 19 min 10 gigabyte

8 109 31 ore 1 terabyte

10 1011 129 zile 101 terabytes

12 1013 35 ani 10 petabytes

14 1015 3 523 ani 1 exabyte


Complexitatea strategiilor de cautare
Criteriu Nivel Adanci Adanc. Nivel Bidirec
me limita iterativ tionala
Timp Bd Bd Bm Bd Bd/2

Spatiu Bd B*d B*m Bd Bd/2


Optima Da Nu Nu Da Da
litate?
Comple Da Nu Da daca Da Da
ta? m≥d
B – factor de ramificare, d – adancimea solutiei,
m – adancimea maxima de cautare (AdMax)
Numar de noduri generate

B=10, d=5
 Cautare pe nivel

10+100+1000+10000+100000+999990 = 1 111 100


 Cautare cu nivel iterativ
50+400+3000+20000+100000=123 450
3. Strategii de cautare informate
Cunostintele euristice pot fi folosite pentru a creste
eficienta cautarii in trei moduri:
 Selectarea nodului urmator de expandat in

cursul cautarii.
 In cursul expandarii unui nod al spatiului de

cautare se poate decide pe baza informatiilor


euristice care dintre succesorii lui vor fi generati si
care nu
 Eliminarea din spatiul de cautare a anumitor

noduri generate
3.1 Cautare informata de tip "best-first"
 Evaluarea cantitatii de informatie
 Calitatea unui nod este estimata de functia
de evaluare euristica, notata w(n) pentru
nodul n
 Presupuneri pentru functia w(n)
 Strategia de cautare a alpinistului
 Strategia de cautare “best-first”
Algoritm BFS: Strategia de cautare "best-first" in spatiul starilor
1. Initializeaza listele FRONTIERA ← {Si}, TERITORIU ← {}
2. Calculeaza w(Si) si asociaza aceasta valoare nodului Si
3. daca FRONTIERA = {}
atunci intoarce INSUCCES
4. Elimina nodul S cu w(S) minim din FRONTIERA si insereaza-l in
TERITORIU
5. daca S este stare finala
atunci
i. Solutia este (S,.., Si)
ii. intoarce SUCCES
6. Expandeaza nodul S
6.1. Genereaza toti succesorii directi Sj ai nodului S
6.2. pentru fiecare succesor Sj al lui S executa
6.2.1 Calculeaza w(Sj) si asociaza-l lui Sj
6.2.2. Stabileste legatura Sj → S
6.2.3. daca Sj ∉ FRONTIERA ∪ TERITORIU
atunci introduce Sj in FRONTIERA cu w(Sj)
asociat
6.2.5. altfel
i. Fie S’j copia lui Sj din FRONTIERA sau TERITORIU
ii. daca w(Sj) < w(S’j)
atunci
atunci
- Elimina S’j din FRONTIERA sau
TERITORIU (de unde apare copia)
- Insereaza Sj cu w(Sj) asociat in
FRONTIERA
iii. altfel ignora nodul Sj
7. repeta de la 3
sfarsit.
Varianta alternativa pentru pasul 6.2.5

6.2.5. altfel
i. Fie S’j copia lui Sj din FRONTIERA sau
TERITORIU
ii. daca w(Sj) < w(S’j)
atunci
- Distruge legatura S’j → Sp, cu Sp pred. lui S’j
- Stabileste legatura S’j → S, si actualizeaza costul
lui S’j la w(Sj)
- daca S’j este in TERITORIU
- atunci elimina S’j din TERITORIU si insereaza
S’j in FRONTIERA
iii. altfel ignora nodul Sj
7. repeta de la 3
Cazuri particulare
 Strategia de cautare "best-first" este o generalizare a
strategiilor de cautare neinformate
- strategia de cautare pe nivel w(S) = Ad(S)
- strategia de cautare in adincime w(S) = -Ad(S)
 Strategia de cautare de cost uniform
j −1
w(S j ) = ∑ cost_ arc(Sk ,Sk +1 )
k =i
 Minimizarea efortului de cautare – cautare
euristica
w(S) = functie euristica
3.2 Cautarea solutiei optime in spatiul starilor.
Algoritmul A*

w(S) devine f(S) cu 2 comp:


 g(S), o functie care estimeaza costul real

g*(S) al caii de cautare intre starea initiala


Si si starea S,
 h(S), o functie care estimeaza costul real

h*(S) al caii de cautare intre starea curenta


S si starea finala Sf.
 f(S) = g(S) + h(S)

 f*(S) = g*(S) + h*(S)


Componentele functiei euristice din algoritmul A*

Si

g(S)

S f(S)

h(S)
Sf
Calculul lui f(S)
 Calculul lui g(S)
n
g(S) = ∑ cost _ arc(S k ,S k +1 )
k =i
 Calculul lui h(S)
 Trebuie sa fie admisibila
 O functie euristica h se numeste admisibila daca
pentru orice stare S, h(S) ≤ h*(S).
 Definitia stabileste conditia de admisibilitate a
functiei h si este folosita pentru a defini
proprietatea de admisibilitate a unui algoritm A*.
A* admisibil
Fie un algoritm A* care utilizeaza cele doua
componente g si h ale functiei de evaluare f. Daca
 (1) functia h satisface conditia de admisibilitate

 (2) cost_ arc(S,S') ≥ c

pentru orice doua stari S, S', unde c > 0 este o


constanta si costul c este finit
 atunci algoritmul A* este admisibil, adica este
garantat sa gaseasca calea de cost minim spre
solutie.
 Completitudine
Implementare A*
Strategia de cautare "best-first" se modifica:

2. Calculeaza w(Si)=g(Si) + h(Si) si asociaza aceasta valoare
nodului Si
3. daca FRONTIERA = {}
atunci intoarce INSUCCES - nemodificat
4. Elimina nodul S cu w(S) minim din FRONTIERA si
insereaza-l in TERITORIU - nemodificat
…..
6.2.5. altfel
i. Fie S’j copia lui Sj din FRONTIERA sau
TERITORIU
ii. daca g(Sj) < g(S’j)
atunci …
Caracteristicile euristicii algoritmului A*
 Fie doi algoritmi A*, A1 si A2, cu functiile de
evaluare h1 si h2 admisibile, g1=g2
f1 (S) = g1 (S) + h1 (S) f2 (S) = g2 (S) + h2 (S)

 Se spune ca algoritmul A2 este mai informat


decit algoritmul A1 daca pentru orice stare S
h 2 (S) > h1 (S)
cu S≠Sf
 Monotonie h(S) ≤ h(S') + cost_ arc(S,S')
Determinarea functiei de evaluare f
8
 8-puzzle h1 (S) = ∑ t i (S)
i=1

8
h 2 (S) = ∑ Distanta(t i )
i=1
 Problema comis-voiajorului

h1 (S) = cost_ arc(Si ,S)


h2(S) = costul arborelui de acoperire de cost minim al
oraselor neparcurse pana in starea S
Problema misionarilor si canibalilor

VEST EST VEST EST

nV
m
(Si )=0 nEm (Si )=3 nV
m
(Sf )=3 nEm (Sf )=0

nV
c
(Si )=0 nEc (Si )=3 nV
c
(Sf )=3 nEc (Sf )=0

(a) Stare initiala (b) Stare finala


Problema misionarilor si canibalilor

f1 (S) = g(S) + h1 (S) E


h1 (S) = n (S)
f2 (S) = g(S) + h 2 (S) h 2 (S) = n E (S) / 2

f3 (S) = g(S) + h 3 (S)

n E (S) + 1 daca barca este pe malul de VEST si n E (S) ≠ 0


 E
h 3 (S) = n (S) − 1 daca barca este pe malul de EST si n E (S) ≠ 0
0 daca n E
(S) = 0

Relaxarea conditiei de optimalitate a algoritmului A*

 O functie euristica h se numeste ε-admisibila


daca h(S) ≤ h* (S) + ε
cu ε > 0
 Algoritmul A* care utilizeaza o functie de
evaluare f cu o componenta h ε -admisibila
gaseste intotdeauna o solutie al carei cost
depaseste costul solutiei optime cu cel mult ε.
 Un astfel de algoritm se numeste algoritm A* ε
-admisibil iar solutia gasita se numeste solutie ε
-optimala.
Relaxarea conditiei de optimalitate a algoritmului A*

 8-puzzle

f3 (S) = g(S) + h 3 (S) h 3 (S) = h 2 (S) + 3 ⋅ T(S)


8
T(S) = ∑ Scor[t i (S)]
i =1

2 daca patratul t i in starea S nu este urmat de


 succesorul corect din starea finala

Scor[t i (S)] = 
0 pentru orice pozitie a lui t i diferita de centru
1 pentru t i aflat la centrul mozaicului
IDA*
 Avantaje si dezavantaje A* Si 0+h = LimCost
 IDA*
 Cautarea in adancime este
modificata a.i. sa utilizeze o
limita de cost (LimCost) in loc f= g+h ≤ LimCost
de o limita a adancimii
 Daca esueaza (nenatural)
(AdMax)
se actualizeaza LimCost
 Fiecare iteratie expandeaza la min f al nodurilor
nodurile din interiorul unui din cele
contur de cost LimCost pentru neexpandate anterior
a vedea care sunt nodurile de
pe urmatorul contur  Comentarii
Best First Recursiv
 Best first cu spatiu liniar
 Implementare recursiva
 Tine minte valoarea f a celei mai bune cai
alternative intre orice nod anterior si nodul
curent
 Gaseste solutia de cost minim daca h este
admisibila dar are complexitatea spatiu
O(B*d)
inf
S1
447 S2 393
S3 447 S4 449
415
413
S5 S6 S7 S8
646 415 526
S9 526 S10 S11 553

417

inf
S1
447 S2 393
S3 447 S4 449

417
S5 S6 417 S7 S8
646 415 526

S12 S13
591 450
inf
S1
447 S2 393
S3 447 S4 449
447
417
S5 S6 S7 S8
646 450 526
S9 526 447 S10 417 S11 553

S14 S15 S16


418 615 607
Algoritm BFR(S, f_lim): Strategia Best First recursiv
/* Intoarce o solutie sau INSUCCES si o noua f_limit */
1. daca S stare finala atunci intoarce S, f_lim
2. Genereaza toti succesorii Sj ai lui S
3. daca nu exista nici un succesor
atunci intoarce INSUCCES, inf
4. pentru fiecare succesor Sj repeta
f(Sj) ← max(g(Sj) + h(Sj), f(S))
5. Best ← Sjmin, nodul cu valoarea f(Sj) minima dintre succesori
6. daca f(Best) > f_lim
atunci intoarce INSUCCES, f(Best)
7. Alternat ← f(Sjmin2), a 2-a val f(Sj) cea mai mica
8. Rez, f(Best) ← BFR(Best, min(f_lim, Alternat)
9. daca Rez ≠ INSUCCES atunci intoarce Rez, f(Best)
10. repeta de la 5
sfarsit.