Intelligens Rendszerek Elmélete 4 IRE 4/32/1
Problémamegoldás kereséssel http://nik.uni-obuda.hu/mobil IRE 4/32/2
Egyszerű lények intelligenciája? http://www.youtube.com/watch?v=tlo2n3ymcxw&nr=1 IRE 4/32/3
A problémák csoportosítása a megoldási idő szerint P (Polynomial) viszonylag egyszerűen megoldható problémák. P típusú egy probléma ha létezik olyan problémamegoldó algoritmus, melynek időszükséglete legfeljebb N polinomjával függ össze. NP (Non-deterministic Polynomial) Nehéz problémák. Azok a problémák, melyek bármely feltételezett megoldása polinomiális idő alatt eldönthető, hogy helyes e. NP-teljes (NP complete): A legnehezebben megoldható, (nagy változószám esetén megoldhatatlan) problémák. A megoldásához szükséges idő e N (vagy n!) szerint változik. IRE 4/32/4
A problématér matematikai ábrázolása Minden feladat (probléma) direkt vagy implicit módon meghatároz egy gráfot, (egyszerűbb estben egy fát) melynek: Kezdőcsúcs: a kiinduló adathalmaz Élek: az alkalmazható műveletek Gráfpontok: levelek, gyerek csomópontok Általános csúcsok: az adathalmaz egy-egy változatát tartalmazzák, amelyeket a megfelelő élek menti műveletek alkalmazásával kapunk. Fa struktúra A S C D E F B Gráf struktúra A S C D E F B G cél G cél IRE 4/32/5
A keresési tér nagyságának becslése 1. Sakk 1 : Egy átlagos játszma lépésváltásainak száma 45 ( a fa mélysége 90) Fekete Gregorics-Nagy: Bevezetés a mesterséges intelligenciába Egy állásban a legális lépések átlagos száma 35 A lehetséges levelek száma: 35 90 Ha egy erős játékos minden állásban 1.76 lépést tart jónak, akkor 1.76 90 tehát 1.25 * 10 22 kiértékelendő csúcs adódik 4.6 milliárd év ~ 10 18 másodperc Ha egy másodperc alatt 10 000 állást értékelünk, akkor 4,6 milliárd évre lenne szükség IRE 4/32/6
A keresési tér nagyságának becslése 2. Az utazó ügynök problémája: 1. Minden városba el kell utazni, 2. Minden városba csak egyszer kell elutazni, Felkeresendő városok száma (n) A lehetséges útirányok száma:n!/2n 10 181 440 20 6.08 * 10 16 30 4.42 * 10 30 Kombinatorikus robbanás!!! S D A B C IRE 4/32/7
Produkciós (kereső) rendszer A produkciós rendszer a klasszikus mesterséges intelligencia egyik alapvető fogalma, egy sajátos probléma megoldási szemléletet tükröző feladat megoldási rendszer. Külön kezeli: A feladat adatait Az adatokon értelmezett műveleteket A műveleteket algoritmussá szervező vezérlési stratégiákat. (pl. keresés) IRE 4/32/8
A produkciós rendszer általános algoritmusa Kezdeti állapot kiválasztása While állapot célállapot do Begin Az állapotra alkalmazható operátor kiválasztása állapot:=operátor(állapot) End. IRE 4/32/9
A kereséssel kapcsolatos alapfogalmak Globális optimum Lokális optimum Niche Keresés matematikai értelemben = a gráf adott csomópontjából az operátorok segítségével egy másik csomópontba vitele, (kiterjesztése) gyermek csomópontokba Keresési típusok: Próba-hiba keresés Nem informált Keresés a költség figyelmen kívül hagyásával Keresés a költség figyelembe vételével Heurisztikus keresések Listák a vizsgált csomópontok tárolására: open lista a megnyitott csomópontok nyilvántartására closed lista a megvizsgált csomópontok számontartására IRE 4/32/10
Mélységi keresés ( depth first ) A S B LIFO adatkezelés: (Last In First Out) open lista, az állapotok (csomópontok) tárolására C D E F Open lista: G cél Mindig a zsák tetejére pakolunk, és onnan is veszünk el (S)(A,B)(C,D,B)(D,B)(B)(E,F)(G,cél,F)(cél,F) IRE 4/32/11
Mélységi keresés algoritmusa Open lista: (S)(A,B)(C,D,B)(D,B)(B)(E,F)(G,cél,F)(cél,F) Fabejárás: 1. tedd a start csomópontot az open listára 2. hurok: IF open=üres lista then kilépés; {! sikertelen, ha az összes csomópontot megvizsgáltuk} 3. n:=első(open); {az open lista első elemének beolvasása} 4. IF cél(n) then {sikeres} kilépés 5. vedd le (n, open); {n levétele az open listáról} 6. terjeszd ki n-t és helyezd az összes "gyermek" csomópontot az open lista elejére 7. Go TO hurok IRE 4/32/12
Példa mélységi keresésre gráfban S A B X C D open lista: (S)(A S,B S )(X A,C A,B S )(E X,C A,B S ) (C A,B S )(E C,cél C,B S )(cél C,B S ) E cél closed lista S,A S,X A,E X,C A, IRE 4/32/13
Mélységi keresés gráfban 1. tedd a start csomópontot az open listára 2. hurok: IF open=üres THEN kilépés; sikertelen keresés 3. n:=első(open) 4. IF cél(n) THEN sikeres kilépés 5. vedd le (n, open), add hozzá (n, closed) 6. n kiterjesztésével generáld az összes "gyermek" csomópontot. Az open és a closed lista által nem tartalmazott gyermek csomópont az open lista elejére kerül és az n-re irányuló mutatót kap. GO TO hurok IRE 4/32/14
Szélességi (horizontális) keresés ( breadth-first ) A S B FIFO adatkezelés (First In First Out) C D E F G cél Mindig a cső elejére pakolunk, és a végéről veszünk el Open lista: (S)(A,B)(B,C,D)(C,D,E,F)(D,E,F)(E,F)(F,G,cél)(G,cél)(cél) IRE 4/32/15
A szélességi keresés algoritmusa fa bejárásnál Open lista (S)(A,B)(B,C,D)(C,D,E,F)(D,E,F)(E,F)(F,G,cél)(G,cél)(cél) 1. tedd a start csomópontot az open listára 2. hurok: IF open=üres THEN kilépés; sikertelen keresés 3. n:=első(open) 4. IF cél(n) THEN sikeres kilépés 5. vedd le (n, open)terjeszd ki n-t és helyezd el az összes "gyermek" csomópontot az open lista végére 6. Go to hurok IRE 4/32/16
A szélességi keresés algoritmusa gráf bejárásnál 1. tedd a start csomópontot az open listára 2. hurok: IF open=üres THEN kilépés; sikertelen keresés 3. n:=első(open) 4. IF cél(n) THEN sikeres kilépés 5. vedd le (n, open), add hozzá (n, closed) n kiterjesztésével generáld az összes "gyermek" csomópontot. Az open és a closed lista által nem tartalmazott gyermek csomópont az open lista végére kerül és az n-re irányuló mutatót kap. 6. Go to hurok IRE 4/32/17
Példa szélességi keresésre gráfban S open lista: A B (S)(A S,B S )(B S,c1 A,C A )(c1 A,C A,D B ) c1 C D closed lista E c2 A S,B S IRE 4/32/18
Optimális (egyenletes) keresés S 4 1 B A 3 1 2 2 C D E F 4 3 2 1 A kiindulási pontból mindig a minimális költségű csomópontot vizsgáljuk H c1 I c2 Open lista: S(0) B S (1)A S (4) E B (3)A S (4),F B (4) A S (4)F B (4)c1 E (6)H E (7) F B (4)C A (5)c1 E (6)D A (6)H E (7) c2 F (5)C A (5)c1 E (6)D A (6)I F (6)H E (7) IRE 4/32/19
A optimális keresés algoritmusa Fabejárás: 1. tedd a start csomópontot az OPEN listára 2. hurok: IF open=üres THEN kilépés; sikertelen! 3. n:=első(open) 4. IF cél(n) THEN sikeres kilépés 5. vedd le (n, open) 6. ha lehet, n kiterjesztése, minden n-nél a költség kiszámolása. A gyermek csomópontok felírása az open listára majd növekvő "költség" szerint sorrendbe rendezése 7. GO TO hurok Gráf keresésnél: 5. vedd le (n, open), add hozzá (n, closed) 6. az open és closed lista által nem tartalmazott gyermek csomópontok az open listára kerülnek, az n-re irányuló mutatót kapnak, majd növekvő "költség" szerint sorrendbe rendezzük. IRE 4/32/20
Példa optimális megoldás keresésre gráfon 2 S 3 A B 5 3 3 1 c1 C D 2 2 1 1 E c2 Előzetes open lista (rendezett) open lista S(0) A S (2) B S (3) B S (3) c1 A (7) C A (5) c1 A (7) C A (5) C B (4) D B (6) D B (6) c1 A (7) E C (6) c2 C (5) closed lista S(0) - A S (2) B S (3) S(0) B S (3) C A (5) c1 A (7) S(0) A S (2) C B (4) D B (6) c1 A (7) S(0) A S (2) B S (3) c2 C (5) D B (6) E C (6) c1 A (7) S(0) A S (2) B S (3) C B (4) IRE 4/32/21
Gyakorló feladat optimális megoldás keresésre gráfon 25 S 4 A B 2 5 2 9 c1 C D 10 16 23 24 E c2 IRE 4/32/22
Heurisztikus keresés Heurisztika: Heuriskein (görög)= felfedező, Archimedes Heuréka = megtaláltam a feladatoknak a tapasztalatokra és megalapozott ötletekre épülő próbálkozásokkal történő megoldási módszere. Az utazó ügynök probléma egy lehetséges heurisztikus megoldása: Minden lépésnél a helyi legjobb alternatíva kiválasztása. 1. Önkényesen kiválasztani a kezdő várost. 2. Megvizsgálni az összes nem meglátogatott várost és a legközelebbit felkeresni. 3. Ismételni a 2. lépést, amíg az összes várost meg nem látogattuk. A megoldás időszükséglete: n 2 ami << n!/2n IRE 4/32/23
Legjobbat először ( best first ) algoritmus 1. tedd a start csomópontot az open listára 2. hurok: IF open=üres then sikertelen kilépés 3. n:=első(open) 4. IF cél(n) THEN sikeres kilépés 5. vedd le (n, open), add hozzá (n, closed) 6. terjeszd ki n-et és generáld az összes gyermek csomópontot. Csak az open és closed listákban nem szereplőket tedd az open listára és kapcsolj hozzájuk n-re irányuló mutatót. Rendezd az open lista csomópontjait növekvő h(n) szerinti sorrendbe 7. GO TO hurok. Sokat idézett optimunkereső algoritmus: legrövidebb útkereső algoritmusa Edsger Dijkstra IRE 4/32/24
Nehezen kereshető felszínek 1 IRE 4/32/25
Nehezen kereshető felszínek 2 IRE 4/32/26
Hegymászó algoritmus numerikus analízis -> ~ = gradiens módszer "A cél elérését az ahhoz megjósolhatóan legközelebb álló csomópontok (állapotok) kiválasztásával kísérli meg." h(n) = a csúcs és az n közötti távolság. Cél Cél Start Start IRE 4/32/27
Helymászó algoritmus 1. n:=start csomópont 2. hurok: IF cél (n) THEN sikeres kilépés 3. terjeszd ki n-et, számold ki h(ni)-t minden gyermek csomópontra és a legkisebb "költségű" (csúcstól való távolságot) vedd a következő n-nek. 4. IF h(n)<h(következő n) then sikertelen kilépés 5. n:=következő n 6. GO TO hurok Problémás: - lokális maximum esetén (több "csúcs" létezése) - "fennsík" esetén (azonos magasságú hely) IRE 4/32/28
Nehezen kereshető felszínek 3. IRE 4/32/29
Nehezen kereshető felszínek 4. IRE 4/32/30
Nehezen kereshető felszínek 5 IRE 4/32/31
Kérdések - Miért van szükség kereső algoritmusokra a mesterséges intelligencia létrehozásához? - Tudnak-e heurisztikát alkalmazni a számítógépek? - Miért nehéz probléma eldönteni, hogy az egyes feladatok melyik probléma osztályba tartoznak? IRE 4/32/32