• Nem Talált Eredményt

A problémák megfogalmazása

In document Mesterséges Intelligencia (Pldal 91-95)

Ezek után olyan cselekvést választ, amely a legjobb várható hasznossághoz vezet, amit az összes lehetséges végállapot előfordulási valószínűségével súlyozott átlagolásával

1. Problémamegoldó ágensek

1.2. A problémák megfogalmazása

Az előbbi részben a „hogyan jutunk el Bukarestbe” probléma olyan megfogalmazását javasoltuk, amely a kezdeti állapotból, az állapotátmenet-függvényből, a célállapottesztből és az útköltségből áll. Ez a megfogalmazás értelmesnek tűnik, a valós világ számos aspektusát mégis figyelmen kívül hagyja. Hasonlítsuk csak össze az általunk választott egyszerű állapotleírást, Benn(Arad), egy tényleges országjáró kirándulással, ahol a világ állapota rengeteg mindent tartalmazhat: kivel utazunk, mit közvetít a rádió, milyen tájat látunk az ablakon át, van-e közelben rendőr, milyen messze van a következő pihenőhely, milyen az út állapota, milyen az időjárás és sok-sok más.

Ezeket a részleteket kihagytuk az állapotleírásokból, mert nem lényegesek a Bukarestbe vezető út megkeresésében. Egy reprezentációból a részletek eltávolítását absztrakciónak (abstraction) nevezzük.

Az állapotleírás absztrahálása mellett magukat a cselekvéseket is absztrahálni kell. Egy vezetési cselekvésnek számos hatása van. Amellett, hogy megváltoztatja a gépkocsi és utasai helyét, időbe telik, üzemanyagot fogyaszt, szennyezi a levegőt és megváltoztatja az ágenst (azt mondják, hogy az utazás kiszélesíti a látókört). A mi megfogalmazásunkban csak a helyváltoztatást vesszük figyelembe. Van számos olyan cselekvés, amit teljesen elhagyunk: például a rádió bekapcsolását, az ablakon való kinézést, a lassítást, mert rendőr van a közelben stb. És persze a „fordítsd a kormányt balra 3 fokkal” szintű cselekvésekkel sem foglalkozunk.

Lehetünk-e pontosabbak a megfelelő absztrakciós szint meghatározásában? A megválasztott absztrakt állapotokra és cselekvésekre úgy gondolunk, hogy azok a részletes valós állapotok és cselekvések egész halmazaihoz tartoznak. Most tekintsük az absztrakt probléma egy megoldását: például az Aradról Nagyszebenbe, majd Rimnicu Vilceába, Pites¸tibe és Bukarestbe vezető utat. Ez az absztrakt megoldás rengeteg részletesebb útnak felel meg. Például Nagyszeben és Rimnicu Vilcea között vezethettünk bekapcsolt rádióval, majd az utazás további részére kikapcsolhattuk a rádiót. Az absztrakció érvényes, ha az absztrakt megoldást megoldássá fejthetjük ki egy részletesebb világban is. Elégséges feltétel az, hogy minden olyan részletes állapothoz, mint az „Aradon van”, létezik egy részletes út valamelyik olyan állapothoz, mint a „Nagyszebenben van” stb. Az absztrakció hasznos, ha a megoldásbeli cselekvések végrehajtása az eredeti problémánál egyszerűbb. Ebben az esetben ezek eléggé egyszerűek ahhoz, hogy egy átlagos gépkocsivezető ágens végre tudja azokat hajtani minden további keresés vagy tervkészítés nélkül. Így egy jó absztrakció megválasztása magában foglalja az érvényesség megőrzése mellett a lehető legtöbb részlet törlését, és annak biztosítását, hogy az absztrakt cselekvéseket könnyű legyen véghezvinni. Ha nem lenne meg a hasznos absztrakciók megalkotásának képessége, akkor az intelligens ágensek a valós világban teljesen hasznavehetetlenek lennének.

3.2. ábra - Románia egy részének sematikus országúti térképe

2. Példaproblémák

