(4g) Wykład 7 i 8 w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach P. Kobylański Wprowadzenie do Sztucznej Inteligencji 177 / 226
(4g) gry optymalne decyzje w grach algorytm minimax alfa-beta cięcia gry stochastyczne gry z niepełną informacją przegląd grających programów komputerowych P. Kobylański Wprowadzenie do Sztucznej Inteligencji 178 / 226
(4g) Gry środowisko wieloagentowe, w którym trzeba brać pod uwagę działania innych agentów działania innych agentów są nieprzewidywalne konflikt interesów teoria gier: gry deterministyczne,turowe,dla dwóch graczy,z sumą zerową, zpełną informacją sztuczna inteligencja: środowisko deterministyczne i w pełni obserwowalne, dwaj agenci działają na zmianę, funkcje użyteczności agentów równe ale przeciwne P. Kobylański Wprowadzenie do Sztucznej Inteligencji 179 / 226
(4g) Gry: sformułowanie problemu Gra to problem przeszukiwania, w którym: S 0 to stan początkowy PLAYER(s) definiuje, który gracz wykonuje ruch w stanie s ACTIONS(s) zwraca jakie ruchy są dopuszczalne w stanie s RESULT(s, a) model przejścia, który definiuje rezultat ruchu TERMINAL-TEST(s) test zakończenia, który zachodzi jeśli gra kończy się w stanie s (stany końcowe to te, które spełniają test zakończenia) UTILITY(s, p) funkcja użyteczności (celu albo wypłaty) definiuje końcową wartość numeryczną w stanie końcowym s dla gracza p (np. wszachach0przegrana,1wygrana, 1 2 remis) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 180 / 226
(4g) Gry: drzewo gry MA () MIN (O) MA () O O O... MIN (O) O O O............... TERMINAL Utility O O O O OO O O O O 1 0 +1... P. Kobylański Wprowadzenie do Sztucznej Inteligencji 181 / 226
(4g) Optymalne decyzje w grach w problemie przeszukiwania rozwiązaniem jest sekwencja akcji prowadzących do stanu końcowego przeszukiwanie z adwersarzem wymaga uwzględnienia działań przeciwnika optymalna decyzja jest strategią najlepszych reakcji na ruchy przeciwnika poszukiwanie strategii jest analogiczne do przeglądu drzewa AND-OR (węzeł OR odpowiada decyzji gracza a AND decyzji przeciwnika) przy poszukiwaniu strategii zakłada się nieomylność przeciwnika dla danego drzewa gry, optymalna strategia jest zdeterminowana wartością minimax obliczoną dla każdego z węzłów drzewa P. Kobylański Wprowadzenie do Sztucznej Inteligencji 182 / 226
(4g) Optymalne decyzje w grach Niech UTILITY(s) =UTILITY(s, PLAYER(s)). Wówczas MINIMA(s) = 8 < : UTILITY(s) max a2actions(s) MINIMA(RESULT(s, a)) min a2actions(s) MINIMA(RESULT(s, a)) gdy TERMINAL-TEST(s) gdy PLAYER(s) =MA gdy PLAYER(s) =MIN P. Kobylański Wprowadzenie do Sztucznej Inteligencji 183 / 226
(4g) Optymalne decyzje w grach Drzewo gry z węzłami 4 gracza MA i węzłami 5 gracza MIN: MA 3 A a 1 a 2 a 3 MIN 3 B 2 C 2 D b 1 b 2 b 3 c 1 c 2 c 3 d 1 d 2 d 3 3 12 8 2 4 6 14 5 2 P. Kobylański Wprowadzenie do Sztucznej Inteligencji 184 / 226
(4g) Optymalne decyzje w grach Example (Gra osaczony w języku Prolog) 2 3 1 4 win(, G, Y) :- select((, Y), G, G1), \+win(y, G1, _).?- win(1, [(1,2),(1,3),(2,3),(3,4),(4,1),(4,2)], ). = 3 ; false. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 185 / 226
(4g) Optymalne decyzje w grach Example (Gra NIM w języku Prolog) Ze stosu kamieni należy wziąć 1, 2 lub 3 kamienie. Przegrywa kto weźmie ostatni kamień. nim(n, I) :- result(n, I, N1), N1 > 0, \+ nim(n1, _). result(n, I, N1) :- between(1, 3, I), N1 is N-I, N1 >= 0.?- nim(15, ). = 2 ; false.?- nim(13, ). false. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 186 / 226
(4g) Optymalne decyzje w grach Example (Szkic programu w języku Prolog) Dwa wzajemnie rekurencyjne predykaty wyznaczające strategię w grze bez remisu: primus(state, none) :- winner(state, primus). primus(state, Action) :- result(state, Action, NewState), \+ secundus(newstate, _). secundus(state, none) :- winner(state, secundus). secundus(state, Action) :- result(state, Action, NewState), \+ primus(newstate, _). P. Kobylański Wprowadzenie do Sztucznej Inteligencji 187 / 226
(4g) Algorytm minimax algorytm minimax oblicza decyzję minimax dla danego stanu algorytm rekurencyjnie oblicza wartości minimax dla każdego następnika bezpośrednio implementując równanie definiujące wartość MINIMA(s) jeśli głębokością drzewa gry jest m iwkażdymniekońcowymstanie jest b dopuszczalnych ruchów, to czasowa złożoność algorytmu minimax jest O(b m ),natomiastzłożonośćpamięciowajesto(bm) gdy generuje się wszystkie ruchy na raz lub O(m) jeśli generuje się kolejno po jednym ruchu dla rzeczywistych gier algorytm minimax jest niepraktyczny z powodu złożoności P. Kobylański Wprowadzenie do Sztucznej Inteligencji 188 / 226
(4g) Algorytm minimax function MINIMA-DECISION(state) returns an action return arg max a2actions(state) MIN-VALUE(RESULT(state, a)) function MA-VALUE(state) returns autilityvalue if TERMINAL-TEST(state) then return UTILITY(state) v 1 for each a in ACTIONS(state) do v MA(v, MIN-VALUE(RESULT(state, a))) return v function MIN-VALUE(state) returns autilityvalue if TERMINAL-TEST(state) then return UTILITY(state) v 1 for each a in ACTIONS(state) do v MIN(v, MA-VALUE(RESULT(state, a))) return v P. Kobylański Wprowadzenie do Sztucznej Inteligencji 189 / 226
(4g) Algorytm minimax Przykładowe obliczenia w grze dla wielu graczy z wektorami ocen: to move A (1, 2, 6) B (1, 2, 6) (1, 5, 2) C (1, 2, 6) (6, 1, 2) (1, 5, 2) (5, 4, 5) A (1, 2, 6) (4, 2, 3) (6, 1, 2) (7, 4,1) (5,1,1) (1, 5, 2) (7, 7,1) (5, 4, 5) P. Kobylański Wprowadzenie do Sztucznej Inteligencji 190 / 226
(4g) Alfa-beta cięcia do prostego algorytmu minimax dodano oszacowania wartości optymalnej decyzji na podstawie dotychczas znalezionych faktycznych wartości UTILITY jeśli górne oszacowanie węzła jest gorsze niż dolne oszacowanie jego rodzica, to nie kontynuuje się analizy kolejnych następników tego węzła P. Kobylański Wprowadzenie do Sztucznej Inteligencji 191 / 226
(4g) Alfa-beta cięcia (a) [, + ] A (b) [, + ] A [, 3] B [, 3] B 3 3 12 (c) [3, + ] A (d) [3, + ] A [3, 3] B [3, 3] B [, 2] C 3 12 8 3 12 8 2 (e) [3, 14] A (f) [3, 3] A [3, 3] [, 2] [, 14] B C D [3, 3] [, 2] [2, 2] B C D 3 12 8 2 14 3 12 8 2 14 5 2 P. Kobylański Wprowadzenie do Sztucznej Inteligencji 192 / 226
(4g) Alfa-beta cięcia Załóżmy, że dwa nieocenione węzły będące następnikami węzła C z poprzedniego rysunku, mają wartości x i y, wówczas: MINIMA(root) = max(min(3, 12, 8), min(2, x, y), min(14, 5, 2)) = max(3, min(2, x, y), 2) = max(3, z, 2) gdzie z = min(3, z, 2) apple 2 = 3 Zatem wartość korzenia jest niezależna od ocen x i y. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 193 / 226
(4g) Alfa-beta cięcia algorytm MINIMA jest algorytmem przeszukiwania wgłąb zatem w dowolnej chwili rozpatrywane są jedynie węzły na jednej ścieżce od korzenia do danego węzła możliwe jest wycinanie całych fragmentów przeglądanego drzewa, przy czym odcinanie sterowane jest dwoma parametrami: wartość najlepszego wyboru (najwyższa) jaki znaleziono dotychczas w dowolnym rozgałęzieniu na ścieżce dla gracza MA wartość najlepszego wyboru (najniższa) jaki znaleziono dotychczas w dowolnym rozgałęzieniu na ścieżce dla gracza MIN P. Kobylański Wprowadzenie do Sztucznej Inteligencji 194 / 226
(4g) Alfa-beta cięcia Player Opponent m Player Opponent n Jeśli gracz ma lepszy wybór m w bezpośrednim lub pośrednim poprzedniku gorszego wyboru n, to wybór n nigdy nie będzie wykonywany podczas gry. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 195 / 226
(4g) Alfa-beta cięcia: algorytm function ALPHA-BETA-SEARCH(state) returns an action v MA-VALUE(state, 1, +1) return the action in ACTIONS(state) with value v function MA-VALUE(state,, ) returns autilityvalue if TERMINAL-TEST(state) then return UTILITY(state) v 1 for each a in ACTIONS(state) do v MA(v, MIN-VALUE(RESULT(state, a),, )) if v then return v MA(, v) return v function MIN-VALUE(state,, ) returns autilityvalue if TERMINAL-TEST(state) then return UTILITY(state) v +1 for each a in ACTIONS(state) do v MIN(v, MA-VALUE(RESULT(state, a),, )) if v apple then return v MIN(, v) return v P. Kobylański Wprowadzenie do Sztucznej Inteligencji 196 / 226
(4g) Alfa-beta cięcia: kolejność ruchów efektywność algorytmu w istotny sposób zależy od kolejności analizowanych ruchów w pierwszej kolejności powinno się rozpatrywać następniki, które wydają się najlepsze jeśli możliwe jest ustalenie kolejności ruchów, to liczba węzłów jakie należy zbadać zmniejsza się od O(b m ) dla algorytmu minimax do O(b m/2 ) efektywny wskaźnik rozgałęzienia zmniejsza się wówczas z b do p b (np. w szachach z 35 do około 6) kiedy następniki analizowane są w losowej kolejności, to liczba badanych węzłów wynosi O(b 3m/4 ) wszachachkolejnośćruchówmogłabybyćnastępująca:bicie, podwójne uderzenie, ruchy do przodu, ruchy do tyłu P. Kobylański Wprowadzenie do Sztucznej Inteligencji 197 / 226
(4g) Alfa-beta cięcia: kolejność ruchów "Some care must be taken in the implementation of this algorithm. In the Second Annual Computer Chess Championship (Chicago, 1971) a chess program using this algorithm discovered amateintwomovesandterminanteditssearch.afterthe opponent moved, the program began the search again, discovering first a mate in three. It immediately pruned and made the first move of this sequence, missing the possible mate on the move. It continued finding mates in more than one move until due to another bug if finally lost the game." Samuel H. Fuller; John G. Gasching; Gillogly, "Analysis of the alpha-beta pruning algorithm" (1973). Computer Science Department Paper 1701. P. Kobylański Wprowadzenie do Sztucznej Inteligencji 198 / 226