3. Gráfkeres stratégia

Hasonló dokumentumok
2. Visszalépéses stratégia

2. Visszalépéses keresés

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Keresések Gregorics Tibor Mesterséges intelligencia

Mesterséges intelligencia. Gregorics Tibor people.inf.elte.hu/gt/mi

Mesterséges intelligencia 2. laborgyakorlat

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

f(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva

Kereső algoritmusok a diszkrét optimalizálás problémájához

Mesterséges Intelligencia MI

1. Milyen hatással van a heurisztika általában a keresõ rendszerek mûködésére?

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Kereső algoritmusok a diszkrét optimalizálás problémájához

Iványi Antal alkotó szerkeszt INFORMATIKAI ALGORITMUSOK

ÖSSZEFOGLALÁS a Bsc záróvizsga mesterséges intelligenciáról szóló témaköréhez

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

Intelligens Rendszerek Elmélete IRE 4/32/1

23. SZÉLESSÉGI BEJÁRÁS

V. Kétszemélyes játékok

Gráfkeresések A globális munkaterületén a startcsúcsból kiinduló már feltárt utak találhatók (ez az ún. kereső gráf), külön megjelölve az utak azon

Problémamegoldás kereséssel. Mesterséges intelligencia március 7.

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

Diszkrét matematika 2.C szakirány

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Diszkrét matematika 2.C szakirány

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2010/2011 1/363

Alap fatranszformátorok II

Bevezetés. 1. fejezet. Algebrai feladatok. Feladatok

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Kiterjesztések sek szemantikája

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Diszkrét matematika 2.C szakirány

Függvények növekedési korlátainak jellemzése

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Diszkrét matematika 2.

1. AZ MI FOGALMA. I. Bevezetés. Ers mesterséges intelligencia (EMI) Gyenge mesterséges intelligencia. MI története. Els szakasz (60-as évek)

Diszkrét matematika 1. estis képzés

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

f(x) a (x x 0 )-t használjuk.

A sorozat fogalma. függvényeket sorozatoknak nevezzük. Amennyiben az értékkészlet. az értékkészlet a komplex számok halmaza, akkor komplex

Chomsky-féle hierarchia

Deníciók és tételek a beugró vizsgára

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Diszkrét matematika 2. estis képzés

Sorozatok és Sorozatok és / 18

Diszkrét matematika 2.C szakirány

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

Amortizációs költségelemzés

Mesterséges Intelligencia MI

3. Feloldható csoportok

... fi. ... fk. 6. Fabejáró algoritmusok Rekurzív preorder bejárás (elsőfiú-testvér ábrázolásra)

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Diszkrét matematika 2. estis képzés

Markov-láncok stacionárius eloszlása

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

Programozási módszertan. Dinamikus programozás: A leghosszabb közös részsorozat

Korlátozás és szétválasztás elve. ADAGOLO adattípus

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Haladók III. kategória 2. (dönt ) forduló

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Tuesday, March 6, 12. Hasító táblázatok

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Diszkrét matematika 2. estis képzés

Analízis előadás és gyakorlat vázlat

1. tétel - Gráfok alapfogalmai

Eloadó: Dr. Várterész Magdolna

ZH feladatok megoldásai

Gráfkeresések A globális munkaterületén a startcsúcsból kiinduló már feltárt utak találhatók (ez az ún. kereső gráf), külön megjelölve az utak azon

Számítógép és programozás 2

A digitális számítás elmélete

Mesterséges intelligencia

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Véletlen bolyongás. Márkus László március 17. Márkus László Véletlen bolyongás március / 31

Bevezetés az informatikába

Diszkrét matematika 2. estis képzés

angolul: greedy algorithms, románul: algoritmi greedy

A félév során előkerülő témakörök

1. AZ MI FOGALMA. I. Bevezetés. Tulajdonságok. Kezdet ELIZA. Első szakasz (60-as évek)

1. feladat Az egyensúly algoritmus viselkedése: Tekintsük a kétdimenziós Euklideszi teret, mint metrikus teret. A pontok

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

1. Példa. A gamma függvény és a Fubini-tétel.

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

Formális nyelvek - 9.

SHk rövidítéssel fogunk hivatkozni.

Kiegészítő részelőadás 1. Az algoritmusok hatékonyságának mérése

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Dijkstra algoritmusa

19. AZ ÖSSZEHASONLÍTÁSOS RENDEZÉSEK MŰVELETIGÉNYÉNEK ALSÓ KORLÁTJAI

Számelméleti alapfogalmak

1. Parciális függvény, parciális derivált (ismétlés)

Alapfogalmak, valós számok Sorozatok, határérték Függvények határértéke, folytonosság A differenciálszámítás Függvénydiszkusszió Otthoni munka

Mesterséges intelligencia 1 előadások

2. Reprezentáció-függvények, Erdős-Fuchs tétel

Algoritmusok bonyolultsága

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

Algoritmusok bonyolultsága

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Átírás:

3. Gráfkeres stratégia A gráfkeres rendszer olyan KR, amelynek globális munkaterülete a startcsúcsból kiinduló már feltárt utakat (részgráfot) tárolja kiinduló értéke: a startcsúcs, terminálási feltétel: megjelenik egy célcsúcs vagy megakad az algoritmus. keresés egy szabálya: egy csúcs rákövetkezit állítja el (kiterjeszti), vezérlés stratégiája: a legkedvezbb csúcs kiterjesztésére törekszik, 3.. A gráfkeres alapalgoritmus Jelölés: G - keresgráf NYÍLT - nyílt csúcsok halmaza Γ - kiterjesztés kiterjesztett csúcsok- zárt csúcsok halmaza Az absztrakt keresési tér a továbbiakban is egy nem feltétlenül véges δ-gráf. Nulladik verzió Procedure GK0. G {s}: NYÍLT {s}. while not üres(nyílt) loop 3. n elem(nyílt) 4. if cél(n) then return van megoldás. G G Γ(n) 6. NYÍLT NYÍLT {n}: NYÍLT NYÍLT Γ(n) 7. endloop 8. return nincs megoldás end [3,3,3]. [,3,3] [,3,3]. [,,3] [,,3] 3. [,,3] [,,3] 4. [3,,3] [3,,3] [,,] [,,]. 6. [3,,] [,,] [,,] [3,,] 8. 7. [3,,] [,,] [,3,] [,3,] [3,,] 9. [,,] [,,] [,3,] [3,3,] [3,3,] [,3,] [,,] Körökre érzékeny Zárt csúcs ne lehessen újra nyílt? Nehezen olvasható ki a megoldás Jelölni kellene az utakat Nem feltétlenül talál optimális megoldást Megjegyzés 3.. Általános gráfkeres algoritmus Módosítások: A következ kiterjesztés eldöntése kiértékel függvény A csúcsokhoz (különösen a célcsúcshoz) vezet út nyilvántartása szül pointerek A csúcsokhoz vezet minél kisebb költség út nyilvántartása - út költségek Körök kizárása Optimális út megtalálásának igénye 6

f:nyílt R a 3. lépésben n min f (NYÍLT) f egy dinamikus függvény Kiértékel függvény Feszítfa és költsége Pointerek feszítfája: a G egy s gyöker feszítfája π:g G π(n)= n csúcs egyik szülje π(s)=nil Az n csúcshoz vezet, nyilvántartott α {s n} út költsége g:g R g(n):=c α (s,n) Az n csúcshoz vezet optimális út költsége (a teljes reprezentációs gráfra nézve) g * :R R g * (n):=c * (s,n) g(n) 7 8 Konzisztens és optimális költség feszítfa A G feszítfája konzisztens g függvénnyel, ha g minden G-beli n csúcshoz a feszítfában nyilvántartott s n út költségét adja meg. A G feszítfája optimális, ha minden G-beli n csúcshoz G-beli s n optimális utat tárol. Vigyázat! Nem az R-re nézve optimális. Mindkét tulajdonság fenntartásához szükséges, hogy egy n csúcs kiterjesztésekor minden (n,m) élre megvizsgáljuk az m csúcs π illetve g értékét. Új csúcs Ha m G akkor Az m csúcs három esete π(m) n, g(m) g(n)+c(n,m) NYÍLT NYÍLT {m} Régi csúcs, amelyhez olcsóbb utat találtunk Ha m G és g(n)+c(n,m)<g(m) akkor π(m) n, g(m) g(n)+c(n,m) Régi csúcs, amelyhez nem találtunk olcsóbb utat Ha m G és g(n)+c(n,m) g(m) akkor SKIP 9 0 Optimális költség konzisztens feszítfa? Lehetséges megoldások Ha m G és g(n)+c(n,m)<g(m), és m csúcsnak vannak leszármazottai g(m)=4 g(s)=0 s m k l 4 g(k)= g(l)=?? n g(n)= ) Az m csúcs összes keresgráfbeli leszármazottját átvizsgáljuk valamilyen gráfbejárási technikával. ) Ügyes kiértékel függvénnyel biztosítjuk, hogy soha nem forduljon el ilyen eset 3) Nem tördünk a zárt m csúcs leszármazottaival, de magát az m csúcsot visszahelyezzük a NYÍLT halmazba.

