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