Sunteți pe pagina 1din 15

Proiectarea Algoritmilor 2009-2010

Proiectarea Algoritmilor 2009-2010


Laborator 11
Algoritmi euristici de explorare a
grafurilor. A*
Cuprins
1. Obiective laborator........................................................................................................................ 1
2. Importan aplicaii practice.......................................................................................................1
3. Descrierea problemei i a rezolvrilor...........................................................................................1
3.1. Prezentarea generala a problemei..................................................................................2
3.2. Greed !est"#irst...........................................................................................................$
3.3. %&.................................................................................................................................. '
3.$. (omple)itatea algoritm*l*i %&....................................................................................1+
3.,. ID%&- .!#/- 0%&......................................................................................................1+
$. (oncl*zii..................................................................................................................................... 11
,. .e1erine...................................................................................................................................... 12
'.1"3 %plicatie 1 2 " P*zzle..........................................................................................................13
1. Obiective laborator
In cadr*l acest*i laborator se va disc*ta despre modelarea problemelor s*b 1orma gra1*rilor
de stari si despre algoritmi specializati in gasirea sol*tiilor pentr* acest tip de gra1*ri. De asemenea-
se vor disc*ta modalitatile care pot 1i 1olosite in analiza comple)itatii si pe baza acestor metode se
vor prezenta avanta3ele si limitarile acestei clase de algoritmi.
1
Proiectarea Algoritmilor 2009-2010
2. Importan aplicaii practice
%lgoritmii de ca*tare e*ristica s*nt 1olositi in caz*rile care implica gasirea *nor sol*tii
pentr* probleme pentr* care 1ie n* e)ista *n model matematic de rezolvare directa- 1ie acest model
este prea complicat pentr* a 1i implementat. In acest caz e necesara o e)plorare a spati*l*i starilor
problemei pentr* gasirea *n*i rasp*ns. Intr*cat o mare parte dintre problemele din viata reala
pornesc de la aceste premise gama de aplicatii a algoritmilor e*ristici este dest*l de larga.
Proiectarea agentilor inteligenti 415- probleme de plani1icare- proiectare circ*itelor 67/I 435-
robotica- ca*tare 8eb- algoritmi de apro)imare pentr* probleme 9P"(omplete 41+5- teoria 3oc*rilor
s*nt doar cateva dintre domeniile in care ca*tarea in1ormata este *tilizata.
3. Descrierea problemei i a rezolvrilor
3.1 Prezentare general a problemei
Prim*l pas in rezolvarea *nei probleme 1olosind algoritmi e*ristici de e)plorare este
de1inirea e)acta a problemei. O probleme este bine de1inita daca c*noastem *rmatorii $ parametri:
Starea initiala a problemei reprezinta con1ig*ratia de plecare.
Functie de expandare a nodurilor in caz*l general este o lista de perec;i <acti*ne-
stare=rez*ltat>. %st1el- pentr* 1iecare stare se en*mera toate acti*nile posibile prec*m si
starea care va rez*lta in *rma aplicarii respectivei acti*ni.
Predicat pentru starea finala 1*nctie care intoarce adevarat daca o stare este stare scop
si fals alt1el
Functie de cost atrib*ie o valoare n*merica 1iecarei cai generate in proces*l de
e)plorare. De obicei se 1oloseste o 1*nctie de cost pentr* 1iecare acti*ne?tranzitie-
atrib*ind- ast1el- o valoare 1iecar*i arc din gra1*l starilor.
/arcina algoritmilor de ca*tare este de a gasi o cale din starea initiala intr"o stare scop.
Daca algoritm*l gaseste o sol*tie at*nci cand m*ltimea sol*tiilor este nevida sp*nem ca algoritm*l
este complet. Daca algoritm*l gaseste si calea de cost minim catre starea 1inala sp*nem ca
algoritm*l este optim.
In principi*- orice algoritm pe gra1*ri disc*tat in laboratoarele si c*rs*rile anterioare poate
1i *tilizat pentr* gasirea sol*tiei *nei probleme ast1el de1inite. In practica- insa- acesti algoritmi n*
s*nt niciodata *tilizati 1ie pentr* ca e)ploreaza m*lt prea m*lte nod*ri- 1ie pentr* ca n* garanteaza
o sol*tie pentr* gra1*ri de1inite implicit <prin stare initiala si 1*nctie de e)pandare>.
2
Proiectarea Algoritmilor 2009-2010
%lgoritmii e*ristici de ca*tare s*nt algoritmi care l*creaza pe gra1*ri de1inite ca mai s*s si
care 1olosesc o in1ormatie s*plimentara- necontin*ta in de1inirea problemei- prin care se
accelereaza proces*l de gasirea a *nei sol*tii.
In cadr*l e)plorarii starilor 1iecare algoritm genereaza *n arbore- care in radacina va
contine starea initiala. #iecare nod al arborel*i va contine *rmatorele in1ormatii:
Starea continuta " stare<nod>
Parintele nodului @<nod>
Cost cale cost*l dr*m*l*i de la starea initiala pana la nod g<nod>
De asemenea- pentr* 1iecare nod de1inim si o 1*nctie de eval*are f care indica cat de
promitator este *n nod in perspectiva gasirii *n*i dr*m catre sol*tie. <De obicei- c* cat 1 este mai
mic- c* atat nod*l este mai promitator>.
%m mentionat mai s*s ca algoritmii de ca*tare e*ristica *tilizeaza o in1ormatie
s*plimentara re1eritoare la gasirea sol*tiei problemei. %ceasta in1ormatie este reprezentata de o
1*nctie h- *nde ;<nod> reprezinta dr*m*l estimat de la nod la cea mai apropiata stare sol*tie.
#*nctia ; poate 1i de1inita in orice mod- e)istand o sing*ra constrangere:
h n=0 n , solutie n=adevarat
Intr*cat 1*nctioneaza prin alegerea- la 1iecare pas- a nod*l*i pentr* care 1<nod> este minim-
algoritmii prezentati mai 3os 1ac parte din clasa Best-First <nod*l cel mai promitator este e)plorat
mere* prim*l>.
6om prezenta in contin*are cativa dintre cei mai importanti algoritmi de ca*tare e*ristica.
6om 1olosi pentr* e)empli1icare- *rmatoarea problema: data 1iind o ;arta r*tiera a .omaniei- sa se
gaseasca o cale <de pre1erinta de cost minim> intre %rad si !*c*resti. Pentr* aceasta problema
starea initiala inidica ca ne a1lam in oras*l %rad- starea 1inala este data de predicat*l Oras=c*rent
AA !*c*resti- 1*nctia de e)pandare intoarce toate orasele in care p*tem a3*nge dintr"*n oras dat- iar
1*nctia de cost indica n*mar*l de Bm al 1iecar*i dr*m intre do*a orase- pres*p*nand ca viteza de
deplasare este constanta. (a e*ristica vom *tiliza pentr* 1iecare oras distanta geometrica<in linie
dreapta> pana la !*c*resti.
3
Proiectarea Algoritmilor 2009-2010
3.2 ree!" #est$%irst
In caz*l acest*i algoritm se considera ca nod*l care merita sa 1ie e)pandat in pas*l *rmator
este cel mai apropiat de sol*tie. Deci- in acest caz- avem:
f n=hn , n
Pse*docod*l acest*i algoritm:
Greedy Best-First (sinitial , expand, h, solution)
closed {}
n new-node()
state(n) s
initial
(n) nil
open { n }
4
Fig 1: Graful starilor
Fig 2 : Functia euristica
Proiectarea Algoritmilor 2009-2010
// Bucla principala
repeat
if open = then return failure
n get_best(open) with f(n) = h(n) = min
open open - {n}
if solution(state(n)) then return build-path(n)
else if n not in closed then
closed closed U {n}
for each s in expand(n)
n' new-node()
state(n') s
(n') n
open open U {n'}
end-for
end-repeat
In cadr*l algoritm*l*i se 1olosesc do*a m*ltimi: closed indica nod*rile de3a e)plorate si
e)pandate si open nod*rile descoperite dar nee)pandate. Open este intializata c* nod*l
coresp*nzator starii intiale. 7a 1iecare pas al algoritm*l*i este ales din open nod*l c* valoarea 1<n>
A ;<n> cea mai mica <din acest motiv e de pre1erat ca open sa 1ie implementata ca o coada c*
prioritati>. Daca nod*l se dovedeste a 1i o sol*tie a problemei at*nci este intoarsa ca rez*ltat calea
de la starea initiala pana la nod <mergand rec*rsiv din parinte in parinte>. Daca nod*l n* a 1ost de3a
e)plorat at*nci se e)pandeaza iar nod*rile coresp*nzatoare starilor rez*ltate s*nt introd*se in
m*ltimea open. Daca m*ltimea open ramane 1ara elemente at*nci n* e)ista nici*n dr*m catre
sol*tie si algoritm*l intoarce esec.
Greed !est"#irst *rmareste mere* sol*tia care pare cea mai aproape de s*rsa. Din acest
motiv n* se vor analiza stari care desi par mai departate de sol*tie prod*c o cale catre sol*tie mai
sc*rta <vezi e)empl*l de r*lare>. De asemenea- intr*cat nod*rile din closed n* s*nt niciodata
ree)plorate se va gasi calea cea mai sc*rta catre scop doar daca se intampla ca aceasta cale sa 1ie
analizata inaintea altor cai catre aceiasi stare scop. Din acest motiv- algoritm*l n* este optim. De
asemenea- pentr* gra1*ri in1inite e posibil ca algoritm*l sa r*leze la in1init c;iar daca e)ista o
sol*tie. .ez*lta ca algoritm*l n* indeplineste nici conditia de completit*dine.
In 1ig*ra de mai 3os se prezinta r*larea algoritm*l*i Greed !est"#irst pe e)empl*l dat mai
s*s. In prim*l pas algoritm*l e)pandeaza nod*l %rad- iar ca nod *rmator de e)plorat se alege /ibi*-
intr*cat are valoarea ;<n> minima. /e alege in conti*are #agaras d*pa care *rmeaza !*c*resti- care
este *n nod 1inal. /e observa insa ca acest dr*m n* este minimal. Desi #agaras este mai aproape ca
distanta geometrica de !*c*resti- in moment*l in care starea c*renta este /ibi* alegerea optimala
este .amnic*"6alcea. In contin*are ar 1i *rmat Pitesti si apoi !*c*resti obtinand*"se *n dr*m c*
32 Bm mai sc*rt.
5
Proiectarea Algoritmilor 2009-2010
3.3 &' (& )tar*
%& reprezinta cel mai c*nosc*t algoritm de ca*tare e*ristica. Cl 1oloseste- de asemenea o
politica !est"#irst- insa n* s*1era de aceleasi de1ecte pe care le are Greed !est"#irst de1init mai
s*s. %cest l*cr* este realizat prin de1inirea 1*nctiei de eval*are ast1el:
f n=g nhn , nNoduri
%& eval*eaza nod*rile combinand distanta de3a parc*rsa pana la nod c* distanta estimata
pana la cea mai apropiata stare scop. (* alte c*vinte- pentr* *n nod n oarecare- f(n) reprezinta
costul estimat al celei mai bune solutii care trece prin n. %ceasta strategie se dovedeste a 1i
completa si optimala daca e*ristica ;<n> este admisibila:
6
Fig 3 : Rulare Greedy Best-First
Proiectarea Algoritmilor 2009-2010
0h nh
*
n , nNodes
*nde ;
&
<n> este distanta e)acta de la nod*l n la cea mai apropiata sol*tie. (* alte c*vinte %&
intoarce mere* sol*tia optima daca o sol*tie e)ista atat timp cat ramanem optimisti si n*
s*praestimam distanta pana la sol*tie. Daca ;<n> n* este admisibila o sol*tie va 1i in contin*are
gasita- dar n* se garanteaza optimalitatea. De asemenea- pentr* a ne asig*ra ca vom gasi dr*m*l
optim catre o sol*tie c;iar daca acest dr*m n* este analizat prim*l- %& permite scoaterea nod*rilor
din closed si reintrod*cerea lor in open daca o cale mai b*na pentr* *n nod din closed <g<n> mai
mic> a 1ost gasita.
%lgoritm*l evol*eaza in 1el*l *rmator: initial se introd*ce in m*ltimea open <organizata ca
o coada de prioritati d*pa 1<n>> nod*l coresp*nzator starii initiale. 7a 1iecare pas se e)trage din
open nod*l c* 1<n> minim. Daca se dovedeste ca nod*l n contine c;iar o stare scop at*nci se
intoarce calea de la starea initiala pana la nod*l n. %lt1el- daca nod*l n* a 1ost e)plorat de3a se
e)pandeaza. Pentr* 1iecare stare rez*ltata- daca n* a 1ost generata de alt nod inca <n* este nici in
open nici in closed> at*nci se introd*ce in open. Daca e)ista *n nod coresp*nzator starii generate in
open sa* closed se veri1ica daca n* c*mva nod*l c*rent prod*ce o cale mai sc*rta catre s. Daca
acest l*cr* se intampla se seteaza nod*l c*rent ca parinte al nod*l*i starii s si se corecteaza distanta
g. %ceasta corectare implica reeval*area t*t*ror cailor care trec prin nod*l l*i s- deci acest nod va
treb*i reintrod*s in open in caz*l in care era incl*s in closed.
Pse*docod*l pentr* %& este prezentat in contin*are:
A-Star (s
initial
, expand, h, solution)
//initializari
closed {}
n new-node()
state(n) s
initial
g(n) 0
(n) nil
open { n }
//Bucla principala
repeat
if open = then return failure
n get_best(open) with f(n) = g(n)+h(n) = min
open open - {n}
7
Proiectarea Algoritmilor 2009-2010
if solution(state(n)) then return build-path(n)
else if n not in closed then
closed closed U {n}
for each s in expand(n)
cost_from_n g(n) + cost(state(n), s)
if not (s in closed U open) then
n' new-node()
state(n') s
(n') n
g(n') cost_from_n
open open U { n'}
else
n' get(closed U open, s)
if cost_from_n < g(n') then
(n') n
g(n') cost_from_n
if n' in closed then
closed closed { n'}
open open U { n'}
end-for
end-repeat
%lgoritm*l prezentat mai s*s va intoarce calea optima catre sol*tie- daca o sol*tie e)ista.
/ing*r*l incovenient 1ata de Greed !est"#irst este ca s*nt necesare reeval*arile nod*rilor din
closed. /i aceasta problema poate 1i rezolvata daca imp*nem o conditie mai tare as*pra e*risticii ;-
si an*me ca e*ristica sa 1ie consistenta <sa* monotona>:
h nh n' cost n , n' , n' expand n
Daca o 1*nctie este consistenta at*nci ea este si admisibila. Daca e*ristica ; indeplineste si
aceasta conditie at*nci algoritm*l %& este asemanator c* Greed !est"#irst c* modi1icarea ca
1*nctia de eval*are este 1 A g D ;- in loc de 1 A ;.
In imaginea de mai 3os se prezinta r*larea algoritm*l*i pe e)empl*l laborator*l*i. /e
observa ca e*ristica aleasa <distanta in linie dreapta> este consistenta si deci admisibila. /e observa
ca in pas*l <e>- d*pa e)pandarea nod*l*i #agaras desi e)ista o sol*tie in m*ltimea open aceasta n*
este aleasa pentr* e)plorare. /e va alege Pitesti- intr*cat 1<nod<!*c*resti>> A $,+ E 1<nod<Pitesti>> A
$1F- semni1icatia acestei inegalitati 1iind ca e posibil sa e)iste prin Pitesti *n dr*m mai b*n catre
!*c*resti decat cel descoperit pana ac*m.

Proiectarea Algoritmilor 2009-2010


3.+ ,-./0&1 Comple2itatea algoritmului &'
Pe langa proprietatile de completit*dine si optimalitate %& mai are o calitate care il 1ace
atragator: pentr* o e*ristica data orice algoritm de ca*tare complet si optim va e)plora cel p*tin la
9
Fig 4 : Rulare A*
Proiectarea Algoritmilor 2009-2010
1el de m*lte nod*ri ca %&- ceea ce inseamna ca %& este optimal din punctul de vedere al
eficientei. In practica- insa- %& poate 1i de m*lte ori imposibil de r*lat datorita dimensi*nii prea
mari a spati*l*i de ca*tare. /ing*ra modalitate prin care spati*l de ca*tare poate 1i red*s este prin
gasirea *nei e*ristici 1oarte b*ne c* cat e*ristica este mai apropiata de distanta reala 1ata de stare
sol*tie c* atat spati*l de ca*tare este mai strans <vezi 1ig*ra de mai 3os>. /"a demonstrat ca spati*l
de ca*tare incepe sa creasca e)ponential daca eroarea e*risticii 1ata de distanta reala pana la sol*tie
n* are o crestere s*be)ponentiala:
hnh
*
nOlogh
*
n
Din pacate- in ma3oritatea caz*rilor- eroarea creste liniar c* distanta pana la sol*tie ceea ce
1ace ca %& sa devina *n algoritm mare cons*mator de timp- dar mai ales de memorie. Intr*cat in
proces*l de ca*tare se retin toate nod*rile de3a e)plorate <m*ltimea closed>- in caz*l *nei
dimensi*ni mari a spati*l*i de ca*tare cantitatea de memorie alocata ca*tarii este in cele din *rma
ep*izata. Pentr* acest incovenient a* 1ost gasite mai m*lte sol*tii. Gna dintre acestea este *tilizarea
*nor e*ristici care s*nt mai stranse de distanta reala pana la starea scop- desi n* s*nt admisibile. /e
obtin sol*tii mai rapid- dar n* se mai garanteaza optimalitatea acestora. #olosim aceasta metoda
cand ne intereseaza mai m*lt sa gasim o sol*tie repede- indi1erent de optimalitatea ei. %lte abordari
pres*p*n sacri1icarea timp*l*i de e)ec*tie pentr* a margini spati*l de memorie *tilizat 435. %ceste
alternative s*nt prezentate in contin*are:
3.3 ,-./0&1 ID&'4 0#%)4 5&'
I!" <Iterative deepening %&> 4,5 *tilizeaza concept*l de adancire iterativa415425 in
proces*l de e)plorare a nod*rilor la *n an*mit pas se vor e)plora doar nod*ri pentr* care 1*nctia
de eval*are are o valoare mai mica decat o limita data- limita care este incrementata treptat pana se
gaseste o sol*tie. ID%& n* mai necesita *tilizarea *nor m*ltimi pentr* retinerea nod*rilor e)plorate
si se comporta bine in caz*l in care toate acti*nile a* acelasi cost. Din pacate- devine ine1icient in
moment*l in care cost*rile s*nt variabile.
#BFS <.ec*rsive !est"#irst /earc;> 4'5 1*nctioneaza intr"*n mod asemanator c* D#/-
e)plorand la 1iecare pas nod*l cel mai promitator 1ara a retine in1ormatii despre nod*rile de3a
e)plorate. /pre deosebire de D#/- se retine in orice moment cea mai b*na alternativa s*b 1orma
10
Fig 5 : olu!ul s"atiului de cautare in functie de euristica aleasa
Proiectarea Algoritmilor 2009-2010
*n*i pointer catre *n nod nee)plorat. Daca valoarea 1*nctiei de eval*are <1 A g D ;> pentr* nod*l
c*rent devine mai mare decat valoarea caii alternative- dr*m*l c*rent este abandonat si se incepe
e)plorarea nod*l*i retin*t ca alternativa. .!#/ are avanta3*l ca spati*l de memorie creste doar
liniar in raport c* l*ngimea caii analizate. 0arele dezavanta3 este ca se a3*nge de cele mai m*lte ori
la ree)pandari si ree)plorari repetate ale acelorasi nod*ri- l*cr* care poate 1i dezavanta3os mai ales
daca e)ista m*lte cai prin care se a3*nge la aceiasi stare sa* 1*nctia expand este costisitoare
comp*tational <vezi problema deplasarii *n*i robot intr"*n medi* real>. .!#/ este optimal daca
e*ristica 1olosita este admisibila.
$!" <0emor"bo*nded %&> este o varianta a %& in care se limiteaza cantitatea de
memorie 1olosita pentr* retinerea nod*rilor. C)ista do*a versi*ni 0%& 4F5si /0%& 4$5 </imple
0emor"!o*nded %&>- ambele bazand*"se pe acelasi principi*. /0%& r*leaza similar c* %& pana
in moment*l in care cantitatea de memorie devine ins*1icienta. In acest moment spati*l de
memorie necesar ada*garii *n*i nod no* este obtin*t prin stergerea cel*i mai p*tin promitator nod
de3a e)plorat. In caz*l in care e)ista o egalitate in privinta valorii 1*nctiei de eval*are se sterge
nod*l cel mai vec;i. Pentr* a evita posibilitatea in care nod*l sters este tot*si *n nod care cond*ce
la o cale optimala catre sol*tie valoarea 1 a nod*l*i sters este retin*ta la nod*l parinte intr"*n mod
asemanator 1el*l*i in care in .!#/ se retine cea mai b*na alternativa la nod*l c*rent. /i in acest
caz vor e)ista ree)plorari de nod*ri- dar acest l*cr* se va intampla doar cand toate caile mai
promitatoare vor es*a. Desi e)ista probleme in care aceste regenerari de nod*ri a* o 1recventa care
1ace ca algoritm*l sa devina intractabil- 0%& si /0%& asig*ra *n compromis b*n intre timp*l de
e)ec*tie si limitarile de memorie.
Concluzii
Deseori sing*ra modalitate de rezolvare a problemelor di1icile este de e e)plora gra1*l
starilor acelei probleme. %lgoritmii clasici pe gra1*ri n* s*nt potriviti pentr* ca*tarea in aceste
gra1*ri 1ie pentr* ca n* garanteaza *n rez*ltat 1ie pentr* ca s*nt ine1icienti.
%lgoritmii e*ristici s*nt algoritmi care e)ploreaza ast1el de gra1*ri 1olosind*"se de o
in1ormatie s*plimentara despre mod*l in care se poate a3*nge la o stare scop mai rapid. %& este-
teoretic- cel mai e1icient algoritm de e)plorare e*ristica. In practica- insa- pentr* probleme 1oarte
di1icile- %& implica *n cons*m prea mare de memorie. In acest caz se 1olosesc variante de
algoritmi care incearca sa minimizeze cons*m*l de memorie in de1avoarea timp*l*i de e)ec*tie.
!espo"sa#il la#orator$ %arius-A"drei &a"ila
'marius.da"ila(cti.pu#.ro)
11
Proiectarea Algoritmilor 2009-2010
0e6erine
415 /. .*ssel- P. 9orvig " %rti1icial Intelligence: % 0odern %pproac; " Prentice Hall- 2
nd
Cdition
cap. $
425 (.% Gi*male Introd*cere in %naliza %lgoritmilor- cap. F
435 0e;*l /;a; " %lgorit;ms in t;e real 8orld < (o*rse 9otes> " Introd*ction to 67/I ro*ting
4$5 /. .*ssel " C11icient memor"bo*nded searc; met;ods
4,5 .. Ior1 " Dept;"1irst iterative"deepening: an optimal admissible tree searc;
4'5 .ec*rsive !est"#irst /earc; " Prezentare
4F5 P. (;aBrabati- /. G;os;- %. %c;ara- /. De/arBar He*ristic searc; in restricted memor
425 JiBipedia " Iterative deepening
4K5 %. C. Prieditis " 0ac;ine Discover o1 C11ective %dmissible He*ristics
41+5 JiBipedia " Lravelling salesman problem " He*ristic and appro)imation algorit;ms
4115 JiBipedia %&
4125 L*torial %&
4135 H. Iaindl- %. I;orsand " 0emor !o*nded !idirectional /earc;- %%%I"K$ Proceedings
12
Proiectarea Algoritmilor 2009-2010
Proiectarea Algoritmilor 2009-2010
Laborator 11
Algoritmi euristici de explorare. A*
6.1 Problema 1 (7 + 1 pct.)
/e considera *rmator*l 3oc <2"p*zzle>: 2 piese s*nt asezate pe *n grid c* K pozitii. O piesa
poate 1i m*tata in orice moment in stanga- dreapta- s*s sa* 3os atat timp cat spati*l in care este
m*tata este spati*l gol. /cop*l 3oc*l*i este ca plecand de la o con1ig*ratie initiala sa se a3*nga la o
con1ig*ratie prede1inita:
(% pct) Implementati algoritm*l %& pentr* problema 2"p*zzle. Lineti seama- la testare- ca
in caz*l 2"p*zzle n* se poate a3*nge dintr"o con1ig*ratie data in orice con1ig*ratie posibila.
<;ttp:??en.8iBipedia.org?8iBi?#i1teen=p*zzleM/olvabilit>. Implementarea se va 1ace in
1isierele %/tar.cpp ? %star.3ava. #*ncta de e)pandare- predicat*l de stare 1inala si e*ristica
s*nt de3a implementate in mod*l*l de testare P*zzle/olver.cpp? P*zzle/olver.3ava
(& pct bonus) Implementati o varianta simpli1icata de %& in care sa plecati de la
pres*p*nerea ca e*ristica 1olosita este consistenta.
6.2 Problema 2 (1 + 1 pct.)
O modalitate importanta de constr*ire a e*risticilor este asa n*mita te;nica a problemei
relaxate 415. /pre e)empl* sa consideram problema 2 p*zzle. 0od*l in care p*tem m*ta piesele
este g*vernat de 3 reg*li:
O piesa se poate m*ta din pozitia % in pozitia !
O piesa se poate m*ta din pozitia % in pozitia ! daca pozitiile % si ! s*nt adiacente
O piesa se poate m*ta din pozitia % in pozitia ! daca ! este goala
13
Proiectarea Algoritmilor 2009-2010
O versi*ne rela)ata a *nei probleme este o varianta a acestei probleme in care dispar *n
n*mar de reg*li. /pre e)empl*- ne p*tem imagina o varianta rela)ata a 2"p*zzle in care e valabila
doar prima reg*la. /e observa ca sol*tia pentr* problema originala este in acelasi timp sol*tie si
pentr* problema rela)ata. Dar pentr* ca problema rela)ata are mai p*tine reg*li- sol*tia optima va
avea *n n*mar mai mic de pasi- deci *n dr*m mai sc*rt de la starea initiala la cea tinta. (* alte
c*vinte- costul unei solutii optimale pentru problema relaxata este o euristica admisibila
pentru problema ori'inala. 0ai m*lt- e*ristica ast1el constr*ita este si consistenta.
In P*zzle/olver.cpp?P*zzle/olver.3ava aveti de1inita e*ristica obtin*ta din rela)area care
contine doar prima reg*la <n*mita 0issplaced Liles He*ristic>. C*ristica intoarce pentr* o
con1ig*ratie de p*zzle n*mar*l de piese care n* s*nt pe pozitiile in care treb*ie sa 1ie. 0otivatia
este ca daca e valabila doar prima reg*la- pentr* a rezolva problema m*tam piesele care n* s*nt pe
pozitiile lor la loc*l potrivit si am termiant. Deci- n*mar*l de m*tari este egal c* n*mar*l de piese
nearan3ate.
(onstr*iti e1icient e*ristica obtin*ta din rela)area care contine doar a do*a reg*la
<0an;attan Distance He*ristic> in 1isier*l P*zzle/olver <ganditi"va c*m si care e n*mar*l minim
de pasi in care se rezolva aceasta problema rela)ata>. Observati cate nod*ri s*nt e)pandate 1ata de
prima e*ristica.
(Bonus &p() " Implementati e*ristica care 1oloseste doar a III"a reg*la <Gasc;nigNs
He*ristic>
7.+ Problema 3 (2 pct.*
() pct) 0*lte e*ristici p*ternice pot 1i create 1olosind*"ne de rezolvari complete ale *nei
probleme partiale- mai mici- derivata din problema originala. /a consideram 2"p*zzle. O problema
partiala este- de e)empl*- cea in care ne intereseaza sa asezam doar piesele 1- 2- 3- $ la loc*rile lor:
Intr*cat aceasta este o problema mai simpla- ea poate 1i rezolvata direct si p*tem sti
n*mar*l e)act de pasi pana la o stare 1inala din orice stare data pentr* problema partiala. De
asemenea- se observa *sor ca aceasta e*ristica e)acta pentr* problema partiala este o e*ristica
admisibla si consistenta pentr* problema originala si poate 1i 1olosita ca atare in algoritm*l %&.
P*tem alege si alte piese in a1ara de 1-2-3-$. /pre e)empl* *n pattern c* ,-'-F-2. 0ai m*lt-
pentr* o stare s pentr* care dorim sa calc*lam e*ristica p*tem l*a ma)im*l dintre e*ristica
coresp*nzatoare problemei partiale 1-2-3-$ si e*ristica problemei partiale ,-'-F-2- pro1itand de
*rmatoarea proprietate:
14
Proiectarea Algoritmilor 2009-2010
Daca h
1,
h
2,
h
3,
... , h
k
admisibilehn=max
i =1
k
h
i
n esteadmisibila.
Plecand de la acest principi* se constr*iesc asa n*mitele pattern databases se pleaca de la
starea scop si se merge in sens invers- e)pandand nod*rile pana cand toate posibilitatile de pattern"
*ri a* 1ost e)plorate. Intr*cat ne intereseaza distanta minima de la *n an*mit pattern pana la sol*tie-
aceasta e)plorare a pattern"*rilor treb*ie sa 1ie o e)plorare !readt;"#irst. #olosind aceasta
parc*rgere vom asocia 1iecar*i pattern cost*l sol*tiei pana la starea tinta intr"o str*ct*ra de tip ;as;
map.
In moment*l in care vom dori sa a1lam e*ristica *nei stari a p*zzle"*l*i vom 1ace looB*p
pe pattern"*l coresp*nzator acest*i pattern in tabela ;as; si vom obtine valoarea e*risticii. Daca
avem mai m*lte tabele pentr* mai m*lte tip*ri de pattern"*ri vom 1ace ma)im*l intre valorile
coresp*nzatoare 1iecar*i pattern. /*perioritatea acestor e*ristici a 1ost dovedita e)perimental 415.
Implementati o e*ristica pentr* problema 2"p*zzle 1olosind sol*tii pentr* problemele
partiale coresp*nzatoare pattern"*rilor O1-2-3-$P si O,- '- F- 2P si observati cate nod*ri s*nt
e)pandate comparativ c* celelalte e*ristici implementate. .ezolvarea se va 1ace in
Pattern.cpp?Database.3ava *nde veti implementa mod*l in care baza de date este generata.
,-2tra1 /ema !e gan!ire
Partic*larizati algoritm*l %& pentr* a rezolva problema c*b*l*i .*biB.
0area di1ic*ltatea in caz*l acestei probleme este n*mar*l mare de posibilitati de
e)pandare- ceea ce necesita o e*ristica 1oarte b*na pentr* a preveni ep*izarea rapida a memoriei.
Prima e*ristica *tila pentr* aceasta problema n* a 1ost inventata de *n om- ci de *n program
%!/O76C.4K5 care 1oloseste te;nica problemei rela)ate. Lot %!/O76C. a gasit cea mai
e1icienta e*ristica pentr* problema 2"p*zzle si 1,"p*zzle.
15

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