Procedure GK. G {s}: NYÍLT {s}: g(s) 0: π(s) nil. while not üres(nyílt) loop 3. n min f (NYÍLT) 4. if cél(n) then return megoldás. NYÍLT NYÍLT-{n} 6. for m Γ(n) loop 7. if m G or g(n)+c(n,m)<g(m) then 8. π(m) n, g(m) g(n)+c(n,m), NYÍLT NYÍLT {m} 9. endloop 0. G G Γ(n). endloop. return nincs megoldás 3.. Lemma A GK mködése során egy csúcsot legfeljebb véges sokszor terjeszt ki. Bizonyítás:. Egy n csúcs legfeljebb annyiszor kerülhet be a NYÍLT-ba, ahányszor egy minden addiginál olcsóbb utat találunk hozzá.. Ilyen útból legfeljebb véges sok van: Elször egy C költség utat találunk az n csúcshoz. Ennél olcsóbb utak a C/δ korlátnál biztos rövidebbek. (δ) Megadott korlátnál rövidebb utak száma véges. (σ) end 4 3.. Tétel 3.. Invariáns lemma A GK véges reprezentációs gráfban mindig terminál. Bizonyítás: A GK véges sok csúcsot (3..lemma) véges lépésben végleg kiterjeszt, azaz üres NYÍLT halmazzal áll meg, hacsak már korábban nem terminál másként. Legyen n egy tetszleges s-bl elérhet csúcs. A GK az n csúcs kiterjesztése eltt bármelyik s * n optimális úton mindig nyilvántart egy olyan m csúcsot, amelyikre teljesül, hogy () m NYÍLT () g(m)=g * (m) (3) minden m csúcsot megelz csúcs végleg zárt, azaz minden ilyen k csúcsra g(k)=g * (k). 6 Bizonyítás Teljes indukció a lépések (kiterjesztések) száma szerint. lépés eltt: Bármelyik s-bl elérhet n csúcsra kezdetben fennáll, hogy s NYÍLT és s s * n és g * (s)=0=g(s) i. lépés eltt: Tegyük fel, hogy az állítás igaz minden s-bl elérhet, az i-dik lépésben még ki nem terjesztett n csúcsra. Rögzítsünk egy ilyen n csúcsot, és egy α=s * n utat, amelyre tehát m s * n úgy, hogy ()()(3) fennáll. 7 i. lépésben:. lehet, hogy nem az m csúcsot terjesztjük ki: Ekkor m-re továbbra is fennáll ()()(3). ha az m csúcsot terjesztjük ki (m n), akkor kell keresni egy olyan csúcsot α úton, amelyik átveszi az invariáns állításban szerepl m csúcs szerepét. Az m csúcsnak az α úton fekv utóda az m', amelyre az m csúcs kiterjesztése után két eset állhat fenn: m' NYÍLT, vagy m' NYÍLT 8 3

