Keresőalgoritmusok A problémamegoldó ágensek (problem solving agent) keresik a megoldást. Keresik azt a cselekvéssorozatot amely a kívánt állapotba vezet.

Slides:



Advertisements
Hasonló előadás
Készítette: Kosztyán Zsolt Tibor
Advertisements

GRIN: Gráf alapú RDF index
A Floyd-Warshall algoritmus
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok
KÉSZÍTETTE: Takács Sándor
MESTERSÉGES INTELLIGENCIA (ARTIFICIAL INTELLIGENCE)
Összefoglalás Hardver,szoftver,perifériák Memóriák fajtái
A normalizálás az adatbázis-tervezés egyik módszere
C++ programozási nyelv Gyakorlat hét
MI 2003/9 - 1 Alakfelismerés alapproblémája: adott objektumok egy halmaza, továbbá osztályok (kategóriák) egy halmaza. Feladatunk: az objektumokat - valamilyen.
MI 2003/ A következőkben más megközelítés: nem közvetlenül az eloszlásokból indulunk ki, hanem a diszkriminancia függvényeket keressük. Legegyszerűbb:
E képlet akkor ad pontos eredményt, ha az exponenciális tényező kitevőjében álló >>1 feltétel teljesül. Ha a kitevőben a potenciálfal vastagságát nanométerben,
Matematika II. 2. előadás Geodézia szakmérnöki szak 2012/2013. tanév Műszaki térinformatika ágazat őszi félév.
Illés Tibor – Hálózati folyamok
Prímtesztelés Témavezető: Kátai Imre Komputeralgebra Tanszék Nagy Gábor:
Algoritmusok Az algoritmus fogalma:
MI 2003/ Alakfelismerés - még egy megközelítés: még kevesebbet tudunk. Csak a mintánk adott, de címkék nélkül. Csoportosítás (klaszterezés, clustering).
Minimax és problémaredukció, egyszerű példák INCK431 Előadó: Dr. Nagy Benedek Norbert Gyakorlatvezető: Kovács Zita 2011/2012. II. félév A MESTERSÉGES INTELLIGENCIA.
Állapottér-reprezentáljunk!
Papp Róbert, Blaskovics Viktor, Hantos Norbert
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A digitális számítás elmélete
Év eleji információk Előadó: Hosszú Ferenc II. em Konzultáció: Szerda 9:50 – 10:35 II. em
Eseményalgebra, kombinatorika
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
KERESÉS (SEARCH).
KERESÉS (SEARCH).
Készítette: Kosztyán Zsolt Tibor
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Gráfok Készítette: Dr. Ábrahám István.
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Scenáriók készítése Dr. Kollár József Magyar Coachszövetség Közhasznú Alapítvány.
Intelligens Felderítő Robotok
Lénárt Szabolcs Páll Boglárka
Gépi tanulás Tanuló ágens, döntési fák, általános logikai leirások tanulása.
Hernyák Zoltán Programozási Nyelvek II.
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Fák.
A Dijkstra algoritmus.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
Logikai programozás 5..
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
Mesterséges Intelligencia 1. Eddig a környezet teljesen megfigyelhető és determinisztikus volt, az ágens tisztában volt minden cselekvésének következményével.
GRÁFOK Definíció: Gráfnak nevezzük véges vagy megszámlálhatóan végtelen sok pont és azokat összekötő szintén véges vagy megszámlálhatóan végtelen sok.
Valószínűségszámítás II.
Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék Korlátkielégítési problémák Autonóm és hibatűrő információs.
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Útkeresések.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Struktúra predikció Struktúra lehet Felügyelt tanulási probléma
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
A Dijkstra algoritmus.
Dinamikus adatszerkezetek
Algoritmusok és Adatszerkezetek I.
Mesterséges intelligencia
Nem módosítható keresések
Algoritmusok szerkezete
LL(1)-elemzés az LL(1)-elemzők már jobbak az előzőeknél, bár nem fedik le a programozási nyelvek szükségleteit alapötlet: a levezetés következő lépéséhez.
Depth First Search Backtracking
Algoritmusok és Adatszerkezetek I.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Algoritmusok és Adatszerkezetek I.
Állapottér-reprezentáljunk!
Előadás másolata:

Keresőalgoritmusok 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.

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 tud maga elé tűzni, és megpróbálja azt elérni. 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.

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: Kiinduló állapot (initial state), amiből az ágens kezdi a cselekvéseit. A romániai ágens kezdeti állpota pl. Benn(Arad). Az ágens rendelkezésére álló lehetséges cselekvések (actions). A leginkáb használatos leírás az állapotátmenet függvényt alkalmazza (successor function).

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. A benn(Arad) állapotban az állapotátmenet függvény a menj(Nagyszeben), benn(Nagyszeben) menj(Temesvár), benn(Temesvár) menj(Nagyzerénd), benn(Nagyzerénd)

