Sunteți pe pagina 1din 64

Inteligenta Artificiala

Universitatea Politehnica Bucuresti


Anul universitar 2019-2020

Adina Magda Florea

1
Curs 2
Strategii de cautare
 Reprezentarea solutiei problemei

 Strategii de cautare de baza

 Strategii de cautare informate

 Strategii de cautare informate cu memorie


limitata
 Determinarea functiei euristice

2
1 Reprezentarea solutiei problemei
 Reprezentare prin spatiul starilor
 Reprezentare prin grafuri SI/SAU
 Echivalenta reprezentarilor
 Caracteristicile mediului de rezolvare

 Pentru a reprezenta si gasi o solutie:


 Structura simbolica

 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 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

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

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

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

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

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

 Cautarea in adancime – cele mai departate intai

 Algoritmul lui Dijkstra rezolva problema celei mai scurte


cai daca toate costurile arcelor sunt ≥ 0
 Algoritmul Bellman-Ford rezolva problema gasirii tuturor
cailor de cost minim unde costurile arcelor pot fi si
negative
 Algoritmul Floyd-Warshall rezolva problema gasirii
tuturor cailor de cost minim 13
Caracteristici cautari pe grafuri
nespecificate explicit
 Cautarea pe nivel (BFS)
 Cautare in adancime (DFS)
 Cautare in adancime cu nivel iterativ (iterative
deepening)
 Cautare de tip backtracking
 Cautare bidirectionala

 Care strategie este mai buna ?

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

Strategia cautarii in adancime in spatiul starilor


 Intr-o reprezentare a solutiei problemei prin spatiul starilor

adancimea unui nod se defineste astfel:


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

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

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

 Cautare in adincime cu nivel iterativ (ID)


pentru AdMax=1, m executa
ADANC(AdMax)

Caracteristici cautare in adancime cu nivel iterativ

 Cautare de tip backtracking


 Cautare bidirectionala

19
2.2. Cautari neinformate in grafuri SI/SAU

Adancimea unui nod


 Ad(Si) = 0, unde Si este nodul problema
initiala,
 Ad(S) = Ad(Sp) + 1 daca Sp este nod SAU
predecesor al nodului S,
 Ad(S) = Ad(Sp) daca Sp este nod SI
predecesor al nodului S.

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

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)

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

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)
28
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

29
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”

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

1. Initializeaza listele OPEN ← {Si}, CLOSED ← {}


2. Calculeaza w(Si) si asociaza aceasta valoare nodului Si
3. daca OPEN = {}
atunci intoarce INSUCCES
4. Elimina nodul S cu w(S) minim din OPEN si insereaza-l in CLOSED
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 ∉ OPEN ∪ CLOSED
atunci introduce Sj in OPEN cu w(Sj) asociat
6.2.4. altfel
i. Fie S’j copia lui Sj din OPEN sau CLOSED
ii. daca w(Sj) < w(S’j)
atunci
- Elimina S’j din OPEN sau CLOSED
(de unde apare copia)
- Insereaza Sj cu w(Sj) asociat in OPEN
iii. altfel ignora nodul Sj
7. repeta de la 3
sfarsit.
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 / Dijkstra
j −1
w(S j ) = ∑ cost_ arc(Sk ,Sk +1 )
k =i
 Minimizarea efortului de cautare – cautare
euristica
w(S) = functie euristica