a) m' NYÍLT ekkor () nyilván teljesül m -re g(m ) = g(m)+c(m,m ) = g * (m)+c(m,m )= g * (m ) miatt () is (3) pedig azért, mert az m eltti csúcsok már eddig is zártak voltak, és most m vált végleg zárttá. b) m' NYÍLT akkor kell lenni egy ß =s * m optimális útnak, amely mentén már korában elértük az m -t, azaz ß minden l csúcsa zárt, és a g(l)=g * (l). β g(m )=g*(m ) γ s m m k n α Legyen γ az α út m n szakasza. A ßγ egy s * n út, ezért az indukciós feltevés miatt tartalmaz egy()()(3) tulajdonságú k csúcsot, amely biztosan a γ szakaszon van. Ez a k csúcs az α útnak is kívánt tulajdonságú eleme. 9 0 3.. Tétel Ha egy véges reprezentációs gráfban létezik megoldás akkor a GK egy célcsúcs megtalálásával terminál. Bizonyítás: A 3.. lemma szerint (legyen az ottani n csúcs most a célcsúcs) a NYÍLT halmaznak mindig van eleme a célcsúcs elérése eltt, így nem terminálhat az algoritmus üres NYÍLT halmazzal. 3.. tétel miatt viszont az algoritmusnak mindenképpen terminálnia kell. Csökken kiértékel függvény a NYÍLT halmazbeli csúcsok kiértékel függvényértéke az ott tartózkodás alatt nem n, és a NYÍLT halmazba visszakerül csúcs kiértékel függvényértéke határozottan kisebb, mint a csúcs megelz kiterjesztésekor felvett függvényértéke. A nevezetes gráfkeres algoritmusok ilyen csökken kiértékel függvényt használnak. Mködési grafikon 3.3. Tétel f F s F F i i-dik árok F i+...... n ni n i+ kiterjesztések Jelöljük meg a startcsúcsot, majd azt a legközelebbi csúcsot (a küszöbcsúcsot), amely kiterjesztésekor mért függvényérték (a küszöbérték) nagyobb vagy egyenl, mint a megelz küszöbérték. 3 Csökken kiértékel függvény használata mellett a GK a küszöbcsúcsok kiterjesztésének pillanatában optimális költség konzisztens feszítfát tart nyilván (azaz nincs zárt csúcs a NYÍLT halmazban) Bizonyítás: A küszöbcsúcsok szerinti teljes indukció. Legyen m csúcs olyan, ami az n i küszöbcsúcs kiterjesztése eltt zárttá vált (azaz f régi (m) F i ), az n i kiterjesztése után pedig újra nyílt lett. Ekkor f új (m)<f régi (m). Mivel F i F i+, ezért még az n i+ küszöbcsúcs eltt kiterjesztdik. 4 4

3.3. Nevezetes gráfkeres algoritmusok Most az f kiértékel függvény megválasztása következik. Neminformált Heurisztikus Mélységi gráfkeresés Mélységi gráfkeresésnek (MGK, depth-first) a GK-t akkor nevezzük, ha az élköltségeket egységnyinek vesszük (GK 7. és 8. lépés), a kiértékel függvényt pedig az alábbi módon definiáljuk: f(n)= -g(n) n NYÍLT csúcsra. mélységi, szélességi, egyenletes elre tekint (mohó), A, A *, A c, B Használhatunk mélységi korlátot. Ilyenkor a keresés (δ-gráfokon) biztosan terminál, és ha van megoldás, talál egyet. 6 MGK és a VL közös vonásai Módosítható stratégiájú keres rendszerek Mélységi bejárás stratégiája szerint érintik a reprezentációs gráf csúcsait. Fa esetén ugyanolyan sorrendben érintik az egyes csúcsokat (a VL visszalépéseit nem számítva). Mélységi korlátot használnak, körfigyelést végeznek. Mindig terminálnak (δ-gráfokon), és a mélységi korláton belüli megoldást megtalálják. Lokális heurisztikát használhatnak. 7 MGK és a VL eltér vonásai Különbözik a globális munkaterületük. A VL-nél egy út, a MGK-nél a keres gráf.. Eltér keresési szabályok, más vezérlési stratégia. A MGK olcsóbban tud átváltani egy másik útra, nem kell visszalépnie. Nem feltétlenül ugyanazt a megoldást találják meg. A MGK a legolcsóbb eddig talált utakat tárolja. A MGK ugyanazt a zsákutca-szakaszt csak akkor járja be újra, ha a zsákutca-torkolathoz minden korábbinál olcsóbb utat talál. 8 Szélességi gráfkeresés Szélességi gráfkeresésnek (SZGK, breadth-first) a GK-t nevezzük, ha az élköltségeket egységnyinek vesszük (GK 7. és 8. lépés), a kiértékel függvényt pedig az alábbi módon definiáljuk: f(n)= g(n) n NYÍLT csúcsra. Végtelen nagy δ-gráfokban is terminál, ha van megoldás, és ilyenkor a legrövidebb megoldást adja. Egy csúcsot legfeljebb egyszer terjeszt ki. 9 30