A problémamegoldó megközelítést rengeteg feladatkörben alkalmazták. Néhányat az alábbiakban sorolunk fel, megkülönböztetve az úgynevezett játék- és a valósvilág-beli problémákat. A játékproblémák (toy problems) rendeltetése, hogy segítségükkel a különféle problémamegoldó módszereket illusztrálni tudjuk vagy ki tudjuk próbálni. Az ilyen problémák egzakt tömör leírása megadható. Ez azt jelenti, hogy különböző kutatók így könnyűszerrel használhatják az algoritmusok hatékonysági összehasonlításához A valósvilág-beli problémák (real-world problems) azok, amelyek megoldása tényleg érdekes az emberek számára. Ezeknek nincs egyetlen általánosan elfogadott megfogalmazásuk, mi azonban megpróbáltuk érzékeltetni az általános megfogalmazásuk jellegét.

3.3. ábra - A porszívóvilág állapottere. Az élek cselekvéseket jelentenek: B = Balra, J = Jobbra, S = Szív.

2.1. Játékproblémák

Az első vizsgált példa a 2. fejezetben bevezetett porszívóvilág (vacuum world) (lásd 2.2. ábra). Ezt problémaként az alábbi módon definiálhatjuk:

Állapotok: az ágens két hely egyikében lehet. Mindegyik lehet piszkos, de lehet tiszta is. Így 2 × 22 = 8 lehetséges állapotról beszélhetünk.

Kezdeti állapot: akármelyik állapot lehet kezdeti állapot.

Állapotátmenet-függvény: a három (Balra, Jobbra, Szív) cselekvés alkalmazásából adódó legális állapotokat generálja. A teljes állapottér a 3.3. ábrán látható.

Célteszt: ellenőrzi, hogy minden négyzet tiszta-e.

Útköltség: minden lépés költsége 1, így az út költsége megegyezik az út lépéseinek a számával.

A valós világgal összevetve e probléma jellemzői a diszkrét lokációk, a diszkrét kosz, a megbízható takarítás, valamint az, hogy takarítás után piszok soha nem keletkezik újra (a 3.6. alfejezetben ezeket a feltételezéseket feladjuk). Fontos megjegyezni, hogy az állapotot az ágens és a kosz helyzete együttesen határozza meg. Egy nagyobb, n helyű környezetben n 2n állapot van.

A 3.4. ábrán bemutatott 8-as kirakójáték (8-puzzle) egy 3 × 3-as táblából, 8 számozott kockából és egy üres helyből áll. Az üres hely melletti kockát be lehet csúsztatni az üres helyre. A cél egy meghatározott állás, mint például az ábra jobb oldalán látható állás elérése. A probléma szokásos megfogalmazása a következő:

Állapotok: az állapotleírás meghatározza mind a nyolc kocka és az üres hely pozícióját a kilenc lehetséges pozíció egyikében.

Kezdeti állapot: akármelyik állás lehet kezdeti állapot. Figyeljük meg, hogy minden egyes célt pontosan az állapotok feléből lehet elérni (3.4. feladat).

Állapotátmenet-függvény: a négy cselekvés (üres hely megy Balra, Jobbra, Fel, Le) alkalmazásából adódó legális állapotokat generálja.

Célteszt: ellenőrzi, hogy az állapot megegyezik-e a 3.4. ábrán mutatott célállapottal (más célkonfiguráció is lehetséges).

Útköltség: minden lépés költsége 1, így az út költsége megegyezik az út lépéseinek a számával.

3.4. ábra - A 8-as kirakójáték egy tipikus feladványa

Milyen absztrakciókhoz folyamodtunk itt? A cselekvéseket a kezdeti és végállapotuk erejéig absztraháltuk, elmozdítás közben egy kocka közbülső helyzeteit figyelmen kívül hagytuk. Az olyan cselekvésektől is

elvonatkoztattunk, mint a tábla megrázása, ha a kockák megakadtak, vagy a kockák késsel való kiszedése és visszahelyezése. Amit kaptunk, az a játék szabálykészlete, a manipulációk fizikai részleteitől eltekintve.

