270 likes | 479 Views
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).
E N D
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 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
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. 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