Egyenletes keresés Egyenletes keresésnek (EGK, uniform-cost) a GK-t akkor nevezzük, ha a kiértékel függvényt az alábbi módon definiáljuk: f(n)= g(n) n NYÍLT csúcsra. Végtelen nagy δ-gráfokban is terminál, ha van megoldás, és ilyenkor az optimális megoldást adja. Egy csúcsot legfeljebb egyszer terjeszt ki. Dijkstra algoritmus 3 3 Heurisztikus függvény Elre tekint (mohó) keresés Azt h:n R függvényt, amelyik minden n csúcsra az abból a célba vezet út költségére ad becslést heurisztikus függvénynek hívjuk. h(n) h * (n) = min t T c*(n,t) = c*(n,t) Egy s=n 0,n,...,n k =t optimális megoldási út esetén h * (n i ) = Σ j=i k- c(n j,n j+ ) Azt a GK-t nevezzük elretekint keresésnek, amelyre f(n)=h(n) n NYÍLT Szeszélyes, eredményessége és hatékonysága ersen függ a heurisztikus függvénytl. 33 34 W 4 8 6 3 7 4 8 7 6 3 4 8 3 3 4 8 6 3 7 6 7 4 3 8 8 3 7 6 4 3 8 7 6 4 3 7 6 4 3 4 3 8 7 8 6 3 7 6 3 4 4 4 3 7 6 8 3 4 7 6 8 4 még 6 lépés 8 3 4 7 6 8 3 7 6 4 7 6 8 3 4 A algoritmus Azt a GK-t nevezzük A algoritmusnak, amelyre az f(n)=g(n)+h(n) n NYÍLT, és h(n) 0 n N (nemnegatív) Példa: EGK: f=g+0 8-as játék: f=g+w, f=g+p 36 6

g+w 8 6 3 g+p 4 7 4 8 6 3 7 4 8 7 6 3 4 8 3 6 4 6 4 8 6 3 7 6 7 4 8 8 3 7 6 4 3 8 7 6 4 3 7 6 4 6 6 8 7 8 7 6 8 3 6 3 7 6 3 4 7 4 4 7 3 7 6 8 4 8 3 7 6 4 8 7 6 3 4 8 3 7 4 8 6 3 7 6 7 4 7 8 3 7 6 4 7 8 3 7 6 4 8 7 6 4 3 7 8 7 8 7 6 8 3 6 3 7 6 3 4 4 4 3 7 6 8 4 7 8 3 7 6 4 8 3 4 7 7 6 7 6 8 3 4 8 3 4 7 6 7 6 8 3 4 7 Megjegyzés Legyen f * :N R optimális költségfüggvény olyan, hogy n N -re f * (n)=g * (n)+h * (n), azaz f * (n) a legolcsóbb n csúcson átvezet megoldás költsége. f f *, ahol g g * és h h *, f * (s) az optimális megoldás költsége. Az f * optimális költségfüggvény egy optimális megoldási út mentén állandó. 3.4. Lemma Ha az A algoritmus nem terminál (végtelen nagy δ- gráf), akkor minden NYÍLT halmazba bekerült m csúcs véges sok lépés után kiterjesztdik. Bizonyítás: Egy csúcs kiértékel függvényértéke arányos a csúcs mélységével. f(n) = g(n)+h(n) g * (n) d(n)*δ d * (n)*δ ahol d(n) az s * n optimális út hossza, d * (n) a legrövidebb s n út hossza. 39 40 3.4. Tétel A D = f(m)/δ korlátnál mélyebben elhelyezked csúcsok nem elzik meg az m csúcsot a kiterjesztésben. f(k) d * (k)*δ > D* δ > f(m) Tehát csak a D-nél magasabban fekv csúcsokra állhat fenn, hogy f(k) f(m) De egy δ-gráfban a σ-tul. miatt D-nél magasabban fekv csúcsból csak véges (legfeljebb σ D ) sok van, és ezek véges sok lépésben végleg (lásd 3.. lemma ) kiterjesztdnek. 4 Az A algoritmus mindig talál egy megoldást, ha az létezik. Bizonyítás: Jelölje α az s=n 0,n,...,n k =t optimális megoldást. Kezdetben az s nyílt csúcs. Ha n i egy nyílt csúcs (i=0 k), akkor az a 3.4. lemma miatt véges lépésben kiválasztódik, és i<k esetén az n i+ legkésbb ekkor (n i kiterjesztésekor) bekerül a NYÍLT halmazba. Tehát az algoritmus véges lépés múlva kiválasztja a t célcsúcsot, hacsak korábban nem terminál. 4 7

