Mesterséges Intelligencia alapjai, gyakorlat Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék 2010 / udapest
Kétszemélyes teljes információjú játékok két játékos felváltva lép mindkét játékos ismeri a maga és az ellenfél összes lépési lehetőségét, és következményeit minden egyes állásban véges számú lehetséges lépés véges számú lépés után a játék végetér szerencsének semmilyen szerepe sincs az egyik játékos nyer, a másik veszít (vagy döntetlen)
Példák kétszemélyes játékokra sakk go malom dáma számos táblás játék...
játékgráf játékfa nyerő stratégia ÉS/VGY fa "mindig létezik nyerő (vagy döntetlen) stratégia" Teljes játékfa kiértékelés - elvi jelentőség, gyakorlatban alig alkalmazható
Példa: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Példa: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Példa: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Példa: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Példa: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Példa: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Feladat: teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Feladat (megoldás): teljes játékfa kiértékelés lép: lép: lép: lép: lép:
Játékfa részleges kiértékelése Teljes játékfa kiértékelés sokszor nagyon időigényes: Sakk 45 lépésváltás / játszma (fa mélység: 90) legális lépések száma 35 35 90 kiértékelendő levél... (föld kora 10 18 másodperc) csak egy (a soron következő) "jó", "erős", lépés meghatározása a cél...
Minimax legjobb első lépés... "legnagyobb biztos előnyszerzés"... játékfa kiértékelése adott mélységig... MX MIN MX 1 3 2 8 7 4
Feladat (megoldás): MINMX kiértékelés MX MIN 1 2 4 MX 1 3 2 8 7 4 MX 4 MIN 1 2 4 MX 1 3 2 8 7 4
Feladat (megoldás): MINMX kiértékelés MX 4 MIN 1 2 4 MX 1 3 2 8 7 4 Nem "biztos a győzelem", "közbejöhet": MIN nagyobb mélységben értékel ki MIN más kiértékelő függvényt használ MIN nem MINMX-ot használ MIN "hibázik"
Feladat: MINMX MX MIN MX MIN 9 9 2 8 4 8 3 9 6 3 4 5 9 7
Feladat (megoldás): MINMX MX 8 MIN 8 6 5 MX 9 8 9 6 5 9 MIN 9 9 2 8 4 8 3 9 6 3 4 5 9 7 MINMX használható nyerő stratégia meghatározására
Feladat: NEGMX MX MIN -8 MX 9 8 MIN -9-9 -2-8 -4-8 -3-9 -6-3 -4-5 -9-7 MIN szinten v(n)=-f(n) értékek minden szinten v(n)=max(-v(n 1 ),...-v(n k )) egyszerűbben implementálható
Feladat: (m,n) átlagoló kiértékelés MX MIN MX 9 8,5 MIN 9 9 2 8 4 8 3 9 6 3 4 5 9 7 (1,1) átlagoló kiértékelés = MINMX (m,n) átlagoló kiértékelés : MX szinten "m" db. érték maximuma, MIN szinten "n" db. érték minimuma "kisimítja" a kiértékelő függvényt...
alfa-béta algoritmus MINMX "előre" legenerálja az adott mélységig a játékfát, majd keres benne... nincs mindig szükség az összes csúcs kiértékelésére... mélységi, (korlátos) visszalépéses keresés (balról jobbra haladás) "lefelé" haladásnál: MX szinten: α = -, MIN szinten: β = + vágás: ha az úton van olyan, hogy α β (minden egyes csúcs kiértékelésénél!)
Példa: alfa-béta algoritmus MX α - MIN β MX α - MIN β 9
Példa: alfa-béta algoritmus MX α - MIN β MX α -,9 MIN β 9 9 2
Feladat: alfa-béta algoritmus MX MIN MX MIN 9 9 2 8 4 8 3 9 6 3 4 5 9 7
Feladat (megoldás): alfa-béta algoritmus MX α MIN β -,8,9,8,6,5 MX α -,9 -,8 -,8 -,6 -,3,4,5 - MIN β 9 9 2 8 4 8 3 9 6 3 4 5 9 7
Feladat: alfa-béta algoritmus MX α O MIN β O O O MX α O O O O O O MIN β O O O O O O O O O MX α 5 6 7 4 5 3 6 6 9 7 5 9 8 6
Feladat (megoldás): alfa-béta algoritmus α -,3,6 β,5,3,6,5 α -,5 -,3 -,6 -,7 -,5 - β,5,7,4,3,6,6,7,5 - - α 5 6 7 4 5 3 6 6 9 7 5 9 8 6
Összefoglalás Kétszemélyes, teljes információjú játékok teljes játékfa kiértékelés részleges játékfa kiértékelés MINMX NEGMX átlagoló alfa-béta változó mélységű kiértékelés... Demo alkalmazás: http://wolfey.110mb.com/gamevisual/launch.php Nem kétszemélyes, nem teljes információjú játékok többszemélyes játékok (cél?) játékok ahol a szerencse is közbeszól (játékelmélet)...