Documente Academic
Documente Profesional
Documente Cultură
1
Curs 2
Strategii de cautare
Reprezentarea solutiei problemei
2
1 Reprezentarea solutiei problemei
Reprezentare prin spatiul starilor
Reprezentare prin grafuri SI/SAU
Echivalenta reprezentarilor
Caracteristicile mediului de rezolvare
Instrumente computationale
Metoda de planificare
3
Rezolvarea problemei reprezentata
prin spatiul starilor
Stare
Spatiu de stari
Stare initiala
Stare/stari finala/finale
(Si, O, Sf)
Solutia problemei
Caracteristicile mediului
4
8-puzzle
Si Sf
2 3
1 8 4
7 6 5
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
5
Rezolvarea problemei reprezentata prin
grafuri SI/SAU
(Pi, O, Pe)
Semnificatie graf SI/SAU
Nod rezolvat
Nod nerezolvabil
Solutia problemei
6
Graf SI/SAU
Nod SAU
Noduri SI
Noduri SAU
7
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
8
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
9
Caracteristicile mediului
Observabil / neobservabil
Discret / continuu
Finit / infinit
Determinist / nedeterminist
10
2. Strategii de cautare de baza
Criterii de caracterizare
Completitudine
Optimalitate
Complexitate
Capacitatea de revenire
Informare
11
Costuri ale cautarii
Cost
Computational
Cost control
Cost parcurgere (cost evaluare stari)
(cost aplicare
operatori) Cost total
Grad de
Neinformat Informat informare
12
Cautari neinformate in spatiul starilor
Gasirea unei cai sau a tuturor cailor, cu cost sau fara cost
Cautarea pe nivel si cautarea in adancime - parcurgerea se
face in ordinea nodurilor succesoare starii curente in
cautare:
Cautarea pe nivel – cele mai apropiate intai
14
Caracteristici cautari pe grafuri
nespecificate explicit
Cele mai multe implementari bazate pe Open /
FRONTIERA si Closed / TERITORIU
DFS – Open – stiva (LIFO)
BFS – Open – coada (FIFO)
In ambele Closed este implementata ca o tabela de
dispersie (Hash)
Open: stiva, coada sau coada de prioritati (priority
queue)
15
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
3’ daca S ∈FRONTIERA ∪ TERITORIU (inainte de inserare S)
atunci repeta de la 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, S, .., Si)
ii. intoarce SUCCES
4.2.3. Insereaza Sj in FRONTIERA, la sfarsit
5. repeta de la 2
sfarsit.
16
Caracteristici cautare pe nivel
S.
17
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 S ∈FRONTIERA ∪ TERITORIU (inainte de inserare S)
atunci repeta de la 2
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
19
2.2. Cautari neinformate in grafuri SI/SAU
20
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.
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
24
Complexitatea strategiilor de cautare
B - factorul de ramificare
d- adancimea celui mai apropiat nod solutie
m – lungimea maxima a oricarei cai din spatiul de
cautare
25
Complexitatea strategiilor de cautare
Cautare pe nivel
Numar de noduri generate
B + B2 + … + Bd = O(Bd)
Complexitate timp, spatiu
Cautare in adancime
Numar de noduri generate
B*m – daca nodurile expandate se sterg din
TERITORIU
Complexitate timp, spatiu
26
Complexitatea strategiilor de cautare
Cautare backtracking
Numar de noduri generate m – daca se elimina
TERITORIU
Complexitate timp, spatiu
Cautare cu nivel iterativ
Numar de noduri generate
d*B+(d-1)*B2+ … + (1)*Bd = O(Bd)
Complexitate timp, spatiu
B=10, d=5
N(BFS)=111110, N(IDS) = 123 450
27
Complexitatea strategiilor de cautare
Criteriu Nivel Adanci Adanc. Nivel Bidirec
me limita iterativ tionala
Timp Bd Bd Bm Bd Bd/2
cursul cautarii.
In cursul expandarii unui nod al spatiului de
noduri generate
29
Cautare informata de tip "best-first"
30
Algoritm BFS: Strategia de cautare "best-first" in spatiul starilor
Intrari: Starea initiala Si si functia w(S) asociata starilor
Iesiri: SUCCES si solutia sau INSUCCES
33
Cautarea solutiei optime in spatiul starilor.
Algoritmul A*
34
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*.
35
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
38
DFID cu cost
Cautarea realizeaza BFS cu o serie de Si
DFS care opereaza pe o frontiera de
cautare care creste succesiv
Cautarea in adancime este modificata
a.i. sa utilizeze o limita de cost in loc w ≤ LimCost
de o limita a adancimii
Fiecare iteratie expandeaza nodurile
din interiorul unui contur de cost
pentru a vedea care sunt nodurile de pe
urmatorul contur
Daca cost arce 1 atunci DFID fara cost
39
DFID cu cost
Algoritmul utilizeaza doua limite U si U’
pentru urmatoarea iteratie.
Apeleaza repetitiv functia DFID care cauta o
cale de cost minim p.
DFID actualizeaza variabila globala U’ la
valoarea minima a costului cailor generate
pana intr-un moment al cautarii
Daca spatiul de cautare nu contine solutia si
este infinit, algoritmul nu se termina
40
Algoritm DFID: Strategia de cautare depth first iterative
deepening cu cost
Foloseste
- functia iterativa BuclaDFID
- functia recursiva DFID
- Functia Expand pentru generarea succesorilor unui nod
- Functia Goal care testeaza daca stare finala
BuclaDFID
Intrari: Starea initiala s si functia de cost w(s) asociata starilor
Iesiri: Calea de la s la starea finala sau {}
U’ ← 0, bestPath ← {}
cat timp (bestPath = {} si U’≠ inf) repeta
U ← U’, U’ ← inf
bestPath ←DFID(s, 0, U)
intoarce bestPath
sfarsit
DFID(s, g, U)
Intrari: starea s, costul caii g, limita superioara U
Iesiri: calea de la s la starea finala sau {}
Efect lateral: Actualizarea lui U’
44
Algoritm IDA*: Strategia de cautare iterative deepening A*
Foloseste
- functia iterativa BuclaIDA*
- functia recursiva IDA*
- Functia Expand pentru generarea succesorilor unui nod
- Functia Goal care testeaza daca stare finala
BuclaIDA*
Intrari: Starea initiala s, functia de cost w(s) si h euristica asociata starilor
Iesiri: Calea de la s la starea finala sau {}
U’ ← h(s), bestPath ← {}
cat timp (bestPath = {} si U’≠ inf) repeta
U ← U’, U’ ← inf
bestPath ←IDA*(s, 0, U)
intoarce bestPath
sfarsit
IDA*(s, g, U)
Intrari: starea s, costul caii g, limita superioara U
Iesiri: calea de la s la starea finala sau {}
Efect lateral: Actualizarea lui U’
47
h(S) aproape de h*(S)?
48
h(S) monotona?
Monotonia functiei h(S)
Daca
h(S) ≤ h(S' ) + cost_arc(op, S, S' )
Problema comis-voiajorului
50
Exemple de functii euristice
8
8-puzzle h1 (S) = ∑ t i (S)
i=1
Distanta Manhattan
8 dx=|nod.x-scop.x|
h 2 (S) = ∑ Distanta(t i ) dy=|nod.y-scop.y|
i=1 h(nod) = (dx+dy)
51
Relaxarea conditiei de optimalitate a
algoritmului A*
52
Relaxarea conditiei de optimalitate a algoritmului
A*
8-puzzle
53
Cum putem gasi o funcie euristica?
Variante “relaxate” ale problemei
h1 si h2 din 8 puzzle reprezinta de fapt distante
dintr-o versiune simplificata a problemei
55
Cum putem gasi o functie euristica?
A* in jocuri pt parcurgerea unui teritoriu
Distanta Manhattan
dx=|nod.x-scop.x|
dy=|nod.y-scop.y|
h(nod) = (dx+dy)
Distanta Euclidiana
dx=|nod.x-scop.x|
dy=|nod.y-scop.y|
h(nod) = rad(dx2+dy2)
56
Cum putem gasi o functie euristica?
2 tipuri de sol: campie (1) si munte (3)
g(s) – efort/cost de cautare
g(munte) = 3 * g(campie)
A* va cauta de 3 ori mai departe pe campie decat pe
munte
Aceasta deoarece este posibil sa existe o cale pe
campie care merge pe langa munte
Viteza algoritmului poate creste cu o distanta de 2 in
loc de 3 – cauta numai de 2 ori mai mult pe campie
g(s) = 1 + factor(t) *(g(s) -1)
factor = 0 costul terenului compelt ignorat
factor = 1 se va folosi costul real
57
Cum putem gasi o functie euristica?
Pattern database pt euristici
Memoreaza o colectie de solutii ale unor
subprobleme care trebuie rezolvate pentru a
rezolva problema
Fiecare solutie de subproblema are o functie
euristica precalculata (costul cautarii) si
memorata
Pattern – o specificare partiala a unei stari
Target pattern – a specificare partiala a starii
scop
58
Pattern database pt euristici
59
Pattern database pt euristici
15 puzzle
Baza de date va indica numarul minim de mutari
necesare pt a duce la locul bun 3, 7, 11, 12, 13, 14
si 15; apoi se rezolva 8-puzzle (albastru)
31 mutari pt a rezolva piesele rosii (22 mutari
pentru a rezolva piesele albastre)
60
Cubul lui Rubik
61
Cubul lui Rubik
Euristici
Distanta Manhattan 3D =
Calculeaza distanta liniara intre 2 puncte in R3 prin
insumarea distantelor punctului in fiecare
dimensiune
Distanta Manhattan 3D intre punctele p1 si p2
Dureaza mult
Adancime 18 – aprox 100 ani
Pattern database
Se memoreaza intr-o tabela numarul de
miscari necesare pt a rezolva colturile
cubului sau subprobleme
63
Cea mai buna?
64