A * algoritmus De korábban csak egy másik megoldás megtalálásával terminálhat - üres NYÍLT halmazzal nem -, hiszen a t kiterjesztése eltt a NYÍLT halmaz biztos tartalmazza az α egyik csúcsát (3.. lemma). Megjegyzés Az A algoritmus nem mindig terminál, csak ha van megoldás, de akkor megtalál egyet, még végtelen nagy δ- gráfokban is. A * algoritmusnak azt az A algoritmust nevezzük, amelyiknek h:n R heurisztikus függvénye optimális (admissible=megengedhet,elfogadható), azaz h(n) h * (n) n N Megjegyzés: h(t)=0 t T Példa: EGK: f=g+0 8-as játék: f=g+w, f=g+p 43 44 3.. Lemma Az A * algoritmus által kiterjesztésre kiválasztott bármely n csúcsra teljesül, hogy f(n) f * (s). Bizonyítás: Tegyük fel, hogy a reprezentációs gráfban létezik megoldás, így s * t optimális út is. Ellenkez esetben az f * (s)=. m s * t úgy, hogy m NYÍLT és g(m)=g * (m) (3.. lemma). De az algoritmus az n csúcsot választotta ki az m helyett f(n) f(m) = g(m)+h(m) = = g * (m)+h(m) g * (m)+h * (m) = f * (m) = f * (s) 4 Az A * algoritmus mindig optimális megoldás megtalálásával terminál feltéve, hogy létezik megoldás. Bizonyítás: Az A * algoritmus, mint speciális A algoritmus, biztos talál megoldást. (3.4. tétel) 3.. Tétel Tegyük fel indirekt módon, hogy ez a megoldás nem optimális, azaz a termináláskor kiválasztott t T célcsúcsra g(t)>f * (s). A 3.. lemma szerint (n helyébe t) : f(t) f * (s) De t célcsúcs: f(t) = g(t)+0 46 A c algoritmus 3.6. Lemma (háromszög egyenltlenség) A c (következetes) algoritmusnak azt az A * algoritmust nevezzük, amelyiknek h:n R heurisztikus függvénye monoton megszorításos, azaz h(n)-h(m) c(n,m) (n,m) A Példa: EGK: f=g+0 8-as játék: f=g+w, f=g+p Példa nem monoton optimális heurisztikára: s h(s)=3 n h(n)= t h(t)=0 47 Ha a h heurisztika monoton megszorításos, akkor nemcsak az élekre, hanem bármely n,m N csúcsra is fennáll a h(n)-h(m) c(n,m) összefüggés. Bizonyítás. Ha nincs n m út, akkor c(n,m) =. Egyébként vegyünk egy α=(n=n 0,n,...,n k =m) utat. Ennek éleire fenn áll: h(n 0 )-h(n ) c(n 0,n )... h(n k- )-h(m) c(n k-,m) Adjuk össze ezeket az egyenltlenségeket: h(n)-h(m) Σ c(n i-,n i ) = c α (n,m). 48 8

Következmény Ha a h heurisztika monoton megszorításos és a célban nulla értéket vesz fel, akkor szükségképpen optimális is. akkor nemcsak az élekre, hanem bármely n,m N csúcsra is fennáll a h(n)-h(m) c(n,m) összefüggés. Ui: Bármelyik n csúcsra és n t úra az elzek miatt fenn áll: h(n)-h(t) c (n,m). Ezért az n * T optimális útra is igaz, hogy h(n)-h(t) c * (n,t). De h(t)=0 és c * (n,t)=h * (n), azaz h(n) h * (n). (Ha nincs n T út, akkor c * (n,t) végtelen nagynak tekinthet.) A monoton megszorítás tulajdonságát általában egyszerbb ellenrizni mint az optimalitást. 3.6. Tétel Amikor az A c algoritmus egy csúcsot kiterjesztésre kiválaszt, akkor már ismeri hozzá az optimális utat: g(n)=g * (n) (egy csúcsot egynél többször nem terjeszt ki). Bizonyítás: TF indirekt: n kiterjesztésekor g(n)>g * (n). m s * n úgy, hogy m NYÍLT és g(m)=g * (m) (3.. lemma) (Az indirekt feltevés miatt az n m.) A 3.6. lemma miatt h(m)-h(n) c * (m,n) De az algoritmus az n csúcsot választotta ki m ellenében f(n) f(m) = g(m)+h(m) = g * (m)+h(m) g * (m)+c * (m,n)+h(n) = g * (n)+h(n) < g(n)+h(n) = f(n) 49 0 Algoritmus osztályok 3.4. A algoritmus hatékonysága A A * Heurisztikus A c Elre tekint Neminformált Szélességi Mélységi A továbbiakban olyan problémákat vizsgálunk, amelyeknek van megoldása és van optimális heurisztikája (tehát az A algoritmus egy A * algoritmus; terminál és optimális megoldást talál) Hatékonyság Memória igény Zárt csúcsok száma a termináláskor különböz heurisztikák különböz algoritmusok Futási id Kiterjesztések száma a zárt csúcsok számához viszonyítva Különböz heurisztikájú A * algoritmusok összehasonlítása Az A (h ) és A (h ) A * algoritmusok közül az A jobban informált, mint az A, ha minden n N \T csúcsra teljesül, hogy h (n)<h (n). Megmutatjuk, hogy egy jobban informált A * algoritmus nem terjeszt ki több csúcsot, mint a kevésbé informált. 3 3.7. Tétel Legyen A jobban informált A * algoritmus, mint az A. Ekkor A nem terjeszt ki olyan csúcsot, amelyet A sem terjeszt ki. Bizonyítás: Teljes indukció az A terminálásakor nyilvántartott feszítfa mélysége (szintjei) szerint. A (0)-dik szinten csak a startcsúcs van, amit vagy mindkett algoritmus kiterjeszt, ha az nem célcsúcs; vagy egyik sem. (d)-edik szintig minden csúcsról feltesszük, hogy ha azt A kiterjesztette, akkor A is. 4 9

