INF 3/4130 19. oktor 2006 Dgns: Kpittl 10 og 23 i hovok Fr kp 10 : Dy-først og rnh-n-oun søk Fr kp 23: A*-søk Olig 2 hr liggt ut n stun. Frist 27 oktor. Konkurrns: Kommr i løpt v n uk (15-spill?) Frist. 20 novmr Forlsning nst uk: Dino Krg strtr om NP-komplttht, uvgjørrht, t. NB: På rommt Alf-Omg i 4. tsj (NR) 1 Søk i tilstnsrom Kp 10: Hrfr skl vi minn om (fr INF 1020) Bktring lgorithms y først søk i tilstnsrommt Trngr lit lgrplss Brnh n oun (l knskj ikk klt t i INF 1020?) Br først søk, m vrintr Trngr my plss: Må hol i lgrt ll nor (tilstnr) som r stt, mn som ikk r sturt Vrintr: Kn f.ks. gi hvr no n lovn-ht, og gå vir lngs n non som r mst lovn (huristikk). Dtstruktur: Priorittskø, liknr på Dijkstrs kortst vi Et ltrntiv til å gjør rnt r-først-søk (ikk i ok): Gjør y-først-søk til nivå 1, så nytt søk til nivå 2, osv. Om t r stor forgrningsfktor tr ikk tt så my mr ti nn vnlig r-først Og t krvr my minr plss Kp 23: Hrfr skl vi t om A*-søk. Liknr my på rnh-n-oun m priorittskø Mn om vi sttr viss krv til huristikkn, så får vi n lgoritm lis Dijkstrs Kortst vi -lgoritm
Mollr for vgjørlssskvnsr Dt r flr måtr å mollr vgjørlssskvnsr for t gitt prolm Gitt mollringsmåt: D mulig skvnsn nnr t tr Eksmpl, finn mulig Hmiltonin Cyl (innom ll non én og r én gng): Hmiltonin Cyl Hr opplgt ingn Hmiltonin Cyl To måtr å mollr tt på: Strt vi i tilflig no og forlng vin på ll mulig måtr Mulig vlg i stgt i lgoritmn: All kntr (ut fr sist vi-no så lngt) som ikk går tilk til llr rukt no. Strt m n knt, og lgg stig til n knt til: Mulig vlg i stgt i lgoritmn: All ikkvlgt kntr som gjør t ll smmnhngn komponntn v vlgt kntr frmls forlir nkl vir Førr til forskjllig stt sp tr = tilstnsrom-trt Prolm stt : Tilstnr r n l vlg r gjort Gol stts : Dt gjort t ntll vlg, og vi står m n løsning. Mollr for vgjørlssskvnsr Tr-struktur ut fr først moll: Vlg n no og forlng vin fr nn på ll mulig måtr Mulig vlg i stgt i lgoritmn: All kntr (ut fr sist vi-no så lngt) som ikk går tilk til llr rukt no. -
Mollr for vgjørlssskvnsr Tilstns-tr ut fr nr molln: Strt m n knt, og lgg stig til n knt til: Mulig vlg i stgt i lgoritmn: All ikkvlgt kntr som gjør t ll smmnhngn komponntn v vlgt kntr frmls forlir nkl vir C B D F G A E B C G D A E F G - B C D E F G E Forskjllig mollr kn gi r/årligr mulightr for vskjæring. Eksmplr fr ok: Figur 10.3 og 10.4 (Sust sum) Si 719 (8-spill, litn utgv v 15-spill) Dy-først søk/tilksporing Gjnnomsøkr tilstnsroms-trt y-først, til vi kommr til n måltilstn Brukr grist n rkursiv prosyr, som hr slv prolmstillingn som glol t. Tr litn plss: Holr r non mllom rotn og n non mn r i Kn ruk huristikk til å først vlg mst lovn vi ut v n non vi nå står i (f.ks. nærmst-knt-først, om mn vil finn kortst Hm. Cyl). Må ruk vskjæring så got som mulig (pruning, ouning): Ikk gå n i sutrær som umulig kn innhol n mål-tilstn. Hr: Kn vær lur F.ks.: Når mn hr vlgt, og, kn mn s t ll tilk-kntr til r sprrt, og t tt ikk kn før til n Hm. Cyl.
Brnh n oun Brukr n llr nnn form for r-først-søk Blir n mng v nor som ok kllr Liv Nos Dtt r som r stt, mn ikk fulgt opp. NB: Kn li stor! Liv nos vil vær t snitt gjnnom tilstnsrom-trt (grønn) All ovr (nærmr rotn) r mn frig m (lå) All unr r ikk stt n (gul) Stgt: Vlg n no N fr mngn LivNos Er N n mål-no? Om j: Frig! Om ni: T N ut v livnos -køn Stt ll N s rn inn i Liv Nos -køn Tr strtgir: LN-mngn r n FIFO-kø Ekt r først LN-mngn r n LIFO-kø Liknr på y-først LN-mngn r prioritskø, m n psslig huristikk som prioritt (hvor lovn r non) Liknr my på A*-søk (kommr) Kn slvfølglig også ruk trisjonll vskjæring (ouning, pruning) Søk ttr st løsning, ié 1 For nklhts skyl: Bst løsning r n mål-non som r nærmst rotn, rgnt i ntll kntr (mn lr sg ltt gnrlisr) D måvi ikk tnk på Hm. Cyl som ksmpl (ll mål-nor lik yp) Ié1: Bruk y først, og ruk ll vnlig vskjæring slik som før Hol n glol vril hittil kortst lng : HKL Gå lri ypr n t st vi hr stt til nå, s tgning Om vi også kn rgn t minstmål for hvor lngt t r til nærmst mål-no får vi n r vskjæring Kn oft på forhån rgn n øvr grns for hvor lngt unn st målno r. Stts som strtvri for HKL. - HKL z x y x x
Søk ttr st løsning, ié2 Litt fornrt fr forlsningn SOM FØR: Bst løsning r n mål-non som r nærmst rotn, rgnt i ntll kntr. Ié 2: Bruk rn r først. Dtt vil hlt rtt frm gi st løsning utn non gng å gå for ypt Altrntiv, om optimlittskritrit r litt mr komplisrt nn r nærmst mulig rotn : Bruk prioritrt r-først søk. Prioritt: Estimt for hvor snnsynlig t r t st no liggr i mitt sutr. Også hr: Hol n glol vril hittil st no : HBN Om u kommr til n no r t r sikkrt t ingn i hl nons sutr r r nn HBN, så skjær v. MEN: Mn må gnrlt fortstt søkt inntil ll grnr r vskårt som skrvt i forrig punkt, ltså til prioritskøn v stt, mn ikk hnl nor r tom. Hr vil A*-søk gi r løsning. - z x y HBN x x Itrtiv r først (ikk i ok) Et ltrntiv om mn vil gjør rnt r-først-søk Brukr lik lit plss som y først søk Mn må gjør litt ri om igjn Ié: Gjør y-først-søk til nivå 1, så t hlt nytt søk til nivå 2, osv. Om t r stor forgrningsfktor tr ikk tt så my mr ti nn vnlig r-først Og t krvr ltså my minr plss Kn også ruks m priorittr/huristikkr t.
A*-søk Ellr: Dijkstrs kortst vi lgoritm, m huristikk! A*-søk gnr sg for prolmr r vi hr n (ksplisitt llr implisitt) grf v tilstnr, M n strt-tilstn, og t ntll mål-tilstnr Mulig tilstns-ovrgngr (rtt kntr) m n gitt kost. Og: Skl finn n vi fr strt til n mål-tilstn m, m miniml kost. Altså logisk stt: kortst-vi-prolmt r S si 728/29, figurr 23.8 23.10. Hr r h(x) = vstnn i rtt linj Strtgin r t r-først-søk, m huristikk Vi rukr n huristikk-funksjon h(x) for stig å vlg mst lovn vi Altså r-først-søk m n priorits-kø for vlg v nst fr LivNos Mn: Må h spsill krv på h(x) for t lgoritmn skl li lik nkl som Dijkstr Finns vrintr til fullt A*-søk (A-søk, A*-søk utn ll h(x)-krv oppfylt) PQ Krv (monotonitt): Krv til h(x) 1. Huristikk-funkjsonn h(x) r minr-llr-lik lngn v fktisk kortst vi fr x til nærmst mål-no 2. Om t r knt fr x til y m vkt w(x,y), så skl gjl: h(x) <= h(y)+w(x,y) 3. All mål-nor m hr h(m) = 0, og llrs må vi h h(m)>= 0. Om h(x) llti r 0, så r iss oppfylt. D får vi Dijkstrs lgoritm. Dt fin r t krv 2 og 3 mførr krv 1, så vi slippr å tnk på krv 1. Bvis: Vi ntr t x -> y -> z -> mål-no r kortst vi fr x til nærmst mål-no: x h(x) <= h(y) + w(x,y) Nærmst mål-no m z y h(y) <= h(z) + w(y,z) h(z) <= h(mål) + w(z,mål) = w(z,mål) Kominrr vi iss får vi: h(x) <= w(x,y) + w(y,z) + w(z, m) Altså: h(x) <= kortst vi til nærmst målno.
Om A-søk og vrintr v A*-søk Om u hr n huristikk h(v) for hvor lngt t r til n mål-no Og h(v) kn vær å litt for stor og litt for litn D klls tt A-søk (vlig likt prioritrt r-først-søk) Om vi vt t h(x) lri vil vær størr nn n virklig kortst vi til målt Mn ikk tilfrstillr t full monotonitskrv Og vi rukr n Dijkstr-liknn lgoritm, m psslig ruk v h(x) D vil vi llti til slutt få riktig rsultt (kortst vi fr strt til nærmst mål) Mn vi må stig gå tilk til nor vi tro vi vr frig m og opptr lngn, og rm få my kstr-ri! Hr r ok ssvrr ikk hlt go hr (s trykkfil-listn). Vi tr rfor ikk tt m som pnsum Dt for slv A* lgoritmn (si 725/726) Vi hr n rttt grf G m kntvktr w(x,y), n strtno og t ntll målnor, smt n monoton huristikk-funksjon h(x). Hvr no x hr i tillgg følgn vril: g(x) = forløpig kortst vi fr strtnon. Dnn vil stig fornr sg unr lgoritmn, mn vil til slutt få lngn v kortst vi fr strtnon til x. prnt(x) som skl li forlr-pkr i t tr v kortst vir fr strt-non f(x) som hl tin r lik g(x)+h(x), ltså t stimt v vilngn fr strt til t mål gjnnom x. Vi hr n prioritts-kø PQ v nor, r priorittn går på vrin v f(x) Dnn initilisrs m r strt-non s, m g(s)=0, og h(s) vilkårlig. (Dtt mnglr i slv prosyr-skrivlsn i ok, si 725) D non som for øylikkt ikk r i PQ ls i to typr Tr-nor: Diss hr n forlr-pkr i t tr m strtnon som rot (kortst vi til rotn-trt). Diss hr ll vært i PQ, og v strtn r t ingn slik tr-nor. Ustt nor ( vi ikk hr kommt orti så lngt)
Figur for A* lgoritmn Tr-nor: Blå PQ-nor: Grønn Ustt nor: Gul All nor v hr: h(v): En fst huristikk-vri for hvr no g(v): Forløpig kortst vi fr r (fornrr sg) forlrpkr: Visr vi tilk til r, ut fr nåværn g-vri) f(v): g(v) + h(v) r All nor m pkr fr lå nor, må vær grønn llr lå PQ Slv lgoritmn PQ initilisrs ltså m r strt-non, m g(s) = 0 (ll nr r ustt) Stgt, som gjnts så lng PQ ikk r tom llr vi trffr n mål-no: Plukk n st prioritrt non x ut fr PQ (m minst f-vri) Drsom x r n mål-no, sluttr hrv lgoritmn g(x) og prnt(x) ngir kortst vi fr strtnon og n ktull vin (klngs). T ny mist ut v PQ, kll n x, og l n li n tr-no Dn hr ll nå sin forlr-pkr og g(x) stt riktig, vis kommr S på ll nor til x lnt ustt nor, og for hvr slik y: Stt g(y) = g(x) + w(x,y), f(y) = g(y) + h(y) smt prnt(y) = x og stt y inn i PQ S på ll nor til x i PQ, og for hvr slik y: Drsom g(y) > g(x) + w(x,y) så stt g(y) = g(x) + w(x,y) og prnt(y)= x Vi sr ltså ikk på non til x som r tr-nor! At t går r krvr t vis som kommr på nst foiln. Algoritmn kn ltså slutt på to måtr: V t PQ lir tom. Dt tyr t t ikk går non vi fr strtnon til n mål-no V t vi kommr til n mål-no m, og r g(m) lngn v kortst vi fr strtnon til m og prnt(m) ngir slv vin. Om h(x) = 0 for ll nor, så lir tt ltså Dijkstrs kortst-vi-lgoritm
A*-søk går utn tilklgging m monoton h(x) Om vi rukr h(x) = 0 for ll nor, så lir tt Dijkstrs kortst-vilgoritm. V å ruk huristikkn håpr vi å konsntrr oss mr om vin som førr til t mål, slik t lgoritmn går rskr. Mn, vi tr non ut v PQ i n nnn rkkfølg nn i Dijkstr-lgoritmn Dtt kunn før til t riktig vilng ikk r kommt inn i n no x når n ts ut v PQ og ovr i trt (slik t vi stig mått gå tilk og opptr g(v) og prnt(v) for nor y i trt (som hr forltt PQ) Hligvis gjlr (proposition 23.3.2 i ok): Om h(x) r monoton, så vil vrin v g(x) og prnt(x) llti h litt riktig i t øylikk x ts ut v PQ ovr i trt. Drm høvr vi lri gå tilk i trt og opptr no. Og lgoritmn lir v smm orn som Dijkstr-lgoritmn Bvis på nst foil. Mrk: Dt r n viktig trykkfil på si 724, forml 23.3.7: Dr t står: h(v) + h(v) skl t stå h(v) <= g(v) + h(v) Figur til vist for t nor hr fått riktig g-vri når ts ut v PQ r=v 0 x lir nå vlgt som nst no som skl ut PQ, og x kn rfor ikk h størr f-vri nn v k+1 v k Tr-nor PQ og ustt nor v k+1 x=v j Vi visr ssnsilt t ll iss må h smm f- vri, og rm også smm g-vri
Bvis: Jg mnr vi må ruk inuksjon (ikk i ok): Inuksjonshypots: Stningn gjlr for ll y som r flyttt fr PQ til trt før x. Vi visr t gjlr n også for x. Vi lr gnrlt g*(v) vær lngn v kortst vi fr strt-non til non v. Vi sr på situsjonn når x ts ut v PQ, og vi sr på n noskvns P: strt-non = v 0, v 1, v 2,, v j = x som r n kortst vi fr strt-non til x (m lng g*(x) ) Vi ntr t v 0, v 1,, v k (mn ikk v k+1 ) r litt tr-nor når x ts ut v PQ. Non v k+1 r ltså i PQ når x lir ttt ut v køn. Ut fr monotonittn vt vi (for i = 0, 1,, j-1) g*(v i ) + h(v i ) <= g*(v i ) + h(v i+1 ) + w(v i, v i+1 ) Sin kntn fr v i til v i+1 r m i n kortst til v i+1, gjlr g*(v i+1 ) = g*(v i ) + w(v i, v i+1 ) Til smmn gir to sist: g*(v i ) + h(v i ) <= g*(v i+1 ) + h(v i+1 ) som så gir, v å l i vær k+1, k+2,, j-1 g*(v k+1 ) + h(v k+1 ) <= g*(v j ) + h(v j ) = g*(x) + h(x ) Ut fr inuksjonshypotsn vt vi t g(v k ) = g*(v k ), og rm må også (ut fr ksjonn når v k l ttt ut v PQ) g(v k+1 ) = g*(v k+1 ), slv om n liggr i PQ Drv hr vi: f(v k+1 ) = g(v k+1 )+h(v k+1 ) = g*(v k+1 )+h(v k+1 ) <= g*(x)+h(x ) <= g(x)+h(x) = f(x) Hr må imilrti ll <= vær likhtr, llrs vill f(v k+1 ) < f(x), og vill ikk x litt ttt ut v køn før v k+1. Drv r g*(x)+h(x ) = g(x)+h(x) og ltså g*(x) = g(x). Eksmplr på A*-søk (kopirt opp på tr. foil) Eksmpl i kp. 23.3.2: Finn kortst løsning i 8-spill Figurr si 719 og 727