Mestersges Intelligencia PROBLMAMEGOLDS KERESSSEL 1 Problmamegolds keresssel Keress
Mesterséges Intelligencia PROBLÉMAMEGOLDÁS KERESÉSSEL 1
Problémamegoldás kereséssel Keresés (search): Több különböző lehetséges cselekvéssorozat közül, melyek ismert értékű állapotba vezetnek, a lehető legjobb kiválasztása. A keresési algoritmus bemenete egy probléma, a kimenete pedig cselekvéssorozat: megoldás. probléma Keresési algoritmus megoldás 2
7/11 feladat USA: 7/11 szupermarket Termékek: a, b, c, d Ár: 0. 01 $ - 7. 08 $ a * b * c * d = 7. 11 a + b + c + d = 7. 11 Keresőtér: 7084 kombináció = 2. 51*1011 Szavakkal (250 milliárd kombináció) Brute force, guess and check, próba-szerencse 7. 11 = 3 * 0. 79 = 32 * 0. 79
7/11 feladat USA: 7/11 supermarket Termékek: a, b, c, d Ár: 0. 01 $ - 7. 08 $ a + b + c + d = 7. 11 a * b * c * d = 7. 1 Keresőtér: 7084 kombináció = 2. 51*1011 Szavakkal : 250 milliárd kombináció Brute force, Guess and check, próbaszerencse 7. 11 = 3 * 0. 79 = 32 * 0. 79 Megoldás: a=1. 20, b=1. 25, c=1. 50, d=3. 16
Problémamegoldás kereséssel A problémamegoldó ágensek (problem solving agent) keresik a megoldást. Keresik azt a cselekvéssorozatot amely a kívánt állapotba vezet. Ha az algoritmusok nem informáltak (uninformed), a probléma definícióján kívül más információval nem rendelkeznek. Ezen kívül van még informált keresés is (informed). Ezek az algoritmusok rendelkeznek valamilyen elképzeléssel arról, hogy a megoldást merre kell keresni. 5
Problémamegoldó ágensek Az intelligens ágensek a teljesítménymértéküket maximalizálják. A feladat egyszerűsödik ha az ágens egy célt(goal) tud maga elé tűzni, és megpróbálja azt elérni. 6
Problématípusok Az ágens és környezete kapcsolata alapján: Egyállapotú (single-state) (hozzáférhető környezet) • Többállapotú (multiple-state) Ismeri a cselekvéseinek hatását, de csak korlátozottan fér hozzá a világ állapotához • Eshetőségi (contingency) Ha a környezet nem determinisztikus • Felderítési (exploration) Ha nincs semmilyen információja cselekvései hatásáról és a létező állapotokról világban, pedig valós „kísérleteznie” nem a kell: a modellben keres • 7
Jól definiált problémák és megoldások Egy probléma megragadásához a következő 4 komponensre van szükség: (egyállapotú probléma esetén) 1. 2. Kiinduló állapot (initial state), amiből az ágens kezdi a cselekvéseit. Az ágens rendelkezésére álló lehetséges cselekvések (actions). A leginkább használatos leírás az állapotátmenet függvényt alkalmazza (successor function). 8
Jól definiált problémák és megoldások Egy adott x állapot esetén az állapotátmenet – fv(x) visszaadja a rendezett (cselekvés, utódállapot) párok halmazát. Az állapottér (state space) egy gráfot alkot melynek csomópontjai az állapotok, az élek pedig a cselekvések. Az állapottér egy útja (path) az állapotok egy sorozata, amely állapotokat a cselekvések egy sorozata köt össze. 9
Jól definiált problémák és megoldások 3. 4. Célteszt (goal test), amely meghatározza, hogy egy adott állapot célállapot-e? Útköltség (path cost) függvény, amely minden úthoz hozzárendel egy költséget. A problémamegoldó ágens azt a költségfüggvényt fogja választani amely a saját hatékonysági mértékének felel meg. Az x állapotból az y állapotba vezető cs cselekvés lépésköltsége (step cost) lk(x, y, cs). 10
Megoldás A probléma megoldása (solution) a kiinduló állapotból a célállapotba vezető út. 11
A problémák megfogalmazásaállapottér reprezentáció Egy probléma reprezentáláshoz meg kell keresnünk az adott probléma világának véges sok, a probléma megoldása során fontosnak vélt tulajdonságát, jellemzőjét (pl. szín, súly, méret, ár, pozíció stb. ). § Például ha ezeket a jellemzőket rendre a h 1 , . . . , hn értékek jellemzik, akkor azt mondjuk, hogy a (h 1 , . . . , hn) vektorral azonosított állapotban van a probléma világa. § Ha az i. jellemző által felvehető értékek halmazát Hi-vel jelöljük, akkor a probléma világának állapotai elemei a H 1×H 2×…. . ×Hn halmaznak. § 12
A problémák megfogalmazásaállapottér reprezentáció • • A problémamegoldás során a kezdőállapotból indulva a probléma világának előálló állapotait rendre meg fogjuk változtatni, míg végül valamely számunkra megfelelő célállapotba jutunk. Az állapotváltozásokat leíró függvényeket operátoroknak nevezzük. Természetesen egy operátor nem feltétlenül alkalmazható minden egyes állapotra, ezért az operátorok (mint függvények) értelmezési tartományát az operátoralkalmazási előfeltételek segítségével szoktuk megadni. 13
A problémák megfogalmazásaállapottér reprezentáció PÉLDA : 8 királynő problémája § Helyezzünk el a sakktáblán 8 db. királynőt úgy, hogy egyik se üsse a másikat. Egy lehetséges megoldás: § § Általánosítsuk a feladatot N×N -es (N≥ 1) sakktáblára, melyen értelemszerűen N db. királynőt kell elhelyeznünk. Azaz az N egy állapottéren kívüli konstansként lesz megadva. 14
A problémák megfogalmazásaállapottér reprezentáció Az állapottér-reprezentáció következő: alapötlete a először az 1. sorba lerakunk egy királynőt, majd a 2. sorba egy másikat úgy, hogy az az 1. sorban levővel ne legyen ütésben. Ily módon az i. lépésben az i. sorba rakunk le egy királynőt, ellenőrizve, hogy az ne legyen az előző i− 1 db. királynővel ütésben. 15
A problémák megfogalmazásaállapottér reprezentáció Állapotok halmaza: § Az állapotokban tároljuk el az egyes sorokba letett királynők soron belüli pozícióját! Ha az adott sorba még nem raktam le királynőt, akkor a vektorban ott 0 álljon. § Ezen kívül az állapotokban tároljuk azt is, hogy hányadik sorba rakom le a következő királynőt. § Tehát: A={(a 1 , a 2 , …. , a. N , s) | 0 ≤ ai ≤ N , 1 ≤ s ≤ N+1)} § Az s értékeként az N+1 már nem létező sorindex, melyet csak azért engedünk meg, hogy a terminálási feltételeket majd tesztelni tudjuk. 16
A problémák megfogalmazásaállapottér reprezentáció Kezdőállapot: § Kezdetben a tábla üres. Tehát a kezdőállapot: k=(0, 0 , …. , 0 , 1) Célállapotok halmaza: Több célállapotunk is van. Ha az s már nem létező sorindexet tartalmaz, megoldást találtunk. § Azaz a célállapotok halmaza: § C={(a 1 , …. . , a. N , N +1)∈A} 17
A problémák megfogalmazásaállapottér reprezentáció Operátorok halmaza: § Operátoraink egy királynő lerakását fogják leírni az s. sorba. Az operátorok csak egy bemenő adatot várnak: azt az oszlopindexet, ahová az s. soron belül a királynőt rakjuk. O={leraki | 1≤ i ≤ 8} 18
A problémák megfogalmazásaállapottér reprezentáció Alkalmazási előfeltétel: § Egy leraki operátor mikor alkalmazható egy (a 1 , …, a 8 , s) állapotra? Akkor, ha a most lerakandó királynő: • nincs egy oszlopban semelyik korábban lerakott királynővel. Azaz: minden m < s esetén : am≠i 19
A problémák megfogalmazásaállapottér reprezentáció • Átlósan nem üti semelyik korábban lerakott királynőt. Az átlós ütéseket a legkönnyebb úgy vizsgálni, hogy vesszük a két vizsgált királynő sorindexei különbségének az abszolút értékét, és összehasonlítjuk az oszlopindexeik különbségének az abszolút értékével. Ha ezek egyenlők, akkor a két királynő üti egymást. A most lerakandó királynő sorindexe s , oszlopindexe i. Azaz: minden m <s esetén : | s−m∣≠∣i−am| 20
A problémák megfogalmazásaállapottér reprezentáció Tehát a leraki operátor alkalmazás előfeltétel az (a 1 , …, a 8 , s) állapotra: ∀m(m < s ⇒ am ≠i ∧ |s−m∣≠∣i−am|) , ahol 1≤ m ≤ 8 21
A problémák megfogalmazásaállapottér reprezentáció Alkalmazási függvény: § Adjuk meg, hogy a leraki operátor az (a 1 , …, a 8 , s) állapotból milyen (a'1 , …, a'8 , s' ) állapotot állít elő! § Csupán annyit kell változtatnunk az új állapotban, hogy: • • § az állapot s. elemébe beírjuk az i -t, és az s értékét eggyel megnöveljük. Tehát: leraki (a 1 , …. , a 8 , s)=(a'1 , …. , a'8 , s' ) , ahol: a 'm = { i , ha m=s am , egyébként , ahol m∈{1, 2 , 3} s ' = s+1 22
A problémák megfogalmazásaállapottér reprezentáció 2. 2. ábra: A fenti állapottér-reprezentáció állapottér-gráfja látható, N=4 esetre. 23
Megoldások keresése keresési fával Legyen az ágensünk a romániai Arad városában országjáró körútja vége felé. Az ágens teljesítménymértékei: le szeretne barnulni, megtanulni románul, meglátogatni a nevezetességeket, élvezni az éjszakai életet, kerülni a másnaposságot, stb. Az ágens rendelkezik egy Bukarest – pl. Párizs repülőjeggyel másnapra. Értelmes célnak tűnik, hogy eljusson Bukarestbe. Az összes olyan célt el lehet vetni amely nem teszi lehetővé, hogy időben Bukarestbe érjen. Ezáltal korlátozva vannak az ágens számára elérhető dolgok száma. 24
Megoldások keresése 2. 3. ábra: Románia sematikus országúti térképe 25
Megoldások keresése keresési fával § § Kezdőállapot : benn (Arad) Állapotátmenet függvények: Menj (Nagyszeben), benn (Nagyszeben) • Menj (Temesvár), benn (Temesvár) • Menj (Nagyzerénd), benn (Nagyzerénd) • § § Célállapot: benn (Bukarest) Útköltség: A Bukarestbe siető ágens számára az idő a lényeg, így az útköltség lehetne az út km-ben kifejezett hossza. 26
Megoldások keresése keresési fával • • Az előző megfogalmazás a világ sok aspektusát figyelmen kívül hagyta (kivel utazunk, milyen a táj, van-e rendőr az út mellett, mit közvetít a rádió, milyen az időjárás, milyen az út állapota, stb. ). Ezeket a részleteket kihagytuk az állapotleírásból. A részletek eltávolítását a reprezentációból absztrakciónak (abstraction) nevezzük, tehát hogy mely állapotokat és cselekvéseket vegyük figyelembe. 27
Absztraháljuk a cselekvéseket: • • Kocsi vezetéskor változik a kocsi és az ágens helye, fogy az üzemanyag, szennyeződik a levegő. Mi csak a helyváltoztatást vesszük figyelembe. Számos cselekvést figyelmen kívül hagyunk (rádió bekapcsolása, ablakon való kinézés, „fordítsd a kormányt 3 fokkal balra”). 28
Megoldások keresése • • • Miután definiáltuk a problémát, a megoldás megkeresése az állapottérben történő kereséssel történik. A keresési fák (search tree) az állpotteret együttesen definiáló kezdeti állapotból és az állapotátmenet függvényből generálnak. Ha egy állapotot több úton is elérhetünk, akkor keresési gráfról beszélünk. 29
Megoldások keresése 2. 3. ábra: Románia sematikus országúti térképe 30
Keresési fa kezdete 2. 4 ábra: Az Arad és Bukarest közötti útkeresési probléma részleges keresési fái láthatók. 31
Keresési fa • • A keresési fa gyökere az a keresési csomópont (search node) amely a benn(Arad) kezdeti állapotnak felel meg. Az első lépésben le kell ellenőrizni, hogy ez-e a célállapot (jussunk el Aradról Aradra? ). A célállapot a keresési fa valamelyik levele, ha létezik megoldás. Állapot kifejtése: valamely állapotból egyetlen lépéssel elérhető állapotok meghatározása. 32
Keresési fa • • • A keresést az aktuális állapot kifejtésével (expanding) tesszük, ezzel az állapotok egy új halmazát generáljuk (generating). Nyilván kell tartanunk a legenerált, kifejtésre váró csomópontokat is: ezt a listát peremnek (fringe) vagy hullámfrontnak (frontier) nevezzük. A perem minden eleme egy levélcsomópont (leaf node), amelynek a fában nincsenek követői. 33
Keresési fa Ekkor három új állapotot kapunk: Benn (Nagyszeben) • Benn (Temesvár) • Benn (Nagyzerénd) • Melyik utat válasszuk? A keresés lényege, hogy kiválasztunk egy utat, a többit pedig későbbre halasztani arra az esetre, ha az első változat nem vezet eredményre. 34
Keresési fa • • • Tegyük fel, hogy először Nagyszebent választottuk. Ellenőrizzük, hogy ez célállapot-e (nem), majd kifejtjük. Ekkor benn (Arad), benn (Fogaras), benn(Nagyvárad) és benn (Rimnicu Vilcea) állapotokat kapjuk. A keresést addig folytatjuk, amíg meg nem találjuk a megoldást, vagy el nem fogynak a kifejtendő állapotok. 35
Keresési fa A kifejtendő állapot kiválasztását a keresési stratégia (search strategy) határozza meg. function Fa-Keresés (probléma, stratégia) returns egy megoldás vagy kudarc a probléma kezdeti állapotából kiindulva inicializáld a keresési fát loop do if nincs kifejtendő csomópont then return kudarc A stratégiának megfelelően válassz ki kifejtésre egy levélcsomópontot if a csomópont célállapotot tartalmaz then return a hozzá tartozó megoldás else fejtsd ki a csomópontot és az eredményül kapott csomópontokat, és add a keresési fához end 36
Állapottér vs. keresési fa • • • A romániai példában az állapottér csak 20 állapotból áll, minden egyes városhoz tartozik egy állapot. Ebben az állapottérben viszont végtelen sok út vezet, így a keresési fa végtelen sok csomópontból áll. Pl. Arad-Nagyszeben, Arad-Nagyszeben-Arad-Nagyszeben. Egy jó keresési algoritmus nem követ ilyen utat. 37
Csomópontok Egy csomópont öt komponensből álló adatszerkezet: • • • Állapot: Az állapottérnek a csomóponthoz tartozó állapota. Szülő csomópont: a keresési fa azon csomópontja amely a kérdéses csomópontot generálta. Cselekvés: a csomópont szülő-csomópontjára alkalmazott cselekvés Út-költség: a kezdeti állapottól a kérdéses csomópontig vezető út költsége. Mélység: a kezdeti állapottól vezető út lépéseinek a száma. 38
Csomópont vs. állapot • • Az állapot a keresési fa csomópontjai. A csomópont egy adatnyilvántartásra használt adatszerkezet, amit a keresési fa leírására használunk. Az állapot a világ egy konfigurációja. Előfordulhat, hogy két különböző csomópont ugyanazt az állapotot tartalmazza. 39
A keresés értékelése • • Teljesség (completeness): az algoritmus garantáltan megtalálja a megoldást amennyiben az létezik. Optimalitás (optimality): a stratégia megtalálja az optimális megoldást (legkisebb útköltség). Időigény (time complexity): mennyi ideig tart a megoldás megtalálása? Tárigény (space complexity): mennyi memóriára van szükség a keresés elvégzéséhez? 40
Nem informált keresési módszerek • • A nem informált keresési módszerek csak a probléma definícióban megfogalmazott információra támaszkodhatnak. Az egyes keresési módszerek csak a kifejtésre váró csomópontok kifejtési sorrendjében térnek el egymástól: Szélességi, (Breadth-first search) Egyenletes költségű, (Uniform-cost search) Mélységi, (Depth-first search) Mélységkorlátozott, (Depth-limited search) Iteratívan mélyülő, (Iterative deepening search) Kétirányú keresés (Bidirectional search). 41
Szélességi keresés (breadth first) • • A szélességi stratégia (breadth first search) egyszerű keresési stratégia ahol először mindig a legsekélyebben fekvő (legkevesebb lépéssel elérhető) csomópontot találja meg. A keresési stratégia minden adott mélységű csomópontot hamarabb fejt ki, mielőtt bármelyik, egy szinttel lejjebbi csomópontot kifejtené. 42
Szélességi keresés (breadth first) • • 2. 5. ábra: Szélességi keresés egyszerű bináris fában. Ez a keresés teljes. Ha a legsekélyebb célcsomópont véges d mélységben fekszik, a szélességi keresés eljut hozzá az összes nála sekélyebben fekvő csomópontokat kifejtve (ha a b elágazási tényező véges). A legsekélyebb célcsomópont nem mindig optimális (függ az egyes utak költségétől). 43
Szélességi keresés (breadth first) Mekkora az időigény és a tárigény? • Tegyük fel, hogy minden egyes állapot kifejtésével b új állapot keletkezik. A keresési fa gyökércsomópontja b csomópontot generál az első szinten, amelyek mindegyike újabb b csomópontot (összesen b 2) generál a második szinten. A harmadik szint b 3 csomópontot generál, stb. 44
Szélességi keresés (breadth first) • Ha a megoldás d mélységben van, a legrosszabb esetben a d-edik szinten az utolsót kivéve (mert a célt nem fejtjük ki) a csomópontok mindegyikét ki kell fejtenünk a (d+1)-edik szinten b(d+1)-b csomópontot generálva. A generált csomópontok száma: b+b 2+b 3+. . . +bd+b(d+1)-b=O(b(d+1)) 45
Szélességi keresés (breadth first) • • • Minden legenerált csomópontot a memóriában el kell tárolni, mert vagy a perem eleme, vagy egy perembeli csomópont őse. A komplexitás exponenciális. Feltételezzük, hogy másodpercenként 10000 csomópontot generálunk, egy csomópont tárolásához 1000 bájtra van szükség. 46
Szélességi keresés (breadth first) 2. 6. ábra: A szélességi keresés idő és tárigénye. • • A tárigény nagyobb probléma, mint az időigény, de az időigény még mindig fontos tényező. fontos Az exponenciális komplexitású keresési problémák közül csak a legkisebb problémapéldányok oldhatók meg. 47
Egyenletes költségű keresés (Uniform-cost search) • • • A szélességi keresés optimális, ha minden lépés költsége azonos, mert mindig a legsekélyebb ki nem fejtett csomópontot fejti ki. Az egyenletes költségű keresés (uniform cost search) mindig a legkisebb útköltségű n csomópontot fejti ki először, nem pedig a legkisebb mélységű csomópontot. A szélességi keresés is egyenletes költségű keresés ha minden lépésköltség azonos. 48
Egyenletes költségű keresés (Uniform-cost search) • • • Ez a keresési módszer nem foglalkozik azzal, hogy hány lépésből áll egy bizonyos út, csak az összköltséggel törődik. Mindig végtelen hurokba kerül ha egy csomópont kifejtése zérus költségű cselekvéshez és ugyanahhoz az állapothoz való visszatérést eredményez. A teljességet csak úgy garantálhatjuk, ha minden lépés költsége egy kis epszilon konstansnál nagyobb. lépésköltség ≥ ε 49
Egyenletes költségű keresés (Uniform-cost search) • • • Ez azt jelenti, hogy egy út költsége az út mentén mindig növekszik. Az első kifejtésre kiválasztott célcsomópont egyben az optimális megoldás is. Ezt a keresést nem a mélység, hanem az útköltség vezérli, ezért a komplexitást nehéz a b és d függvényében jellemezni. Legyen C* az optimális megoldás költsége, és legyen minden cselekvés költsége legalább ε (epszilon). Legrosszabb esetben az idő-és tárigény O(b(1+C*/ε ), ami több lehet mint bd. Ez a keresés képes a kis lépésekből álló nagy fákat felkutatni a nagy és hasznos lépéseket tartalmazó utak előtt. 50
Mélységi keresés (depth first search) 2. 7. ábra: A mélységi keresés (depth first search) mindig a keresési fa legmélyebben fekvő csomópontját fejti ki. 51
Mélységi keresés (depth first search) • A keresés azonnal a fa legmélyebb szintjére jut el, ahol a csomópontoknak már nincsenek követői. Kifejtésüket követően kikerülnek a peremből, és a keresés visszalép ahhoz a következő legmélyebben fekvő csomóponthoz amelynek még vannak ki nem fejtett követői. 52
Mélységi keresés (depth first search) • • A mélységi keresés szerény tárigényű. Egyetlen, a gyökércsomóponttól egy levélcsomópontig vezető utat kell tárolnia, kiegészítve az út minden egyes csomópontja melletti kefejtettlen csomópontokkal. Egy kifejtett csomópont el is hagyható a memóriából ha az összes leszármazottja meg lett vizsgálva. Ha az elágazási tényező b, a maximális mélység pedig m, a tárigény bm+1. d=12 mélység esetén a keresés 118 kbájtot igényelne 10 Pbájttal szemben (tízmilliárdos redukció). 53
Mélységi keresés (depth first search) • • A mélységi keresés egy változata a visszalépéses keresés (backtracking search). Itt az összes követő helyett csak egyet generálunk. Minden részben kifejtett csomópont emlékszik, melyik követője jön a legközelebb. Így csak O(m) memóriára van szükség O(bm) helyett. 54
Mélységi keresés (depth first search) • • • A hátrány, hogy egy rossz választással egy hosszú (akár végtelen) út mentén lefelé elakadhat, miközben egy más döntés elvezetne a gyökérhez közeli megoldáshoz. Az előző ábrán először kifejti a teljes bal részfát, annak ellenére, hogy a megoldás a C csomópont. Ha a J csomópont is megoldás lenne, akkor az algoritmus azt adná vissza, ezért ez a keresés nem optimális. Ha a bal oldali részfa korlátlanul mély lenne és nem tartalmazna megoldást, a mélységi keresés soha nem állna meg, ezért a keresés nem teljes. 55
Mélységkorlátozott keresés (depth limited search) • • • A végtelen fák problémáját a mélységi keresés úgy küszöböli ki, hogy az utak maximális mélységére egy l korlátot ad. Az l mélységben lévő csomópontokat úgy kezeli mintha nem volnának követői. A módszer neve a mélységkorlátozott keresés MKK (depth limited search, DLS). A mélységkorlát a végtelen út problémáját megoldja, de behozza a nem teljesség egy újabb forrását ha l<d-t választunk, azaz ha a legsekélyebb célcsomópont a mélységkorláton túl van. Ez a keresés l>d-re sem optimális. 56
Mélységkorlátozott keresés (depth limited search) • • A keresés időigénye O(bl), tárigénye O(bl). A mélységi keresés olyan speciális mélységkorlátozott keresésnek tekinthető amikor l=végtelen. A mélységi korlátot néha a probléma ismeretére lehet alapozni. Például Románia térképén 20 város található, így tudjuk hogy ha létezik a megoldás akkor az maximálisan 19 lépés hosszú lehet, így l=19 egy lehetséges választás. 57
Mélységkorlátozott keresés (depth limited search) • Ha viszont a térképet jobban megnézzük, azt látjuk, hogy minden város maximálisan 9 lépésben elérhető. Ezt a számot az állapottér átmérőjének (diameter) nevezzük. 58
Iteratívan mélyülő mélységi keresés (iterative deepening search) • • • Ez a módszer egy általános stratégia amit sokszor a mélységi kereséssel együtt alkalmaznak a legjobb mélységkorlát megtalálására. Az algoritmus fokozatosan növeli a mélységkorlátot (0, 1, 2, . . . ) amíg meg nem találja a célt. Ez akkor következik be ha a mélységkorlát eléri a d-t, a legsekélyebben fekvő célcsomópont mélységét. Az iteratívan mélyülő keresés ötvözi a szélességi és a mélységi keresés előnyeit. 59
Iteratívan mélyülő mélységi keresés (iterative deepening search) • • A mélységi kereséshez hasonlóan szerény O(bd) a memóriaigénye. A szélességi kereséshez hasonlóan teljes ha az elágazási tényező véges, és optimális ha az útköltség a csomópontok mélységének nem csökkenő függvénye. 60
Iteratívan mélyülő mélységi keresés (iterative deepening search) • • Ez az algoritmus tékozlónak tűnhet mert sok állapotot többször is kifejt. A legmélyebb szinten (d) található csomópontokat csak egyszer fejtjük ki, egy szinttel feljebb kétszer, stb. Egészen a gyökér gyerekeiig, amelyeket d-szer fejtünk ki. A kifejtett csomópontok össz-száma: Cs(IMK)=(d)b+(d-1)b 2+. . . +(1)bd • Ez bd időkomplexitás. 61
Iteratívan mélyülő mélységi keresés (iterative deepening search) 2. 8. ábra: Az ábra a keresésnek az első 4 iterációját mutatja be egy bináris fán, ahol az algoritmus a megoldást a negyedik iterációban találja meg. 62
Iteratívan mélyülő mélységi keresés (iterative deepening search) • A szélességi keresésnél a legenerált csomópontok száma: Cs(SZK)=b+b 2+. . . +bd+b(d+1)-b • Ha b=10 és d=5: Cs(IMK)=50+400+3000+20000+100000+123450 Cs(SZK)=10+1000+100000+999990 =1111100 Ha nagy a keresési tér, és a megoldás mélysége nem ismert, akkor az iteratívan mélyülő keresés ajánlott. • 63
Kétirányú keresés (Bidirectional search) • • Az az ötlet, hogy egyszerre elindítsunk egy keresést előre a kiinduló állapotból, illetve hátrafelé a célállapotból, és a keresés akkor fejeződik be ha a két állapot valahol találkozik (3. 16 ábra). Az az érv, hogy b(d/2)+b(d/2) sokkal kisebb mint bd, illetve az ábrán a két kisebb kör összterülete kisebb mint annak a nagy körnek a területe amelynek középpontja a kiinduló állapot, és amely a peremével a célállapotot eléri. 64
Kétirányú keresés (Bidirectional search) 2. 9. ábra: Az ábrán a két keresési irány majdnem találkozik, amikor a kiinduló csomópontból kinyúló egyik ág összeér egy célcsomópontból kinyúló másik ággal. 65
VÉGE 66
- Slides: 66