Bizonyítás folytatása Indirekt tegyük fel, hogy a (d+)-edik szinten van olyan m N csúcs, amit csak az A terjeszt ki. (m nyilván nem célcsúcs.) Egyrészt f (m) f * (s) fennáll a 3..lemma miatt. (Az f (m) az m csúcs A általi kiterjesztéskor mért érték.) Másrészt f (m) f * (s). (Az f (m) az A terminálásakor mért érték.) Harmadrészt g (m) g (m) Összegezve f (m) f * (s) f (m) = g (m) + h (m) g (m) + h (m) < g (m) + h (m) = f (m) Magyarázat Az f (m) f * (s), mert az m d szinten lev A által kiterjesztett szüljét (az indukciós feltevés miatt) az A is kiterjeszti, és így az A algoritmus mködése alatt az m legkésbb ekkor nyílt csúcs lesz. Ugyanakkor f (m) < f * (s) sohasem lehet, mert ekkor az A kiterjesztené az m csúcsot, ami ellentmond az indirekt feltevésnek. A g (m) g (m), mert az A biztosan feltárta az m csúcshoz vezet A által talált legolcsóbb (tehát d szint alatti) utat, de lehet, hogy talált egy még olcsóbbat. 6 Megjegyzés A gyakorlatban sokszor enyhébb feltételek mellett látványosabb különbségekkel is találkozhatunk: Már h h esetén is több csúcsot terjeszt ki az A, mint A W P Minél jobban becsli alulról a heurisztika a h * -ot, várhatóan annál kisebb lesz a memória igénye. 7 g+w g+p 4 8 6 3 7 4 8 7 6 3 4 8 3 6 7 4 4 6 8 6 3 7 6 7 4 7 8 8 3 7 6 4 3 8 7 6 4 3 7 6 4 7 6 7 6 8 7 8 7 6 8 3 6 3 7 6 3 4 7 4 4 7 3 7 6 8 4 7 8 3 7 6 4 8 3 4 7 7 6 7 6 8 3 4 7 h G Zárt MO W 699 3343 P 99 4 F 93 4 F+3W 93 4 F+3P 86 4 -ös kirakó Különböz gráfkeres algoritmusok összehasonlítása Az X és Y algoritmusosztályok. Az X jobb Y -nál egy adott feladatosztályra nézve, ha a feladatosztály minden feladatára van az X-nek egy olyan algoritmusa, amely csak olyan csúcsokat terjeszt ki (értékel ki), amelyeket az Y minden algoritmusa kiterjeszt (kiértékel). P 34 37 30 F 3473 67 64 F+3W 494 96 4 F+3P 700 38 4 Egy nem-determinisztikus algoritmus determinisztikus változatai ( tie-breaking rule ) algoritmusosztályt alkotnak, ezért valójában algoritmusosztályokat hasonlítunk össze. 9 60 0

Optimális algoritmusok Optimálisnak nevezzük azt az algoritmust/ algoritmusosztályt (nem feltétlenül gráfkeresést), amely optimális heurisztikájú feladatokra optimális megoldást talál feltéve, ha van megoldás. Példák: EGK A ( * ) algoritmus A** algoritmus: f(n)=max m s n (g(m)+h(m)) IDA* algoritmus Jó lenne, ha az A algoritmus lenne a legjobb algoritmus az optimális algoritmusok között. 6 A algoritmus nem jobb az A ** -nál Van olyan feladat és optimális heurisztika, ahol az A (*) minden verziója kiterjeszt egy olyan csúcsot, amit az A ** valamelyik verziója nem. 0 s 6 0 t n m 0 Mindkett az s kiterjesztése után: 6 3 A alg az n kiterjesztése után: A * * alg az n kiterjesztése után: 3 3 3 6 Megjegyzés Melyik optimális algoritmus a legjobb az optimális heurisztikájú feladatosztályon? A fentiek közül egyik sem. Egy szkebb feladatosztályon, a monoton megszorításos heurisztikájú feladatokon viszont az A algoritmus a legjobb optimális algoritmus. 3.8. Tétel Optimális és monoton megszorításos heurisztikájú feladatok esetén az A (A c ) algoritmus jobb az összes optimális algoritmusnál. Bizonyítás: Tegyük fel indirekt, hogy van olyan Y optimális algoritmus, és olyan (R,s,T) feladat a h következetes heurisztikával, hogy az R egy n N csúcsát az A algoritmus minden verziója kiterjeszti, de az Y algoritmus nem. 63 64 Van olyan optimális megoldás, amely nem vezet át n-en, hiszen csak ezt tudja az Y megtalálni. Mivel A minden verziója eljut az n csúcshoz, ezért van olyan s α n út, amelynek minden m csúcsára (többek között az n-re is) fennáll, hogy g α (m)+h(m)<f * (s). (Ekkor ugyanis ennek az útnak minden csúcsa biztos bekerül a NYÍLT halmazba, és f(m) g α (m)+h(m)<f * (s) miatt még a célcsúcs eltt kiterjesztésre kerül.) Jelöljük: C= f * (s) D= g * (n)+h(n) D < C. Ui: g * (n)+h(n) g α (n)+h(n) < f * (s) t s n t R Bvítsük az indirekt feltevésben szerepl feladatot egy új éllel: (R {(n,t)},s,t {t}) c(n,t)=h(n)+(c - D)/ h(t)=0 6 66

