790 likes | 923 Views
KERESÉS (SEARCH). KERESÉS. Keresés – módszeres próbálkozás Problémák: Mit kell tudni egy feladat megoldásához? – akciók, állapotok, célok Hogyan kell az ismereteket leírni? – MI-ben: reprezentáció Hogyan kell a megoldást keresni? – MI-ben: keresés Reprezentáció:
E N D
KERESÉS • Keresés – módszeres próbálkozás • Problémák: • Mit kell tudni egy feladat megoldásához? – akciók, állapotok, célok • Hogyan kell az ismereteket leírni? – MI-ben: reprezentáció • Hogyan kell a megoldást keresni? – MI-ben: keresés • Reprezentáció: • állapottér (state space), kezdeti- és célállapotok • reprezentálása: gráf (graph) • csomópont (node) - állapot (state) • él (arc) - művelet (action) • probléma redukció – részfeladatokra bontás • reprezentálása: gráf • csomópont – problémaleírás • él - művelet (probléma részproblémává redukálása)
KERESÉS • Reprezentációs gráf • keresés közben építjük fel (implicit leírás) • irányított ciklusmentes gráf (egyszerűsítés: fává alakítjuk)
KERESÉS • Keresési probléma: • kezdeti állapot, • operátorok, • célteszt/ célállapot, • költségek • A keresés folyamata: • állapottér, út, megoldás • kiterjesztés, stratégia • A keresés technikája: • keresési fa, csomópont, gyökér, levél • keresési algoritmus: melyik csomópontot érdemes kiterjeszteni? • Keresés hatékonyságának mérése: • talál-e megoldást? • talált megoldás jó megoldás-e? (alacsony költségű – útköltség) • keresési eljárás költsége (idő- és memóriaigény) • keresés költsége: út költsége + keresési eljárás költsége
ÚTKERESÉS VÁROSOK KÖZÖTT kezdeti állapot: Nyíregyházán vagyunk operátorok: utazás szomszédos városok között állapotok: egyes városokban vagyunk cél teszt: Fehérgyarmaton vagyunk már? költség: megtett út hossza optimális megoldás: minimális költségű út a kezdeti és a célállapot között
MISSZIONÁRIUSOK ÉS KANNIBÁLOK PROBLÉMÁJA kezdeti állapot … célállapot … útköltség ... Modell: híd, lyukas csónak, evező … frame probléma • Reprezentáció: • node ?? - nevek ?? • – bal part:(3M, 3K, Cs) • akció ?? - ki merre megy a csónakban • – (1M), (1K), (1M 1K), (2M), (2K) • Keresés: megszorítások az operátorok alkalmazására: • – csak legális állapotba • – csak új állapotba
HANOI TORNYAI reprezentáció … állapottér modell állapot - melyik korong melyik rúdon, pl. (1, 1, 1, 1) művelet - korong áthelyezése i. rúdról j. rúdra (1 i, j 3)
HANOI TORNYAI Hipotetikus megoldás Probléma redukció
4 x 4-es PUZZLE reprezentáció állapotok – lapok helyzete – 4 x 4 -es mátrix állapottér – elérhetőség ! akció - ? adott lap mozgatása fel, le, jobbra, balra lyuk mozgatása (4 lehetséges akció) költség – az akciók száma (az út hossza) megoldás – minimális költségű út a kezdeti és a célállapot között céltól való távolság hány lépés van a célig (S) – nem tudjuk becslés rossz helyen levő lapok száma (H1) Manhattan távolság (H2) H1, H2: alsó becslések H2 H1 H2 jobban informált becslés
N KIRÁLYNŐ PROBLÉMA reprezentáció állapot – egy állás (N x N-es mátrix) állapottér – lehetséges állások 1..N királynővel – mezők megcímkézése (KN, ütésben, szabad) nem lehetnek ütésben álló KN-k KN=N esetén célállapot művelet – 1 KN elhelyezése ütésben álló mezők száma nő korlátozás kielégítés (constraint satisfaction) költség – minden megoldás költsége azonos (N hosszú műveletsorozat) kezdőállapot – üres tábla célállapot – N királynő a táblán
N KIRÁLYNŐ PROBLÉMA reprezentációs gráf – inkrementális megfogalmazás
LEFEDÉSI PROBLÉMA "bamba módszer" : próbálgatáslehetséges állapotok száma igen nagy elágazási tényező nagy MI-t csak akkor szabad használni, ha a természetes kifogy!
KRIPTO-ARITMETIKA (BETŰSZÁMTAN) reprezentáció állapot – értéklista, néhány betű számmal helyettesítve akció – újabb betűhöz szám rendelése végállapot – minden betűnek számértéke van célállapot – kijön az összeg útköltség?? sorrend?? hány megoldást keresünk? probléma redukció korlátozás kielégítés
KERESZTREJTVÉNY REJTÉS reprezentáció állapot – részben/teljesen kitöltött rejtvény akció – egy (értelmes) szó beírása végállapot - minden mezőn betű sorrend?? időben meghatározott visszalépés (cronological backtrack) függőségvezérelt visszalépés (dependency-directed backtrack)
CSELEKVÉSTERVEZÉS lehet-e ezt keresési feladatként felfogni?akciósorozat (akciósorrend??) kezdőállapot célállapot (forward reasoning) - itt reménytelen célhoz hiányzó feltételek célállapot kezdőállapot (backward reasoning)
ÁLTALÁNOS KERESÉSI ALGORITMUS • adott: • kezdeti állapot • célteszt/ célállapot • műveletek • keresési algoritmus: • Legyen L a kezdeti állapoto(ka)t tartalmazó lista. • Ha L üres, akkor leállás - a keresés sikertelen; egyébként legyen n egy csomópont L-ből. • Ha n célállapot, akkor leállás - eredmény megadása; egyébként n törlése L-ből, n gyermekeinek előállítása, n gyermekeinek hozzáadása L-hez, visszalépés 2-re.
ÁLTALÁNOS KERESÉSI ALGORITMUS • keresőgráf (search graph) • nyílt csúcsok (open nodes) • kiterjesztés (extension) • sikertelen keresés • több célállapot • melyik nyílt csúcsot válasszuk ???
PÉLDA: ÁLTALÁNOS KERESŐ JÁTÉK • adott: két kétjegyű szám (kiindulási- és célszám) • feladat: eljutni a kiindulási számtól a célszámig • akció: egy számjegy növelése vagy csökkentése, kétszer nem lehet ugyanazt a számjegyet változtatni, 0-t csökkenteni, 9-t növelni nem lehet Pl. kiindulási szám 25, célszám 44 • L={25} • n=25 • L={15 (25), 35 (25), 24 (25), 26 (25)} • n=15 • L={35 (25), 24 (25), 26 (25), 14 (15|25), 16 (15|25)} … melyik számot választjuk a listáról? hova, milyen sorrendben tesszük a gyerekeket? célfüggvény
SZÉLESSÉGI KERESÉS (BREADTH-FIRST SEARCH) A keresési fában mindig a legmagasabb szinten lévő csomópontok valamelyikét terjeszti ki open lista (L): A B C C D E D E F G E F G H I J F G H I J G H I J H I J K L I J K L M J K L M N O K L M N O A C B D E F G H I J K L M N O
SZÉLESSÉGI KERESÉS (BREADTH-FIRST SEARCH) Az általános keresési algoritmus módosítása: • n az első csomópont L-ből • n gyermekeinek hozzáadása L végéhez Az algoritmus tulajdonságai: • memóriaigény: bd • időigény: 1 + b + b2 + ... + bd bd • teljes • optimális
MÉLYSÉGI KERESÉS (DEPTH-FIRST SEARCH) A keresési fában mindig a legmélyebben lévő csomópontok valamelyikét terjeszti ki A open lista (L): A B C D E C H I J E C M I J E C I J E C N O J E C C B D E F G H I K L J M N O
MÉLYSÉGI KERESÉS (DEPTH-FIRST SEARCH) Az általános keresési algoritmus módosítása: • n az első csomópont L-ből • n gyermekeinek hozzáadása L elejéhez Az algoritmus tulajdonságai: • memóriaigény - megoldás méretével arányos - b*d • időigény: bd • nem teljes (végtelen ág lehet) • nem optimális
KORLÁTOZOTT MÉLYSÉGŰ KERESÉS(DEPTH-LIMITED SEARCH) • Mélységi keresés mélységi korláttal. • A keresési fában mindig a legmélyebben lévő csomópontok valamelyikét terjeszti ki, feltéve, hogy az nincs egy előre adott mélységi korlát (l) alatt. Az algoritmus tulajdonságai: • memóriaigény: b*l • időigény: bl • teljes (ha l nagyobb, mint a megoldás mélysége, d) • nem optimális Hogyan válasszuk meg előre a mélységi korlátot?
ITERATÍV MÉLYÍTÉS (ITERATIVE DEEPENING) • Megkerüli a mélységi korlát meghatározását. • Korlátozott mélységű keresés egyre növekvő l = 0, 1, 2, ... mélységi korlát mellett. • Mintha a csomópontoknak a mélységi korlát alatt nem lehetnének leszármazottai. Ha a célt nem sikerült így elérni, eggyel növeli a korlátot és újraindítja az egész keresést. Az algoritmus tulajdonságai: • memóriaigény: megoldás méretével arányos – b*d • időigény: bár redundáns (a fa „teteje” ismétlődik) – bd • teljes • optimális
ITERATÍV MÉLYÍTÉS (ITERATIVE DEEPENING) open lista (L): l=3 A B C D E C H I J E C I J E C J E C E C C F G G K L open lista (L): l=0 A l=1 A B C C l=2 A B C D E C E C C F G G A C B E F G D H I K L J M N O
ITERATÍV MÉLYÍTÉS (ITERATIVE DEEPENING) redundáns - Nagy teher ez? Lásd az alábbi példát: • Legyen b = 10, d = 5. Ekkor a csomópontok száma: 1 + 10 + 100 + 1 000 + 10 000 + 100 000 = 111 111 • A legalsó szinten a csomópontokat egyszer kell kiterjeszteni, eggyel magasabb szinten kétszer, stb. Azaz a kiterjesztések teljes száma: 6*1 + 5*10 + 4*100 + 3*1 000 + 2*10 000 + 100 000 = 123 456 • Ebben a példában ez a szükségesnél 11% -kal több kiterjesztést jelent. Előnyei: • mélységi keresés csekély memóriaigénye • szélességi keresés teljessége • biztosítja, hogy a keresési fa nem lesz mélyebben feltárva, mint amilyen mélyen maga a cél található
EGYENLETES KERESÉS (UNIFORM-COST SEARCH) A keresési fában mindig a pillanatnyilag legkisebb költségű csomópontok valamelyikét terjeszti ki open lista (L): A(0) B(3) C(4) C(4) D(5) E(7) D(5) E(7) F(7) G(7) I(6) E(7) F(7) G(7) J(7) H(8) E(7) F(7) G(7) J(7) H(8) N(8) O(8) F(7) G(7) J(7) H(8) N(8) O(8) G(7) J(7) H(8) N(8) O(8) J(7) H(8) N(8) O(8) K(9) L(10) H(8) N(8) O(8) K(9) L(10) N(8) O(8) K(9) L(10) M(11) A 3 4 C B 3 3 2 4 D E F G 3 2 2 3 1 H I J K L 2 2 M N O
EGYENLETES KERESÉS (UNIFORM-COST SEARCH) Az általános keresési algoritmus módosítása: • n az első csomópont L-ből • n gyermekeinek hozzáadása L-hez, majd L rendezése a csomópontok növekvő költsége szerint. Az algoritmus tulajdonságai: • memóriaigény: bd • időigény: bd • teljes • optimális speciális változata: szélességi keresés (élek egységnyi költségűek)
VAK KERESÉSI STRATÉGIÁK ÖSSZEHASONLÍTÁSA b: elágazási tényező d: megoldás mélysége l: mélységi korlát
KERESÉS GRÁFON Egyazon csomóponthoz több út is vezethet. (pl. útkeresés) A keresés hatékonysága javítható, ha sikerül felfedezni, hogy egy állapotba több út is vezet. Ismétlődő állapotok kezelése: kiterjesztés tiltva • a szülő felé • az elődök felé • az összes, már kiterjesztett csomópont felé. Megéri a széleskörű ellenőrzés? Ha sok a hurok az állapottérben, akkor igen.
HEURISZTIKUS KERESÉSEK • vak keresési algoritmusok hatékonyságának javítása • feladatmegoldások számításigényének csökkentése • keresés korlátozott erőforrások mellett • feladathoz kapcsolódó információk figyelembe vétele Heurisztika • általános jelentés: bármely tanács, mely gyakran hatékony, ám nem biztos hogy minden esetben érvényes • technikai jelentés: heurisztikus kiértékelő függvény, amely a probléma egy állapotához egy számot rendel (pl. sakk: egy pozíció ereje)
HEURISZTIKUS KERESÉSEK Heurisztika a keresésben: • A még ki nem terjesztett csomópontok (L) kiértékelése: mennyire van közel a célhoz? Algoritmus típusok • legjobbat-először keresés: a legjobbnak tűnő csomó- pont kiterjesztése (előretekintő keresés, A*, IDA*) • iteratív javítás: elmozdulás a legjobbnak tűnő irányba (hegymászó keresés, szimulált hűtés, genetikus algoritmus) A legjobb csomópont megtalálása elvben nem könnyebb, mint maga a keresési feladat!
HEURISZTIKUS KERESÉSEK Heurisztikus kiértékelő függvény Célja: • a feladat megoldásával járó számításigény csökkentése • adott erőforrás használat mellett a lehető legjobb megoldás megtalálása Kompromisszum a számításigény és a megoldás minősége között Már kevés alkalmazás-függő szakismeret is nagyban segíthet akár 1), akár 2) célok érdekében. Gyakori heurisztikus kiértékelő függvény: • Annak a költségnek a becslése, mely egy célállapotnak a pillanatnyi állapotból való elérésével jár. (pl. 4x4-es játék, útkeresés városok között, 8-királynő)
HEURISZTIKUS KERESÉSEK keresett objektum költsége: • megtett út költsége (ismert) + • hátralevő út költsége (becsülni tudjuk) f(n) = g(n) + h(n) Milyen legyen a kiértékelő függvény? • hatékonyan számítható • ne becsülje túl a tényleges költséget Problémák: a kiértékelés • lehet igen drága (idő, memória) • csak becslésen alapulhat (így félre is vezethet)
HEGYMÁSZÓ KERESÉS (HILL-CLIMBING SEARCH) A keresés során egy csomópont • közvetlen leszármazottjait vizsgálja csak, és • ezek közül mindig a legjobbat választja Algoritmus • Legyen n a kezdeti állapot. • Ha n egy célállapot, akkor állj le és add vissza eredményként. • Egyébként állítsd elő n valamennyi n’ leszármazottját; legyen n = a legjobb n’; menj vissza 2-re. Tulajdonságok • Nem tárolja a keresési gráfot, csak a pillanatnyilag vizsgált csomópontot - így minimális memória igény • Sikere nagyban függ a felület alakjától
HEGYMÁSZÓ KERESÉS (HILL-CLIMBING SEARCH) • Problémák • lokális maximum • azonos értékű felület • nyereg probléma (gerinctúra lenne jó, de arra nem vezet út) • Módosítások: • több pontból újraindítás (véletlen újraindítású hegymászó keresés) • „lefelé vezető” lépések megengedése (szimulált hűtés) • Előnyei: • memóriaigény kicsi • jó helyzetből indulva gyorsan célhoz ér
ELŐRETEKINTŐ KERESÉS (BEST-FIRST SEARCH) • Elv: megtalálni egy célt, amilyen gyorsan csak lehetséges • Kiértékelés alapja: egyedül a céltól való távolság • Mindig a célhoz legközelebb levő csomópontot terjeszti ki – becslés Algoritmus • Legyen L a kezdeti állapotokat tartalmazó lista. • Ha L üres, akkor állj le – a keresés sikertelen; egyébként legyen n az a csomópont L-ből, amelyik várhatóan a legközelebb van a célhoz. • Ha n egy célállapot, akkor állj le és add vissza (a hozzá vezető úttal együtt) eredményként; egyébként töröld n-t L-ből; állítsd elő n gyermekeit; jegyezd fel a hozzájuk vezető utat; add a gyermekeket L-hez; menj vissza 2-re.
ELŐRETEKINTŐ KERESÉS (BEST-FIRST SEARCH) • Csomópont költsége: f(n) = h(n) – becsült távolság a céltól kiterjesztés sorrendje 8 1. élek költsége a példában egységnyi 6 2. 7 4 3. 4 nem optimális 2 4. 0 0 5.
A ALGORITMUS egyenletes keresés és előretekintő keresés előnyös tulajdonságait egyesíti • keresés biztonságának megtartása • kiterjesztések számának csökkentése - előretekintő heurisztikával Kiértékelés alapja: • a már megtett út, és • a még várható út költsége kiértékelő függvény: f(n) = g(n) + h(n) h(n) 0 ahol: • g(n): n tényleges távolsága a kezdeti állapottól • h(n): n becsült távolsága a céltól f(n) minimális kifejtésre kerülő csúcs
A ALGORITMUS h(n) f(n) élek költsége a példában egységnyi 3 3 2 3 4 5 1 3 2 4 nem feltétlenül optimális 1 4 0 3 1 5 1 6
A* ALGORITMUS olyan A algoritmus, melynek heurisztikus függvénye minden csúcsban alsó becslés n: h(n) h*(n) h(n) megengedhető (admissible) Az A* algoritmus mindig optimális megoldást talál (ha létezik megoldás). • A kiterjesztésre választott bármely n csúcsra f(n) f*. (f* - optimális mo. költsége) ha az algoritmus n csúcsot választja m helyett: f(n) f(m) = g(m) + h(m) g(m) + h*(m) = f*(m) = f* • A talált megoldás optimális (indirekt bizonyítás) Tfh eljutunk t végpontba, amely nem optimális f(t) f* 1. szerint f(t) f* ellentmondás
A* ALGORITMUS Alkalmazása gráfon (DAG) • egy keresési pontba többféleképpen is el lehet jutni • open listába többször is bekerülhet ugyanaz a pont (kisebb költséggel) • cél: egy node-ba először a legkisebb költséggel érjünk
A* ALGORITMUS Konzisztencia feltevés él költsége
A* ALGORITMUS • ha minden ∆ egyenlőtlenség teljesül nincs újraállítás • ha van újraállítás van sértett ∆ egyenlőtlenség c: g(c) + s2 + h(a) < g(b) + h(b) g(b) + s1 +h(a) < g(b) +h(b) megsérül a Δ egyenlőtlenség
A* ALGORITMUS A 3 (3) • L = {A(3)} • L = {B(3) D(3) C(4)} • L = {E(3) D(3) C(4)} • L = {D(3) C(4) K(6) J()} • L = {I(3) C(4) K(6) H(7) J()} • L = {C(4) N(5) K(6) H(7) J() O()} • L = {F(4) N(5) K(6) H(7) J() O() G()} • L = {N(5) K(6) L(6) H(7) J() O() G()} 1 1 2 B 2 (3) C 2 (4) D 2 (3) 1 1 4 1 1 E 1 (3) F 1 (4) G H 2 (7) I 1 (3) 1 1 3 1 4 3 J O K 0 (6) L 0 (6) M 1 (7) N 0 (5) 1 3 P 0 (7) Q 0 (9)
A* ALGORITMUS • h h* csak az útba eső node-okat fejti ki • h 0 egyenletes keresés • h 0 és élek költsége egységnyi szélességi keresés • h1, h2 megengedhető becslések h2 h1 (minden pontban) exp(h1) exp(h2) h1 jobban informált becslés • ideális kiértékelő függvény: • célállapotban visszaadja a megoldás költségét h(n) = 0 és f(n) = g(n) a célban • nem változik, ha bármely állapotból optimális lépést teszünk (tökéletes becslő) ha h(n) tökéletesen becsli a céltól való távolságot, nincs letérés az optimális útról • becslés költsége . . .
IDA* ALGORITMUS (ITERATIVE DEEPENING A*) • Alapötlet: az iteratív mélyítés csökkentette a vak keresés memóriaigényét – alkalmazzuk most heurisztikus keresésre • Iteratív mélyítés, mélységi korlát helyett "jósági" korlát f(n)-re • ciklusonként mélységben-először keresés • mozgó korlát • Mintha a csomópontoknak a "jósági" korlát alatt nem lehetnének leszármazottjai. – Ha a célt nem sikerült így elérni, növeli a korlátot és újraindítja az egész keresést. • Jósági korlát meghatározása: • Hatékonyabb, ha az aktuális korlátot nem léptetve növeli, hanem az előző iterációs ciklusban választja ki.