Algorytm mini-max
description
Transcript of Algorytm mini-max
![Page 1: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/1.jpg)
ALGORYTM MINI-MAX
![Page 2: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/2.jpg)
Algorytm mini-max
algorytm jest standardowo stosowany we wszelkich programach grających w gry planszowe i nie tylko.
Celem algorytmu jest wskazanie w danej sytuacji ruchu dającego graczowi strategię wygrywającą, lub przynajmniej dającego możliwie duże prawdopodobieństwo zwycięstwa.
![Page 3: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/3.jpg)
Strategia “mini-max”
Nazwa algorytmu bierze źródło od przyjętej w nim strategii postępowania:
symulując na zmianę ruchy własne i przeciwnika, znajdując się na poziomie przeciwnika wybieramy ruch najgorszy dla gracza, natomiast na poziomie gracza wybieramy ruch dla niego najlepszy.
![Page 4: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/4.jpg)
![Page 5: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/5.jpg)
Łatwo się domyślić, że analizując drzewo gry w ten sposób, nie da się dojść do liści drzewa, tj. do sytuacji w której gra jest rozegrana.
Konieczne jest zastosowanie heurystycznych funkcji oceniających stan gry.
Przeszukują one drzewo gry do pewnego ustalonego poziomu na którym stan gry jest ustalany przez zadaną funkcję.
Odpowiednie dobranie tej funkcji jest kluczem do sukcesu programu.
![Page 6: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/6.jpg)
Pseudokod algorytmu “mini-max”:MINI-MAX(sytuacja, gracz, głębokość) if głębokość > limit_głębokości then return OCEŃ_SYTUACJĘ(sytuacja) r = WYGENERUJ_MOŻLIWE_RUCHY(sytuacja, gracz) if gracz = 0 minimax := 0 else minimax := inf foreach x in r sytuacja' := WYKONAJ_RUCH(sytuacja, x) t := MINI-MAX(sytuacja, PRZECIWNIK(gracz), głębokość + 1) if gracz = 0 and t > minimax then minimax:=t else if gracz = 1 and t < minimax then minimax:=t return minimax
![Page 7: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/7.jpg)
Obcinanie alfa-beta
Głębokość przeszukiwania wpływa na „siłę” algorytmu
Jeżeli analizując drzewo gry mamy wykonać ruch po którym stan gry będzie gorszy od najlepszego gwarantowanego, nie przeprowadzamy dalszej analizy tej gałęzi drzewa.
![Page 8: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/8.jpg)
Funkcje oceny stanu stosowane w Warcabach
Podejście podstawowe Zwracamy uwagę jedynie na liczbę
pionków swoich i przeciwnika, damki liczą się jako n pionków.
![Page 9: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/9.jpg)
Funkcje oceny stanu stosowane w Warcabach
Punktujemy każdego pionka znajdującego się w obszarze niebieskim, czerwonym, zielonym odpowiednio x, y, z punktami,damkę traktujemy jako n pionków
![Page 10: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/10.jpg)
Funkcje oceny stanu stosowane w Warcabach
Podejście Chellapila i Fogel'a Sytuacja jest punktowana przez sieć
neuronową zbudowaną z kilku warstw, pierwsza jest podłączona do pól planszy, ostatnia zbudowana jest z pojedynczego neuronu zwracającego wynik.
![Page 11: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/11.jpg)
Funkcje oceny stanu stosowane w Warcabach Istotną wadą tej metody jest bardzo duża
liczba parametrów (po kilka-kilkanaście dla każdego neuronu; łącznie około 5000) które koniecznie trzeba dobierać stosując algorytmy
genetyczne.
![Page 12: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/12.jpg)
Kółko i krzyżyk
W tej grze nie występują pionki, które można by punktować, więc trzeba sobie radzić inaczej.
W grze na nieskończonej planszy do pięciu, można dawać graczowi punkty za rozpoczęte ciągi krzyżyków lub kółek, w zależności od ich długości.
![Page 13: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/13.jpg)
Szachy
Ze względu na popularność tej gry, programy grające w szachy są najbardziej rozwinięte i ciekawe. Stosuje się w nich wiele usprawnień zwykłego podejścia “mini-max”:
początkowe ruchy nie są wyznaczane metodą “mini-max”, ale wybierane z wygenerowanego wcześniej (na przykład przez super komputer, albo na podstawie przebiegów gier mistrzów) słownika
liczba możliwych do przeprowadzenia gier jest większa niż występująca w praktyce liczba stanów gry, opłaca się zapisywanie wyników pracy funkcji MINI-MAX w tablicy z haszowaniem
podczas przeszukiwania drzewa dba się o to, aby zaczynać od ruchów potencjalnie najlepszych (co istotnie zwiększa efektywność obcinania alfa-beta)
poza punktowaniem poszczególnych figur i pionków, dodaje się punkty za ilość pól znajdującą się pod biciem gracza,
nagrody za doprowadzenie do szachu, kary za izolowane pionki, kary za nie chronione figury, etc.
![Page 14: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/14.jpg)
Gry wiedzy niepełnej
Ponieważ nie jest znany cały stan gry, nie można stworzyć funkcji która by go wprost oceniała. Programy grające (uczciwie) w gry karciane stosują funkcje obliczające prawdopodobieństwo tego, że dana sytuacja jest korzystna.
![Page 15: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/15.jpg)
Dobór współczynników
Ręcznie Sieci neuronowe Algorytmy genetyczne Ocena na podstawie słownika
![Page 16: Algorytm mini-max](https://reader036.fdocuments.pl/reader036/viewer/2022082423/56816358550346895dd410d0/html5/thumbnails/16.jpg)
Jaki jest poziom mistrzów świata? Program grający w warcaby
implementujący podejście zaproponowane przez Chellapila i Fogel'a został wpisany do Księgi Rekordów Guiness'a jako pierwszy komputer, który pokonał ludzkiego mistrza świata w jakiejkolwiek grze. Głębokość analizy powyżej 70 ruchów.
Aby pokonać początkującego gracza wystarczy analiza 5-7 ruchów, dla gracza średnio zaawansowanego potrzeba ich 11.