új feladat A h optimális, azaz monoton és a célban nulla (ezt elég csak az új élre vizsgálni) h(n)-h(t) = h(n) h(n) +(C - D)/ = c(n,t) Az egyetlen optimális megoldás az s t út. Az s t út költsége kisebb az elz feladat optimális megoldásának költségénél (C): g * (t) = g * (n) + c(n,t) = g * (n) + h(n) + (C - D)/ = D + (C - D)/ = (C +D)/ < C Az Y algoritmus az n csúcsot nem terjeszti ki, ezért az s t megoldást nem találhatja meg: Ez ellentmondás, hiszen egy optimális algoritmusnak ezen az új feladaton is optimális megoldást kell találnia. 67 Az A algoritmusnál nincs jobb Ha lenne az A algoritmusnál jobb optimális algoritmus, akkor ez a következetes heurisztikájú feladatokra is jobb lenne (hiszen a következetes heurisztika is optimális). Ennek ellent mond a 3.9. tétel.) Az A algoritmus nem a legjobb ugyan a optimális algoritmusok között, de nincsen nála sem jobb, azaz a legjobbak között található. 68 Futási id Martelli példája Zárt csúcsok száma: k k= 0 s Alsókorlát: k A következetes heurisztika mellett egy csúcs legfeljebb csak egyszer terjesztdik ki, habár ettl még a kiterjesztett csúcsok száma igen sok is lehet (egyenletes keresés) Felskorlát: k- 9 6 0 0 0 3 7 3 t n 4 n n n 3 3 4 Az n,...,n k- csúcsokhoz rendre 0,,..., k- különböz út vezet. 6 69 70 Megjegyzés A probléma oka Másik heurisztikával természetesen javítható a kiterjesztések viszonylagos száma, de nem biztos, hogy ez tényleges javulás lesz. A kiterjesztések száma egy viszonylagos szám h heurisztika mellett k darab zárt csúcs, és k- kiterjesztés h heurisztika mellett k darab zárt csúcs, és k kiterjesztés mégis k- < k, mivel k << k. 7 f F s F F i i-dik árok F i+...... n n i n i+ Általában egy árkon belül egy csúcs sokszor kiterjesztésre kerülhet. kiterjesztések Az árkokban használjunk más kiértékel függvényt! t 7

AB algoritmus Az AB algoritmust az A algoritmusból kapjuk úgy, hogy bevezetjük az F aktuális küszöbértéket és a q:nyílt R bels kiértékel függvényt, majd az. lépést kiegészítjük az F f(s) értékadással, a 3. lépést pedig helyettesítjük az if min f (NYÍLT)<F then n min q (m NYÍLT f(m)<f) else n min f (NYÍLT); F f(n) endif elágazással. Nevezetes AB algoritmusok : A algoritmus : q=f B algoritmus (Martelli) : q=g Megjegyzés Az AB algoritmusok csökken kiértékel függvényt használnak. 73 74 3.9. Tétel Az eltér bels kiértékel függvényt használó AB algoritmusok mködésük során ugyanazokat a küszöbcsúcsokat, ugyanabban a sorrendben és ugyanazon küszöbértékkel választják ki, és ekkor ugyanazt a keresgráfot, ugyanazon feszítfával és költségértékekkel tartják nyilván. Bizonyítás: Teljes indukció a küszöbcsúcsok számára. Az i+-dik küszöbcsúcsnál bekövetkez állapot attól függ, hogy eltte mely csúcsokat terjeszti ki a keresés az az i-edik árokban. (Ez a kiterjesztések sorrendjétl és számától nem függ.) 7 Az i-edik árokban kiterjesztett csúcsok Egy az i-edik árokban kiterjesztett m csúcsnak a NYÍLT halmazban kell lennie az n i kiterjesztése után, de még az n i+ kiterjesztése eltt úgy, hogy f(m) < F i fennálljon Az m csúcs akkor kerülhet be a NYÍLT halmazba, ha i- edik árokhoz tartozó csúcsok kiterjesztései során találunk hozzá egy s-bl induló n i -n keresztül vezet utat, amely vagy az els hozzá talált út, vagy egy minden eddigénél olcsóbb út. Ha m csúcs már benn volt a NYÍLT halmazban az n i kiterjesztésekor, akkor az f(m) F i állt fenn. Ahhoz, hogy ez megváltozzon (f=g+h) kell, hogy találjunk egy minden eddigénél olcsóbb utat m-hez i-edik árokhoz tartozó csúcsok kiterjesztései során. 76 Az i-edik árok csúcsai függetlenek q-tól Következmények D i = { m N α {s n i m}: n n i m \{m}: n D i g i (n i )+c α (n i,m)<g i (m) ha m G i g i az algoritmus által nyilvántartott g értékeket mutatja n i kiterjesztésének pillanatában. f(m)= g(m)+h(m) g i (n i )+c α (n i,m)+h(m) < F i } 77 Az AB algoritmusok megoldással terminálnak, ha van megoldás. (Ui: az A is egy AB) HF: az árkok (az utolsó árok is) véges hosszúak. Az optimális heurisztikát használó AB algoritmusok optimális megoldással terminálnak, ha van megoldás. (Ui: az A* is egy AB) HF: A* mködésekor a célcsúcs az utolsó küszöbcsúcs. A következetes heurisztikát használó AB algoritmus egy csúcsot legfeljebb egyszer terjesztenek ki. (Ui: az A c is egy AB) HF: A c árkai üresek. 78 3