A kirakójáték a csúsztatós kirakójátékok (sliding-block puzzles) családjába tartozik, amelyeket gyakran új kereső algoritmusok tesztelésére alkalmaznak az MI-ben. Ez az általános osztály NP-teljes, így nem várható, hogy lényegesen jobb módszert lehet találni az itt és a következő bekezdésben leírt keresési algoritmusoknál. A 8-as kirakójátéknak 9!/2 = 181 440 elérhető állapota van, és így e játék könnyen megoldható. A 15-ös kirakójátéknak (a 4 × 4-es táblán) kb. 10 billió állapota van, és a legjobb algoritmusok a véletlenül generált eseteket optimálisan néhány milliszekundum alatt oldják meg. A 24-es játéknak (az 5 × 5-ös táblán) kb. 1025 állapota van, és a véletlenszerűen kiválasztott esetek optimális megoldása még mindig kemény dió a jelenlegi gépek és algoritmusok számára.

A 8-királynő probléma (8-queens problem) célja, hogy 8 királynőt úgy helyezzünk el egy sakktáblán, hogy egyáltalán ne támadják egymást. (Egy királynő egy vele azonos sorban, oszlopban vagy átlóban lévő bábut támad.) A 3.5. ábra egy sikertelen megoldási kísérletet mutat: a jobb szélső oszlopban lévő királynőt támadja a bal felső sarokban lévő királynő.

3.5. ábra - Egy majdnem jó megoldás a 8-királynő problémára. (A megoldás

megkeresését az olvasóra bízzuk.)

Bár hatékony célalgoritmusok léteznek ezen probléma és a teljes n-királynő probléma megoldására, a királynőfeladat mindamellett érdekes tesztproblémája marad a keresési algoritmusoknak. Két fő megfogalmazása létezik. Az inkrementális megfogalmazásban (incremental formulation) az operátorok az állapotleírást bővítik, az üres állapottól kezdve. A 8-királynő probléma esetén ez azt jelenti, hogy a királynőket egyenként helyezzük el a sakktáblán. A teljes állapot leírásban (complete-state formulation) először felhelyezzük mind a 8 királynőt, majd mozgatjuk őket. Az útköltség mindkét esetben érdektelen számunkra, mert csak a végső állapot számít. A probléma első inkrementális megfogalmazása lehet a következő:

Állapotok: egy állapot a 0 … 8 királynő, tetszőleges elrendezése a táblán.

Kezdeti állapot: a táblán nincs egy királynő sem.

Állapotátmenet-függvény: helyezz egy új királynőt egy üres mezőre.

Célteszt: 8 királynő a táblán és egyik sincs támadás alatt.

Ebben a megfogalmazásban 64 × 63 × … 57 ≈ 1,8 × 1014 lehetséges vizsgálandó sorozatunk van. Sokkal ésszerűbb választás lenne, ha figyelembe vennénk azt a tényt, hogy egy már eleve támadt mezőre nincs értelme letenni egy királynőt:

Állapotok: n (0 ≤ n ≤ 8) királynő olyan elrendezése a táblán, hogy az n bal oldali oszlopban oszloponként egy található úgy, hogy nem támadják egymást.

Állapotátmenet-függvény: helyezz egy királynőt a bal szélső, még üres oszlopba úgy, hogy azt ne támadja egyetlen királynő sem.

Ez a megfogalmazás a 8-királynő probléma állapotterét 1,8 × 1014-ről 2057 méretű térré csökkenti, minekutána megoldást könnyű megtalálni. Másrészt 100 királynő a korábbi megfogalmazás 10400 állapothoz vezet, míg a javítottnál csak kb. 1052 állapotunk lesz (3.5. feladat). Ez óriási redukció, a javított eset azonban még mindig túl nagy az ebben a fejezetben ismertetett algoritmusok számára. A teljes állapot leírásról a 4. fejezetben olvashatunk, az 5. fejezet viszont egy olyan egyszerű algoritmust közöl, amellyel a millió királynőt számláló problémát is könnyen meg lehet oldani.

In document Mesterséges Intelligencia (Pldal 91-95)