Jól definiált problémák és megoldások Az állapottér 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. Célteszt (goal test), amely meghatározza, hogy egy adott állapot célállapot-e. A mi esetünkben ez a benn(Bukarest).

Jól definiált problémák és megoldások Ú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. A Bukarestbe siető ágens számára az idő a lényeg, így az útköltség lehetne az út km-ben kifejezett hossza. Az x állapoból az y állapotba vezető cs cselekvés lépésköltsége (step cost) lk(x,y,cs)

Megoldás A probléma megoldása (solution) a kiinduló állapotból a célállapotba vezető út. A megoldás minőségét az útköltségfüggvény méri, és egy optimális megoldásnak (optimal solution) a megoldások közt a legkisebb lesz az útköltsége.

A problémák megfogalmazása 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.

A problémák megfogalmazása A cselekvéseket is absztrahálni kell. Kocsivezeté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”).

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.

Megoldások keresése

Keresési fa kezdete 3.6

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 keresést az aktuális állapot kifejtésével (expanding) tesszük, ezzel az állapotok egy új halmazát generáljuk (generating).

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.

Keresési fa Tegyük fel, hogy előzör Nagyzebent 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.

Keresési fa A kifejtendő állapot kiválasztását a keresési stratégia (search strategy) határozza meg.

Állapottér vs. keresési fa A romániai pélában az álapottér csak 20 állapotból áll, minden egyes városhoz tartozik egy állapot. Ebben az állapottérben viszon végtelen sok út vezet, így a keresési fa végtelen sok csomópontból áll. Pl. Arad-Nagyszeben, Arad-Nagyszeben-Arad, Arad-Nagyszeben-Arad-Nagyszeben. Egy jó keresési algoritmus nem követ ilyen utat.

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 klrdlses 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.

Csomópont vs. állapot 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.

Csomópontok Nyilván kell tartanunk a legenerált, kifejtésre váró csomópontokat is: ezt a listát peremnek (fringe) nevezzük. A perem minden eleme egy levélcsomópont (leaf node), amelynek a fában nincsenek követői. Az előző ábrán (3.6.) a fák pereme a vastagon bekeretezett csomópontokból áll.

Hatékonyság Teljeséé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?

Szélességi keresés (breadth first) A szélességi stratégia (breadth first search) egy egyszerű keresési stratégia ahol először a gyökércsomópontot fejtjük ki, a következő lépésben az összes a gyökércsomópontból generált csomópontot, majd azok követőit, stb. 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é.

Szélességi keresés (breadth first)

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).

Szélességi keresés (breadth first) Mekkorák 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.

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 b d +b (d+1) -b=O(b (d+1) )

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 csomópontot generálunk, egy csomópont tárolásához 1000 bájtra van szükség.

Szélességi keresés (breadth first) A tárigény nagyobb probléma mint az időigény, de az időigény még mindig fontos tényező. Az exponenciális komplexitású keresési problémák közül csak a legkisebb problémapéldányok oldhatók meg.

Egyenletes költségű keresés 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.

Egyenletes költségű keresés 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ényaz. A teljességet csak úgy garantálhatjuk, ha ha minden lépés költsége egy kis epszilon konstansnál nagyobb.

Egyenletes költségű keresés 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*/epszilon) ), ami több lehet mint b d. 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.

Mélységi keresés A mélységi keresés (depth first search) mindig a keresési fa legmélyebben fekvő csomópontját fejti ki.

Mélységi keresés 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

Mélységi keresés 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 kefejtetlen 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éna keresés 118kbájtot igényelne 10Pbájttal szemben (tízmilliárdos redukció).

Mélységi keresés A mélységi keresés egy változata a visszalépéses keresés (backtracking search). Itt az összes kvető 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.

Mélységi keresés A hátrány, hogy egy rossz választássalegy 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. A á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.

Mélységkorlátozott keresés 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 nemteljesség egy újabb forrását ha l d-re sem optimális.

Mélységkorlátozott keresés A keresés időigénye O(b^l), tárigénye O(bl). A mélységi keresés olyan speciális méllysé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.

Mélységkorlátozott keresés 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.

Iteratívan mélyülő mélységi keresés Ez a módszer (iterative deepening search) 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élyeben 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.

Iteratívan mélyülő mélységi keresés 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. A 3.15 ábra ennek 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.

Iteratívan mélyülő mélységi keresés 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 (1)b d Ez b d időkomplexitás.

Iteratívan mélyülő mélységi keresés

A szélességi keresésnél a legenerált csomópontok száma: Cs(SZK)=b+b b d +b (d+1) -b Ha b=10 és d=5: Cs(IMK)= Cs(SZK)= = 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.

Kétirányú keresés 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 b d, illetve az ábrán a két kisebb kör összterülete kisebb mint annaka nagy körnek a területe amelynek középpontja a kiinduló állapot, és amely a peremével a célállapotot eléri.

Kétirányú keresés 3.16