Következmények Az AB algoritmusok memória igénye majdnem azonos az A algoritmussal. (Az utolsó megkezdett és be nem fejezett árokban különbözhetnek, de optimális heurisztikájú feladatokon még ott sem.) Az AB algoritmusok futási ideje eltér, mert az árkon belüli kiterjesztések száma és sorrendje más. Az A algoritmus futási ideje legrosszabb esetben exponenciális; de a B algoritmus futási ideje legrosszabb esetben is csak polinomiális. 3.0. Tétel A B algoritmus egy árkon belül egy csúcsot csak egyszer terjeszt ki. Bizonyítás: Tegyük fel indirekt, hogy egy m csúcs kétszer terjesztdik ki a D i árkon belül: elször az n i küszöbcsúcsból egy drágább α út mentén érjük el az m csúcsot, majd egy olcsóbb β út mentén, azaz c β (n i m) < c α (n i m) 79 80 B algoritmus futási ideje s n i Amikor az α út mentén elérjük, majd kiterjesztjük az m csúcsot (m NYÍLT és g(m) =c(s,n i )+c α (n i m)), addigra elértünk a β úton egy k csúcshoz (k NYÍLT és g(k) c(s,n i )+c β (n i k)). A B algoritmus az m csúcsot választotta:g(m) g(k) g(k) c(s,n i ) +c β (n i k) c(s,n i )+c β (n i m) < < c(s,n i )+c α (n i m) = g(m) k α β m 8 k zárt csúcs esetén legfeljebb k+ küszöbcsúcs van (az utolsó a célcsúcs, ha a heurisztika optimális), ilyenkor k darab árok van. A B algoritmus legrosszabb esetben egy árokban az összes k csúcsot pontosan egyszer kiterjeszti. Ezért a kiterjesztések összes száma legfeljebb k. 8 Algoritmus osztályok 3.. Heurisztika szerepe A** A A * Heurisztikus AB A c Elre tekint B Neminformált Szélességi Mélységi Milyen a jó heurisztika? optimális : h(n) h * (n) Nincs mindig szükség az optimális megoldásra. jólinformált: h(n) ~ h * (n) monoton megszorításos: h(n)-h (m) c(n,m) Ekkor A c algoritmus, különben B algoritmus Változó heurisztikák: f=g+φ*h ahol φ d B algoritmus 83 84 4

A** algoritmus Gyakorlat Azt a GK-t nevezzük A** algoritmusnak, amelyre az f(n)=max m s n (g(m)+h(m)) n NYÍLT, h optimális Optimális megoldást talál, ha van megoldás Talál megoldást. Ehhez 3.. lemma: f(n) g(n)+h(n) g * (n) d * (n)*δ Optimális a megoldás. Ehhez 3.6. lemma: f(n) f(m) = g(m i )+h(m i ) f * (m i ) = f * (s). 8 86 IDA* algoritmus c f(start) loop (megoldás, c) c) VL.(<s>, c) c) if ifmegoldás hiba then return megoldás if ifc= then return hiba // // ha ha VL. ben nem volt vágás endloop VL.: f=g+h, h optimális n csúcsot kiértékelés nélkül levágja, ha ha f(n)>c c-ben visszaadja a levágott csúcsok ff értékeinek minimumát; ha ha nincs ilyen, akkor a -t. Az IDA * algoritmus optimális heurisztika mellett optimális megoldást talál, ha van megoldás! Talál megoldást: Egyrészt a c értéke nem válhat naggyá megoldás megtalálása eltt. Másrészt a keresés nem akadhat meg egy megoldási útnak egy csúcsánál. Optimális a megoldás : Ehhez elég belátni, hogy c f * (start) mindig fennáll, hiszen ekkor nem találhat a VL. olyan célcsúcsot, amelyre g(t)> f * (start). Legyen n s* t az a csúcs, amit levágunk (g(n) = g * (n)) Ekkor c f(n) = g(n)+h(n) = g * (n)+h(n) f * (n) = f * (s). 88 Állítások Csökken kiértékel függvény mellett a GK küszöbcsúcsai mind különböznek, és egy csúcs csak az els kiterjesztésekor lehet küszöbcsúcs. Ha a GK terminálásakor egyetlen nyílt csúcs (a célcsúcs) van, akkor a GK optimális megoldást talált. A * minden olyan n nyílt csúcsot kiterjeszt, amelyre f(n)<f * (s). Ha a h heurisztikus függvény monoton megszorításos, akkor bármelyik startcsúcsból egy n csúcsba vezet optimális út mentén a g * +h függvény értékei monoton növeked sorozatot alkotnak. Ha a h monoton megszorításos és az értéke célcsúcsokban nulla akkor h optimális. 89 Tétel Csökken kiértékel függvény használata mellett a GK csak konzisztens csúcsot választ kiterjesztésre. Bizonyítás: HF (Képzeljük el, hogy miután az n csúcs egy α út mentén kiterjesztdött, egy olcsóbb β út mentén újra nyílt lesz. Eközben bekerült a NYÍLT halmazba a γ út menti m is. Az m csúcs az nyílttá válásakor inkonzisztensé válik. Meg kell mutatni, hogy az algoritmus nem terjeszti ki az m csúcsot az n csúcs eltt! Ehhez kövessük nyomon a β és a γ utak felfedezését, az n csúcs korábbi kiterjesztése és újra nyílttá válása között. β c β (s, n) < c α (s, n) s α n γ m 90

B algoritmus if ifh(n)<min m Γ(n) (c(n,m)+h(m)) m Γ(n) then h(n) min m Γ(n) (c(n,m)+h(m)) m Γ(n) else for m Γ(n)-re loop if ifh(n)- h(m)>c(n,m) then h(m) h(n)- c(n,m) endloop A h optimális marad A h nem csökken A mononton megszorításos élek száma n Mohó A algoritmus Nincs mindig szükség az optimális megoldásra. Ilyenkor a mohó A algoritmus is használható. Ha h optimális és t T: (n,t) A: h(n)+α c(n,t) akkor g(t) f * (s)+α A mohó A algoritmus optimális heurisztika mellett akkor garantálja az optimális megoldást, ha t T: (n,t) A: h(n)=c(n,t) vagy h monoton és α 0: t T: (n,t) A: h(n)+α=c(n,t) 9 6