33
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)

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

 (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 – garantat sa gaseasca solutie daca
solutia exista si costurile sunt pozitive
36
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 OPEN = {}
atunci intoarce INSUCCES - nemodificat
4. Elimina nodul S cu w(S) minim din OPEN si insereaza-l
in CLOSED - nemodificat
…..
6.2.4. altfel
i. Fie S’j copia lui Sj din OPEN sau CLOSED
ii. daca g(Sj) < g(S’j)
atunci …
37
4. Cautari informate cu memorie
limitata
 A* se termina intotdeauna gasind o solutie optima si poate fi
aplicat pe probleme generale
 Cu toate acestea, cantitatea de memorie necesara creste
repede pe masura avansului algoritmului.
 Presupunem 100 bytes pt a memora o stare si atributele ei;
rezulta aproximativ 10 mbytes/sec => o memorie de 1G se
utilizeaza in mai putin de 2 minute
 Algoritmii clasici pentru cautare cu memorie limitata
sunt:
 Depth first iterative deepening (DFID)

 Iterative deepening A* (IDA*)

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’

daca (Goal(s)) atunci intoarce s


Suc(s) ← Expand(s)
pentru fiecare v in Suc(s) repeta
daca g + w(s,v) ≤ U /* starea este in limita U */
atunci p ← DFID(v, g+w(s,v), U)
daca p ≠ {} atunci intoarce (s,p) /* s-a gasit solutie */
altfel
daca g + w(s,v) < U’ /* cost mai mic decat noua limita */
atunci U’ ← g + w(s,v) /* actualizez noua limita */
intoarce {}
sfarsit
Cautare DFID
Pas Iteratie Selectie Apel U U’ Obs
1 1 {} {(a,0)} 0 inf
2 1 a {} 0 2 g(b), g(c) si g(d) > U
3 2 {} {(a,0)} 2 inf Incepe o noua iteratie
4 2 a {(b,2)} 2 6 g(c) si g(d) > U
5 2 b {} 2 6 g(e) si g(f) > U
6 3 {} {(a,0)} 6 inf Incepe o noua iteratie
7 3 a {(b,2),(c,6)} 6 9
………….. …………..

c cat timp (bestPath = {} si U’≠ inf) repeta


U ← U’, U’ ← inf
3
e
f 6
bestPath ←DFID(s, 0, U)
3 b
4 4
pentru fiecare v in Suc(s) repeta
2
d daca g + w(s,v) ≤ U
10 a atunci p ← DFID(v, g+w(s,v), U)
5 daca p ≠ {} atunci intoarce (s,p)
g
altfel
daca g + w(s,v) < U’ atunci U’ ← g + w(s,v)
IDA*
 Iterative deepening A* Si 0+h
 Bazat pe DFID cu cost
 Garantat sa gaseasca solutia de cost
minim f= g+h ≤ LimCost
 f(s) = g(s) + h(s)

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’

daca (Goal(s)) atunci intoarce s


Suc(s) ← Expand(s)
pentru fiecare v in Suc(s) repeta
daca g + w(s,v) + h(v) ≤ U /* starea este in limita U */
atunci
p ← IDA*(v, g +w(s,v), U)
daca p ≠ {} atunci intoarce (s,p) /* s-a gasit solutie */
altfel /* cost mai mare decat limita veche U */
daca g + w(s,v) + h(v) < U’ /* cost mai mic decat noua limita */
atunci U’ ← g + w(s,v) + h(v) /* actualizez noua limita */
intoarce {}
sfarsit
5. Determinarea functiei de evaluare f
 In functie de problema
 Transformare abstracta prin relaxarea unor
restrictii ale problemei
 Pattern databases – baze de date de sabloane
generate din solutii partiale – se pot calcula prin
program
 Ne intereseaza o functie euristica h(s) cat mai
apriape de h*(s)
 Am dori si un effort cat mai mic

47
h(S) aproape de h*(S)?

 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) = g 2 (S) + h 2 (S)

 Se spune ca algoritmul A2 este mai informat


decat algoritmul A1 daca pentru orice stare S
cu S≠Sf
h 2 (S) > h1 (S) h2 domina h1

48
h(S) monotona?
 Monotonia functiei h(S)
Daca
h(S) ≤ h(S' ) + cost_arc(op, S, S' )

pentru orice doua stari S si S’ succesor al lui S, cu S’


diferit de Sf, din spatiul de cautare
atunci se spune ca h(s) este monotona (sau
consistenta)
 Daca h este monotona atunci avem garantia ca un
nod introdus in CLOSED nu va mai fi niciodata
eliminat de acolo si reintrodus in OPEN iar
implementarea se poate simplifica corespunzator
49
Exemple de functii euristice

 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

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*

 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.

52
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

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

(1) O piesa poate fi mutata de la A la B daca B este


liber
(2) O piesa poate fi mutata de la A la B daca A si B
sunt adiacente

 Problema relaxata adauga arce in spatiul de


cautare
54
Variante “relaxate” ale problemei
O piesa poate fi mutata de la A la B daca A si B sunt
adiacente orizontal sau vertical si B este liber

(a) O piesa poate fi mutata de la A la B daca A si B


sunt adiacente .
(b) O piesa poate fi mutata de la A la B daca B este
liber .
(c) O piesa poate fi mutata de la A la B .

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

 Pattern database – multimea tuturor


pattern-urilor care pot fi obtinute prin
relaxari sau permutari ale target pattern
 Pentru fiecare pattern din baza de date
calculam distanta (nr minim de mutari) fata
de target pattern folosind analiza inversa.
 Distanta este costul pattern-ului

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

 9 patrate cu 6 culori diferite


 Cea mai buna solutie IDA*

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

MD3d(p1, p2) = |x1−x2|+|y1−y2|+|z1−z2|


 Poate fi calculata in timp liniar

 Trebuie impartita la 8 pentru a fi admisibila


deoarece fiecare miscare muta 4 colturi si 4 muchii
– 62
Cubul lui Rubik

 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?

 Invatarea unei euristici

 Avem mai multe euristici bune


 Pe care o alegem?
 h(n) = max (h1(n), … hk(n))

64

S-ar putea să vă placă și