Mesterséges intelligencia PTI BSc levelező 2009-10. ősz Előadás, gyakorlat: Vályi Sándor mailto:
[email protected] Az email tárgy(subject): mezője a „mestint” szóval kezdődjék
Az órák időpontja • 1. előadás: szept. 5, Szo, 8:00-11:23, [hely: D 6ea] • 1. gyakorlat: szept. 18, P, 8:00-11:30 (A) ill. 13:00-16:30 (B) [hely: E016] • 2. előadás: nov. 20, P, 8:00-11:23, D 7ea • 2. gyakorlat: dec. 11, P, 8:00-11:30 (A) ill. 13:00-16:30 (B) [hely: E014]
TANTÁRGYLEÍRÁS • • • • •
Tantárgy neve Mesterséges intelligencia Tantárgy kódja PMB1212 Meghirdetés féléve 5 Kreditpont 5 Heti kontakt óraszám (elm.+gyak.) 2+2 – nappalin, 7+8 levelezőn • Félévi követelmény kollokvium • Előfeltétel (tantárgyi kód) PMB1205 (prog 2) • Tantárgyfelelős neve és beosztása Dr. Várterész Magda, főiskolai tanár •
A tantárgy elsajátításának célja • A mesterséges intelligencia alapvető reprezentációs technikáinak és megoldáskereső eljárásainak a megismerése, programozása
Tantárgyi program • • • • • •
•
A mesterséges intelligencia kutatási területei, módszerei, eredményei. Problémák reprezentálása állapottéren, példák. A gráfreprezentáció. Megoldást kereső rendszerek felépítése, csoportosítása. Nem módosítható stratégiák. A backtrack algoritmus. Gráfkereső eljárások: szélességi, mélységi, optimális keresések. Heurisztikus gráfkeresők: a best-first és az A algoritmusok. Az A algoritmus teljessége. Probléma-redukciós feladatmegoldás, reprezentálása ÉS/VAGY gráffal. Megoldás az ÉS/VAGY gráfban. Keresési stratégiák ÉS/VAGY gráfban: szélességi, mélységi, AO algoritmus. A terminálás figyelése címkézéssel. Kétszemélyes játékok, ábrázolásuk játékfával. A nyerő stratégia létezése. A minimax eljárás, az alfa-béta vágás.
Évközi követelmények •
• •
•
•
Évközben a hallgatók 3 fős csoportokban (esetleg 2) két MI feladatot számítógépes program készítésével megoldanak és dokumentálva benyújtanak. A két feladat kiválasztása az 1. gyakorlatig email-ben vagy az 1. gyakorlaton lehetséges, a feladatok megoldása a 2. gyakorlat időpontjáig lehetséges. A feladatok típusa: 1. problémareprezentációs/megoldáskeresős 2 kétszemélyes játékban lépésajánló A bemutatók feladatokban való mély ismereteikről személyes beszámoló során számolnak be, nem együtt, hanem külön-külön. A két feladatra összesen 50 pontot lehet kapni, aláírás 30 ponttól. Ez alapján kapnak aláírást. Az elért pontokat beszámítom az A és B vizsga eredményébe, csak ebben a szemeszterben. Vizsgázni a feladatmegoldások elfogadása után lehet (az aláírás birtokában), írásban. Itt még 50 pontot lehet szerezni. A következő összefüggést használom a vizsgajegyek megállapításához, ahol az összesített pontszám P és a jegy J: P>=50 → J>=2 és P>=70 → J>=3 és P>=80 → J>=4 és P>=90 → J=5 és P<60 → J=1.
A vizsga anyaga • Egy adott probléma szövegesen megadott változatából állapottér-reprezentáció leírását készíteni, s megadott algoritmust objektumorientált nyelven implementálni, gép mellett. • Plusz néhány tesztkérdés.
Választható problémareprezentációs-megoldáskeresős feladatok
• http://www.inf.unideb.hu/~jeszy/download/mes
Választható kétszemélyesjátékfeladatok • http://www.inf.unideb.hu/~jeszy/download/ mestint/jatekok.pdf
Időpontok a vizsgaidőszakban • 3 lesz a vizsgaidőszakban
Vizsga tananyaga • Előadás vázlata, internetről letölthető – Elég a Várterész Magda tanárnő-féle rész
• Az előadáson elhangzott kiegészítések • Russel-Norvig: Mesterséges intelligencia modern megközelítésben (adatai az irodalomnál), a 244. oldalig (I-II. rész)
Ajánlott(***) és kötelező irodalom • ***Futó Iván (szerk.): Mesterséges intelligencia, Aula Kiadó,Budapest, 1999. • Stuart J. Russell, Peter Norvig : Mesterséges intelligencia modern megközelítésben, Panem- Prentice Hall, Budapest, 2000.
Forrás • Fő forrás: Nagyon sok helyen direkt beképeztem a Várterész tanárnő nappalisoknak tartott előadásának anyagát. • Közötte saját anyag, Jeszenszky Péter ismeretreprezentációs anyagai és a Russel-Norvig könyvhöz ajánlott prezentációs anyag.
1. Állapottér alapú ismeretreprezentáció
Intelligens ágensek problémája A cél: a világ állapotainak egy halmaza, azon állapotoké, amiben a cél igaz. (A cél tehát a világ objektumainak egy leíró tulajdonsága, állítás.) Problémamegoldás: a világ állapotainak olyan sorozatát megalkotni, ami – Elvezet a célhoz – Az egyes lépéseket már meg tudom tenni
Problémamegoldás = Útkeresés • (Ezen gondolatmenet szerint) • Az ilyenféle, jól leírható állapotokkal modellezett problémák az ún. jóldefiniált problémák – számítási problémával megfogalmazhatók (nem biztos, hogy a megoldó algoritmus könnyű is, vagy egyáltalán létezik!)
Példa: Romániai útkeresés
Vakáción Erdélyben és Romániában; jelenleg Aradon. Holnap indul a repülőnk Bukarestből
Fogalmazzuk meg a célt:
Fogalmazzuk meg az állapotokat:
Bukaresten teremni holnap 11.00-re állapotok: a különböző városok akciók: egyik városból a másikba átmenni kocsival
A megoldás formája:
Városok egy sorozata, pl., Arad, Nagyszeben, Fogaras, Bukarest (megfeleltethető akciók sorozatának)
Példa gráfra: Erdély és Ó-Románia néhány városa és köztük utak
Állapottérrel (state space) megfogalmazott probléma 1. 2.
3.
Egy problémát 4 dolog definiál: kezdeti állapot, pl. "Aradon vagyok" Akciók(operátorok) S(x) = x-ben alkalmazható akció-állapot párok célteszt, lehet
1.
explicit, pl., x = "Bukarestben" implicit, pl., sakkjáték-programban „Matt” – egy feltétel
útköltség, ami az egyes lépések költségeiből adódik össze (additív)
pl., a távolságok összege
Egy megoldás: akcióknak egy olyan sorozata, amely a céltesztet teljesítő ún. célállapotba visz
AZ ÁLLAPOTTÉR MEGVÁLASZTÁSA
A valódi világ minden emberileg leírhatónál bonyolultabb (számomra biztosan)
az állapottér csak egy absztrakciója, ami éppen releváns a problémánk szempontjából
(Absztrakt) állapot = sok valódi állapot összefogva (Absztrakt) akció = valós akciók bonyolult kombinációja
pl., "Arad Nagyzerénd" maga is egy lehetséges utak halmazát reprezentálja, navigálok Aradon, megállok-e útközben az étteremben,…
Az absztrakt akciók „könnyebbek” legyenek, mint a probléma, amit modellezünk A megfelelő absztrakciós szintű akciókat és állapotokat vegyük fel: pl., az "Arad Nagyzerénd„ akcióhoz ne modellezzük a kormánymozdulatokat, megállásokat, fékezéseket, jelzőtáblákat, ezek irreleváns részletek az útkereső ágensünk esetén, bár, ha taxisofőr ágenst készítenénk, nyilván már nem ez lenne a helyzet.
A porszívóvilág állapottere
Állapotok? Akciók? célteszt? Útköltség?
A porszívóvilág állapottere
állapotok? <melyik szobában van, ott van-e kosz> actions? Balra, Jobbra, Szívás célteszt? Nincs kosz sehol élköltség? 1 per akció
Példa: 8-as csúszkajáték
Állapotok? Akciók? célteszt? Útköltség?
Példa: 8-as csúszkajáték (8-puzzle)
Állapotok? 0..8 számok sorozata (0: luk) Akciók? A luk le/fel/balra/jobbra célteszt? Explicit: [0,1,2,3,4,5,6,7,8] Útköltség? 1/tolás
Példa: dobozvilág robotkarral
Példa: dobozvilág robotkarral
• állapot?: a robot „ízületeinek” állása, a dobozok pozíciója (néhány valós szám együttese) akciók?: a robot ízületeinek folytonos mozgása célteszt?: a végső összeszerelése a céltárgynak útköltség?: idő, ami alatt összerakja, fogyasztott árammennyiség, adott gyártási útra várható selejtátlag
Ismeretreprezentációs feladatok • A 8-as játék állapottere két diszjunkt halmazból áll (nem elérhetők úttal egymásból). Keressük meg, mi a leírása ennek a két halmaznak és adjunk programozható eljárást két állapotról eldöntendő, egy csoportba tartoznak-e. • 8 királynőt kell elhelyezni a 8x8-as sakktáblán. Állapotreprezentáció, Akciók, célteszt, élköltség? Az akció egy királylány (királynő-jelölt:-) felpakolása legyen.
Feladat • Adjon állapot-halmazt, kiinduló állapotot, célfeltételt, élköltség-függvényt a következő problémák-hoz: egy N részre vonatkozó területfelosztás azzal van definiálva, melyik helyrajzi számú telek szomszédos a másikkal. 4 növényt kell telepíteni úgy, hogy szomszédos területekre nem lehet azonosat. Keressünk helyes telepítést. (Térképszínezési probléma)
Feladat: állapotok, cél, kiindulás, operátorok? • 1 m-es majom egy szobában van, ahol van még két darab 1 m-es doboz (egymásra pakolhatók, rá lehet mászni). 2,5 m magasan van egy banán. A cél a banán elérése lenne. • Van 3 permetezőszer-tároló edénye van: egy 12 l-es, egy 8 l-es és egy 3 l-es. Meg egy nagy permetlé tartálya, ahonnan bármelyiket éppen telemerítheti. Pontosan 1 l-t kell kimernie.
A 8-puzzle-játék C nyelvi reprezentációja • typedef Allapot byte[3][3]; int kenyszerfeltetel(Allapot x) {int nincsazonos=1; for(int i1=0;i1<=2;i1++) for(int j1=i1+1;j1<=2;j1++) for(int i2=0;i2<=2;i2++) for(int j2=i2+1;j2<=2;j2++) {if (x[i1][j1]==x[i2][j2] && ~(i1==i2 && j1==j2)) nincsazonos=0;} return nincsazonos; } const Allapot kezdo = {{1,2,0},{4,6,3},{7,5,8}}; int celallapot(Allapot x) {. . .} int operatorok_szama; //a 4 operátort számokkal ábrázoljuk int alkalmazhato(Allapot x, int op) {. . .} Allapot alkalmaz(Allapot x, int op) {. . .}
• A következő anyag forrása: Jeszenszky Péter (http://www.inf.unideb.hu/~jeszy) • Minta a beadandó házi feladat dokumentációs részéhez!
• Például a 3x3-as tilitoli probléma ábrázolása esetén, ha nem kötjük ki azt a kényszerfeltételt, hogy a 9 pozíción másmás szám áll, akkor nem 9!, hanem 9^9 állapot keletkezik.
A 8-puzzle probléma állapottér-gráfjának fa-alakja
Forrás: Artificial Intelligence: a new synthesis
szerző: Nils J. Nilsson
Mi a fagráf? Összefüggő, körmentes gráf. Az állapottér-gráf átalakítása fagráffá: pl. az odavezető utak lesznek az új csúcspontok.
2. Megoldást kereső módszerek
Példa előre és hátrafelé haladó megoldáskeresésre • Logikai tételbizonyítás – természetes levezetéssel: a célból indulunk ki – mit kell még megcsinálnunk: visszafelé haladó vagy célvezérelt megoldáskeresés • Generatív nyelvtanban CYK és Early-algoritmus: felsorolni, miket tudunk elvezetni – az meglévő adatainkból kiindulva tudjuk-e levezetni a kívánt célt: előrefelé haladó vagy adatvezérelt megoldáskeresés
• Heurisztikus keresés: informált keresés • Példák: – labirintusban bolyongani – Labirintust szisztematikusan bejárni, térképet készíteni – Minotauruszt szag alapján keresni – Meglévő térkép alapján utat tervezni
• Más példák tipikus informált keresésre: – Robotok cselekvés-tervezése – Sakkjáték-program, HA: tanult sémákat is használ a keresés
Tárigény: konstans, az állapottérgráf méretében Időigény: nem értelmezhető, mert nem teljes
Heurisztikák a 8-puzzle esetén • Egy állapot jóságának lehetséges mértékei: – hány négyzet van a helyén? – hány tolás kellene, ha minden négyzet szabadon egymásra tolható lenne (Manhattan-heurisztika)?
• Ezek a heurisztikák „nem pontosak”, nincs mindig olyan kirakás, ahol a jóság monoton módon növekszik
Hill-climbing (hegymászó) keresés • „Felmászni a Mont Blancra ködben, amnéziával"
Hegymászó keresés • Probléma: csak lokális maximumot garantál, csapdába eshet egy ilyen helyen •
1-dimenziós függvény maximumhelyének keresésére egyszerűsített példa
Hegymászó keresés: 8-királynő probléma
• •
h = azon királynő-párok száma, amelyek ütik egymást (még ha éppen most takarásban is állnak) h = 17 itt
Hegymászó keresés:
• Egy lokális minimum h = 1 •
értékkel
Egy szemléltető animáció • http://www.ndsu.nodak.edu/instruct/juell/vp /cs724s00/hill_climbing/
Egyéb neminformált keresési módszerek
Szimulált hűtéses keresés • Ötlet: a lokális maximumokból való kiszökés céljából megengedünk véletlenszerű „rossz” irányba tett véletlenszerűen nagy lépéseket; de csökkentve ezen lépések gyakoriságát.
• http://216.239.116.64/reference/Simulated _annealing
A szimulált hűtéses keresés tulajdonsága • Bizonyítani lehet: Ha T elég lassan növekszik, akkor a sz. h. k. 1 valószínűséggel megtalálja az optimumot. Itt az aláhúzott rész pontosabb specifikációt is kaphat. Sikeres, nagy projektek: • VLSI tervezés • repülőjáratok scheduling-ja, időzítése
Tárigény: O(|V|), ha V az állapottérgráf csúcsainak halmaza.
Itt a differencia!
Az ismétlődő állapotok felismerése nélkül
Egy lineáris időben megoldható feladatot exponenciálissá tehet.
Erősen nemdeterminisztikus!
Lehet, hogy célállapot bekerül, de mégsem választjuk sose!
Fában kereső algoritmusok
Alapötlet:
Az állapottér bejárása, mindig a már felderített állapotok rákövetkezőit generálva Peremnek nevezzük a már felfedezett, de ki nem próbált csúcsokat
Keresés fában - példa
Csúcspont mélysége: amilyen messze van a fa gyökerétől Sekélyebb csúcspont
Keresés fában - példa
A fehér belsejű karika jelzi a perembeli csúcsokat. A szürke belsejű a már kipróbált csúcsokat jelzi.
Keresés fában - példa
Implementáció: állapotok vs. csúcsok
Egy állapot egy fizikai konfiguráció (reprezentációja) Egy csúcs pedig egy olyan összetett adat, ami a keresési fának képezi részét és tartalmaz: állapotot, szülőcsúcsot, akciót, útköltséget g(x), mélységet.
Az Expand függvény új csúcsokat képez egy csúcsból
Szélességi(Breadth-first) keresés
A gyökérhez legközelebbi (legsekélyebb) csúcsot terjeszti ki Implementácó: A perem egy FIFO-sor (first-in-first-out), azaz amelyik elsőnek jött a sorba, elsőnek vesszük is ki
A perem: [A]
Szélességi keresés A perem: [B,C]
Breadth-first search (szélességi keresés) munkamódszere
Mindig a(z egyik) legsekélyebb csúcspontot terjeszti ki. Implementáció:
A perem egy FIFO-sor, azaz: az újonnan képbe kerülő csúcsok a sor végére kerülnek.
A perem: [D,E,C]
Szélességi keresés • A perem: [D,E,F,G]
A szélességi keresés tulajdonságai
Teljes? igen (ha b véges) Idő? 1+b+b2+b3+… +bd + b(bd-1) = O(bd+1 ) Tár? O(bd+1 ) (minden csúcs a memóriában, esetleg törölhetők, amelyek összes utódja már a peremben van) Optimális? Igen (ha költség=1)
A tárigény alig kielégíthető
Jelölje b azt, hogy egy csúcsnak hány fia lehet maximum. d a megoldás mélységét jelöli.
Mélységi keresés
Mindig választunk egyet a legmélyebb, még nem kiterjesztett csúcsok közül, s azt terjesztjük ki. Implementáció: perem = LIFO-sor, azaz verem, az újonnan érkezetteket a sor elejére tesszük
Mélységi keresés(Depth-first search) • A perem: [B,C], továbbfeldologzásra kijelölt: B
Mélységi keresés • A perem: [D,E,C], továbbfeldolgozásra kijelölt: D
Mélységi keresés • A perem: [H,I,E,C], továbbfeldolgozásra kijelölt: H
Mélységi keresés
• A perem: [I,E,C], továbbfeldolgozásra kijelölt: I
Depth-first search • A perem: [E,C], továbbfeldolgozásra kijelölt: E
Mélységi keresés
• A perem: [J,K,C], továbbfeldolgozásra kijelölt: J
Mélységi keresés
• A perem: [K,C], továbbfeldolgozásra kijelölt: K
Mélységi keresés
A perem: [C], továbbfeldolgozásra kijelölt: C
Mélységi keresés
• A perem: [F,G], továbbfeldolgozásra kijelölt: F
Mélységi keresés
A perem: [L,M,G], továbbfeldolgozásra kijelölt: L
Mélységi keresés
• A perem: [M,G], továbbfeldolgozásra kijelölt: M
Mélységi keresés • A perem: [M,G], továbbfeldolgozásra kijelölt: M
A mélységi keresés tulajdonságai
Teljes? Nem. Hibádzik végtelen állapottéren,sőt, végesben is, ha vannak hurkok az állapottérben;
Módosíthatjuk úgy, hogy minden tárolt csúcshoz tároljuk azt is, hogyan jutottunk oda.
ekkor teljes, legalábbis véges állapottéren.
Idő? O(bm): nagy, ha m sokkal nagyobb, mint d
de ha az állapottérben sűrűn vannak a megoldások, sokkal gyorsabb lehet, mint a szélességi
Tár? O(bm), i.e., lineáris tár! Optimális? Nem
Folyton mélyülő keresés Először 1 mélységű szélességi keresés, aztán 2 mélységű, … Ez megint teljes, egyenlő útköltség mellett.
Folyton mélyülő szélességi keresés
Folyton mélyülő szélességi keresés
Folyton mélyülő szélességi keresés
Folyton mélyülő szélességi keresés
Folyton mélyülő szélességi keresés - tulajdonságok
Teljes? Igen Idő? (d+1)b0 + d b1 + (d-1)b2 + … + bd = O(bd) Memóriaigény? O(bd) Optimális? Igen, ha az élköltségek egységesen =1
Best-first keresés •
Ötlet: minden n csúcsponthoz hozzárendelünk egy f(n) kiértékelő függvényértéket. – Az előnyösség becslése, általában a kisebb érték a jobb ( a céltól való távolságot becsli <
>) – Ha mérné, akkor a keresés nem is volna keresés! – Egyelőre nem foglalkozunk vele, honnan beszerezhető ez az f függvény A legígéretesebb még nem kiterjesztett csúcsot terjesztjük ki
•
Implementáció: Az aktuális peremen lévő csúcsokat az előnyösség szerint csökkenő sorrendben használjuk
•
Speciális esetei: – mohó best-first keresés – A* keresés
Erdély és Románia térképvázlata
Best-first keresés példa
best-first keresés példa
best-first keresés példa
best-first keresés példa
A best-first keresés tulajdonságai • Teljes-e? Nem – végtelen ciklusba eshet, pl., Iasi Neamt Iasi Neamt ( Russel-Norvig szerint. Szerintem nem!) • Idő? Rossz heurisztikával O(bm), de egy jó heurisztikával drámai javulás • Memória? O(bm) – minden csúcs a memiában • Optimális? Nem (Arad – NSzeben – Rimniu – Pitesti – Bukarest olcsóbb) • • •
A keresés *
• Ötlet: kerüljük azokat az utakat, amelyek már eddig is drágák. • Evaluation function f(n) = g(n) + h(n) • g(n) = n eléréséhez elhasznált költség • h(n) = n-ből a célba jutás becsült költsége • f(n) = az n-en keresztüli út becsült költsége • Vagyis ez is egyfajta best-first keresés. • • •
A keresés példa *
A keresés példa *
A keresés példa *
A keresés példa *
A keresés példa *
A keresés példa *
Feladat h(S-G)=10 h(A-G)=7 h(D-G)=1 h(F-G)=1 h(B-G)=10 h(E-G)=8 h(C-G)=20 A heurisztika.
Hogy jutunk el S-ből G-be az A* algoritmussal?
A keresés *
• Ötlet: kerüljük azokat az utakat, amelyek már eddig is drágák. • Evaluation function f(n) = g(n) + h(n) • g(n) = n eléréséhez elhasznált költség • h(n) = n-ből a célba jutás becsült költsége • f(n) = az n-en keresztüli út becsült költsége • Vagyis ez is egyfajta best-first keresés. • • •
A keresés példa *
A keresés példa *
A keresés példa *
A keresés példa *
A keresés példa *
A keresés példa *
Feladat h(S-G)=10 h(A-G)=7 h(D-G)=1 h(F-G)=1 h(B-G)=10 h(E-G)=8 h(C-G)=20 A heurisztika.
Hogy jutunk el S-ből G-be az A* algoritmussal?
Elfogadható heurisztikák • Egy h(n) heurisztika elfogadható, ha minden n csúcsra h(n) ≤ h*(n) teljesül, ahol h*(n) az n csúcs igazi (még nem tudott) költsége. • Az elfogadható heurisztika sosem becsli túl a cél elérésének költségét, azaz optimista. • Például a légvonal szerinti távolság ilyen a térképen. • Állítás: Ha h(n) elfogadható, akkor az A* algoritmus h-t használó példánya optimális.
Konzisztens heurisztikák • Egy heurisztika konzisztens: ha minden n csúcsra, minden a akcióra és annak bármely n' lehetséges eredménycsúcsára: h(n) ≤ c(n,a,n') + h(n'), ahol c az n-ből n’-be a akcióval való eljutás költsége. • Ebben az esetben teljesül: f(n') = g(n') + h(n') = g(n) + c(n,a,n') + h(n') ≥ g(n) + h(n) = f(n) • Állítás: Ha h(n) konzisztens, akkor az A* keresés g-t és h-t használva optimális.
•
A
* optimalitása
•
A* a csúcsokat a növekvő f érték szerint rendezve terjeszti ki.
•
Fokozatosan ad egyre növekvő x értékekkel "f(n)<=x" környezeteit a kiindulásnak
A* tulajdonságok • Teljes? Igen (hacsak nincs végtelen sok csúcs f ≤ f(G)-e teljesítően ) • Idő? Exponenciális • Tár? Minden kiterjesztett csúcs tárban • Optimális? Igen • • Egy A*-demo URL-je: http://www.vision.ee.ethz.ch/~cvcourse/astar/AStar.html • JAVA-t igényel.
Elérhető heurisztikák -- példák A 8-as csúszka játékhoz: • h1(n) = a rosszul elhelyezett lapocskák száma • h2(n) = teljes Manhattan-távolság (az egyes lapocskák üres táblán való helyrecsúsztatásának lépésszámai összegezve)
• h1(Start) = ? • h2(Start) = ?
• • •
Elérhető heurisztikák -- példák A 8-as csúszka játékhoz: • h1(n) = a rosszul elhelyezett lapocskák száma • h2(n) = teljes Manhattan-távolság (az egyes lapocskák üres táblán való helyrecsúsztatásának lépésszámai összegezve)
• h1(Start) = 8 • h2(Start) = 3+1+2+2+2+3+3+2 = 18 •
• • •
Javasoljon néhány heurisztikát (és előtte adatábrázolási módot, célt): • Egy kikísérletezendő AIDS-gyógyító gyógyszermolekula számára • Egy kikísérletezendő tápanyagösszeállítás számára 2-3 hónapos borjak számára • Egy összeállítandó osztály-ültetési rendre a gimis osztályban • Utazó ügynök problémára • Párizsban térkép nélkül megtalálni gyalog az Eiffel tornyot, kérdezni tudunk franciául, de csak az igen/nem választ értjük meg; az emberek 60%-a tudja a választ, csak egy összetett kérdést tehetünk fel
Dominancia • Ha h2(n) ≥ h1(n) minden n-re, de mindkettő elfogadható heurisztika, • akkor h2 dominálja h1--et • h2-val jobb keresni • Tipikus keresési költség (a csúcsok számában mérve, d a mélység): • d=12 A*(h1) A*(h2) • d=24 A*(h1) A*(h2)
• •
IDS = 3,644,035 nodes = 227 nodes = 73 nodes IDS = too many nodes = 39,135 nodes = 1,641 nodes
Relaxált problémák •
Egy probléma, amiben az eredetihez képest kevesebb megszorítást tehetünk az adott állapotban végrehajtható akciókra: az eredetihez képest relaxált probléma
•
A relaxált probléma megoldásához szükséges lépésszámmal adunk egy elfogadható heurisztikát az eredeti probléma A*-kereséséhez.
•
Pl. a 8-as csúszkajátékban azt a kitételt elengedjük, hogy csak szomszédos lukba lehet elmozgatni lapocskát, hanem akárhová, akkor a h1(n) adja a legrövidebb megoldást.
•
Ha minden szomszéd mezőbe tudnánk menni, akkor h2(n) heurisztika keletkezik ebből a relaxált problémából az eredeti számára.
•
Keresési algoritmusok interaktív gyakorlása http://aispace.org (JAVA RE-et igényel a böngészőben)
KÖSZÖNÖM A FIGYELMÜKET!