Kétszemélyes, teljes információjú, véges és determinisztikus, zéró összegű, játékok V. Játékok Két játékos lép felváltva adott szabályok szerint, amíg a játszma véget nem ér. Mindkét játékos ismeri a maga és az ellenfele összes múltbeli és jövőbeli lépéseit és lépési lehetőségeit, és azok következményeit. Minden lépés véges számú lehetőség közül választható, és minden játszma véges lépésben véget ér. Egy lépés determinisztikus, a véletlennek nincs szerepe. mennyit a játszma végén az egyik játékos nyer, annyit veszít a másik. (Legegyszerűbb változatban: egyik nyer, másik veszít, esetleg lehet döntetlen is) 1 Állapottér-reprezentáció Grundy mama játéka állapot állás + soron következő játékos művelet lépés kezdő állapot kezdőállás + kezdő játékos végállapot végállás + játékos célfüggvény mindkét játékosnak van célfüggvénye p, p : végállapot R o Zéró összegű kétszemélyes játék esetén: p (t) + p (t) = 0 o Speciális zéró összegű kétszemélyes játék esetén: p (t) = +1 ha t állapotban az játékos nyer (célállapot, nyerő állás -nak) p (t) = 1 ha t állapotban az játékos veszít (vesztő állás -nak) p (t) = 0 ha t állás döntetlen 3 4 Grundy mama játékgráfja Grundy mama játékfája ;,1; 5, ; 4, 3 ; 5, 1, 1 ; 4,, 1 ; 3,, ; 3, 3, 1 ;, 1 5, 4, 3 5, 1, 1 4,, 1 4,, 1 3,, 4,, 1 3, 3, 1 4, 1, 1, 1 ; 3,, 1, 1 ;,,, 1 ; 3, 1, 1, 1, 1 ;,, 1, 1, 1 ; nyer, 1, 1, 1, 1, 1 ; nyer nyer 4, 1, 1, 1 3,, 1, 1 3,, 1, 1 3,, 1, 1,,, 1 3,, 1, 1 3,, 1, 1 3,1,1,1,1,,1,1,1,,1,1,1,,1,1,1,,1,1,1,,1,1,1,1,1,1,1,1 5 1
Játékfa Hogyan tud a játékos biztosan nyerni? csúcs állás (egy állás több csúcs is lehet) szint játékos (felváltva az és szintjei) él lépés (szintről szintre) gyökér kezdőállás (kezdő játékos) levél végállások ág játszma, 1 5, 4, 3 5, 1, 1 4,, 1 4,, 1 3,, 4,, 1 3, 3, 1 4, 1, 1, 1 3,, 1, 1 3,, 1, 1 3,, 1, 1,,, 1 3,, 1, 1 3,, 1, 1 3,1,1,1,1,1,1,1,1,1 győztes stratégia garantál egy győztes játszmát.,,1,1,1,,1,1,1,,1,1,1,,1,1,1,,1,1,1 Egy győztes játszmához az ellenfél játéka is kell. Nyerő stratégia Megjegyzés Egy játékos nyerő (vagy nem-vesztő) stratégiája egy olyan elv, amelyet betartva az ellenfél minden lépésére tud olyan választ adni, hogy megnyerje (ne veszítse el) a játékot. nyerő stratégia NEM egyetlen győztes játszma, hanem olyan győztes játszmák összessége, amelyek közül az egyiket biztos végig tudja játszani az a játékos, aki rendelkezik a nyerő stratégiával. nyerő (nem-vesztő) stratégia egy megfelelő ÉS/VGY fa részfájával ábrázolható. Ez a részfa az ÉS/VGY fa olyan hiper-útja, amely a kezdő állás csúcsából (startcsúcs, gyökércsúcs) vezet a nyerő (nem-vesztő) végállások csúcsaiba. nyerő stratégia keresése tehát egy ÉS/VGY gráfbeli hiper-út keresési probléma. 9 10 Nyerő stratégia keresése a játékos ÉS/VGY fájában Nyerő stratégia keresése az játékos ÉS/VGY fájában Nincs nyerő stratégia. Csak az egyik játékosnak lehet nyerő stratégiája. 11 1
Tétel Ha a döntetlen nem megengedett, akkor bármelyik kétszemélyes játékban az egyik játékos számára biztosan létezik nyerő stratégia. Döntetlen esetén pedig nem vesztő stratégia. 13 Részleges játékfa-kiértékelés nyerő stratégia megkeresése egy nagyobb játékfa esetében reménytelen. z optimális lépés helyett a soron következő jó lépést keressük. Legyen a bennünket képviselő játékos neve mostantól MX, az ellenfélé pedig. Ehhez az aktuális állapotból indulva kell a játékfa néhány szintjét felépíteni, ezen a részfa leveleinek számunkra való hasznosságát megbecsülni, majd ez alapján a soron következő lépést meghatározni. 14 Kiértékelő függvény Minden esetben szükségünk van egy olyan heurisztikára, amely a mi szempontunkból becsüli meg egy állás hasznosságát. Sokszor ez egy f : Állások [-1000.. 1000] függvény. Minimax algoritmus 1. játékfának az adott állás csúcsából leágazó részfáját felépítjük néhány szintig.. részfa leveleit kiértékeljük aszerint, hogy azok számunkra kedvező, vagy kedvezőtlen állások. 3. z értékeket felfuttatjuk a fában: saját (MX) szintek csúcsaihoz azok gyermekeinek maximumát, z ellenfél () csúcsaihoz azok gyermekeinek minimumát. 4. Soron következő lépésünk ahhoz az álláshoz vezet, ahonnan a gyökérhez felkerült a legnagyobb érték. 15 1 Megjegyzés MX z algoritmust minden alkalommal, valahányszor mi következünk, megismételjük, hiszen lehet, hogy az ellenfél nem az általunk várt legerősebb lépésekkel válaszol, mert: MX 3 - -4-1 - 5 1 3 10 eltérő mélységű részfával dolgozik, más kiértékelő függvényt használ, nem minimax eljárást alkalmaz, hibázik. 1 1 3
Átlagoló kiértékelés Váltakozó mélységű kiértékelés z (m,n) átlagolás célja a kiértékelő függvény esetleges tévedéseinek simítása. MX szintjeire a m darab legnagyobb, szintjeire az n legkisebb értékű gyerek átlaga kerül. MX MX m=,n=.5.5 9 4.5 9 4 0 5 4 4-1 9-1 - 19 9 Célja, hogy a kiértékelő függvény minden ágon reális értéket mutasson. Nem megbízható ez az érték abban a csúcsban (f(aktuális)), amelynek gyerekénél a kiértékelő függvény lényegesen eltérő értéket (f(gyerek)) mutat. Ezekben az esetekben a részfát tovább kell építeni ezen csúcsokból addig, amíg nem teljesül a nyugalmi teszt: f(aktuális) f(gyerek) K. Ha a nyugalmi teszt nem felel meg egy csúcs, de vannak olyan gyerekei, amelyekre f(aktuális) f(gyerek) < K, akkor ezekre a gyerekekre nem kell a nyugalmi tesztet megismételni, ezek levélcsúcsok lesznek. 0 Szelektív kiértékelés 9 9 3 10-4 4 3 1 0 MX MX Célja a memória-igény csökkentése. Elkülönítjük a lényeges és lényegtelen lépéseket, és csak a lényeges lépéseknek megfelelő részfát építjük fel. Ez a szétválasztás heurisztikus ismeretekre épül. min mélység= max mélység=5 nyugalmi teszt = 3-5 3 MX 1 Negamax algoritmus Negamax eljárást könnyebb implementálni. z ellenfél szintjén levő levelek értékének vesszük a ( 1)- szeresét, majd minden szinten szülő:= max( gyerek 1,..., gyerek n ) MX - - MX 3 - -4 5-3 - 1 3 10 - - 4-1 -3-10 -5 3 1 3 4 4
lfa-béta algoritmus Visszalépéses algoritmus segítségével járjuk be a részfát (mélységi bejárás). z aktuális úton fekvő csúcsokat ideiglenes értékekkel látjuk el: a mi szintünkön értékkel (ennél rosszabb értékű állásba innen már nem juthatunk), az ellenfelén értékkel(ennél jobb értékű állásba onnan már nem juthatunk) látjuk el. Lefelé haladva =-, és =+. Ezek visszalépéskor a felhozott értékre változnak, ha az nagyobb, mint az, illetve kisebb, mint a. Vágás: ha az úton van olyan és, hogy. - = = + + - 4 = - - -1 = + + + + + - 4-1 - 4-1 5 Elemzés Ugyanazt a kezdőlépést kapjuk eredményül, amit a minimax algoritmus talál. (Több egyforma kezdőirány esetén a baloldalit választjuk.) Memória igény: csak egy utat tárol. Futási idő: a vágások miatt sokkal jobb, mint a minimax módszeré. Átlagos eset: egy csúcs alatt, két belőle kiinduló ág megvizsgálása után már vághatunk. Optimális eset: egy d mélységű b elágazású fában kiértékelt levélcsúcsok száma: d b Jó eset: részfa megfelelő rendezésével érhető el. Kétszemélyes játékot játszó program Váltakozó mélységű, szelektív, (m,n) átlagoló, negamax alfa-béta kiértékelést végez. Keretprogram, amely váltakozva fogadja a felhasználó lépéseit, és generálja a számítógép lépéseit. Kiegészítő funkciók (beállítások, útmutató, segítség, korábbi lépések tárolása, mentés stb.) Felhasználói felület, grafika Heurisztika megválasztása (kiértékelő függvény, szelekció, kiértékelés sorrendje) 5