ALGORYTMY ROZWIĄZYWANIA GIER C.D. Algorytm „rozwiązywania” (slove) Algorytm PAB (Principal Variation Alfabeta) Algorytm rozpoznawania (scout) Algorytm SSS* Algorytm B* Porównanie wybranych algorytmów
Algorytm „rozwiązywania” (ang. slove) Najprostsza metoda wyznaczania drzewa rozwiązania bez badania wszystkich wierzchołków
Algorytm „rozwiązywania” (ang. slove) c.d. Dodatkowe założenie algorytmu: dopuszczalne są jedynie dwa stany liścia (WYGRANY albo PRZEGRANY) e(w) =
Algorytm „rozwiązywania” (ang. slove) c.d.
Algorytm PAB (Principal Variation Alfabeta) zaprezentowany przez Fishburna i Finkela 1980-tym roku
Algorytm PAB (Principal Variation Alfabeta) c.d. Idea algorytmu: wybieramy dowolną ścieżkę przyjmujemy hipotezę, że wartość funkcji oceniającej na liściu tej ścieżki jest równa wartości minimxowej korzenia sprawdzamy hipotezę jeżeli znajdziemy lepsze alternatywy: uruchamiamy algorytm alfa-beta
Algorytm rozpoznawania (ang. scout) zaprojektowany przez J. Pearla opiera się na podobnej idei co PAB wykorzystywany do teoretycznej analizy drzew gier w algorytmie wykorzystywane są testy
Algorytm rozpoznawania (ang. scout) c.d. TESTY: Celem testów jest rozstrzygnięcie czy węzeł powinien być dokładnie analizowany czy nie. Funkcja testowania może mieć schemat podobny do algorytmu „rozwiązywania”
Algorytm rozpoznawania (ang. scout) c.d. Algorytm ten jest: stosunkowo łatwy do analizy teoretycznej bardziej efektywny gdy rośnie głębokość drzewa badanych gier
Algorytm SSS* (State space search) 1979 r. Stockman z rodziny A* wg. Zasady „najpierw najlepszy” (best first) poszukuje optymalnego drzewa rozwiązania reprezentacja optymalnej strategii gracza przypomina metody heurystycznego przeszukiwania
Algorytm SSS* c.d. węzeł „w” drzewa analizowany jest z punktu widzenia zbioru poddrzew z korzeniem „w” na podstawie wartości liści takich poddrzew ustala się ich główne ograniczenia poddrzewo o największym górnym ograniczeniu analizowane jest jako pierwsze zakończenie przeszukiwania następuje w chwili znalezienia pierwszego drzewa rozwiązania
Algorytm SSS* c.d. Z każdym węzłem „w” związana jest informacja s(w) oraz liczba h(w). Funkcja s(w) jest dwuwartościowa: s(w) = Liczba h(w) jest wartością przypisywaną węzłowi „w” podczas wykonywania algorytmu
Algorytm SSS* c.d. Przykład planszy gry testowej (4x4) dla algorytmu SSS*
Algorytm SSS* c.d. Tworzenie węzłów w trakcie działania SSS* rozpoczynamy od węzła początkowego (0) i jego potomków (1) i (2). Każdy z nich reprezentuje grupę drzew rozwiązania
Algorytm SSS* c.d. W przypadku występowania kilku węzłów o tej samej wartości jako pierwszy do dalszej analizy wybrany zostanie węzeł położony najbardziej na lewo
Algorytm SSS* c.d.
Algorytm SSS* c.d. Zaleta: wyznacza jako pierwsze optymalne drzewo rozwiązania Wady: skomplikowana struktura, olbrzymie wymagania pamięciowe
Algorytm B* opublikowany przez Hansa Berlinera w 1979-tym roku. funkcja heurystyczna zwraca dwie wartości (pesymistyczną i optymistyczną ocenę pozycji) znajduje najlepsze posunięcie
Algorytm B* c.d. Dwie strategie: PROVEBEST I DISPROVEREST Koniec algorytmu: pesymistyczna wartość jednego posunięcia >= optymistycznym wartościom pozostałych
Algorytm B* c.d. PROVEBEST: pewne posunięcie jest lepsze od pozostałych DISPROVEREST: wszystkie posunięcia są od jednego wybranego
Algorytm B* c.d. Wybór węzła do dalszego rozpatrywania: PROVEBEST bada poddrzewo związane z założonym najlepszym posunięciem DISPROVEREST bada poddrzewo związane z pewnym hipotetycznie słabym posunięciem
Porównanie wybranych algorytmów Analizujemy wariant gry na planszy 8x8 z liczbami dodatnimi z przedziału <1, 9> i ujemnymi z przedziału <-9, -1>
Porównanie wybranych algorytmów c.d. 6 -7 8 -2 9 -1 3 2 -5 5 -6 7 -4 -8 1 -9 4 Przykładowa plansza gry
Porównanie wybranych algorytmów c.d. Algorytm SSS* lepszy w 58% przypadków Algorytm alfa-beta był lepszy 37% przypadków 5% wynik identyczny 5% przypadków algorytm „rozpoznawania” charakteryzował się mniejszą liczbą przetestowanych i wartościowanych wierzchołków w porównaniu z liczbą badanych wierzchołków w algorytmie alfa-beta W pozostałych przypadkach w trakcie wykonywania algorytmu „rozpoznawania” liście były testowane wielokrotnie
KONIEC