3. MINIMAX. Rysunek 1: Drzewo obrazujące przebieg gry.

Podobne dokumenty
Wyznaczanie strategii w grach

Programowanie gier planszowych

Tworzenie gier na urządzenia mobilne

T Z A A R G I P F. Kris Burm. Deutsch... 3 English... 7 Français Italiano Nederlands Español Polski... 27

gra Chińczyk dla 6 osób

Temat; Ćwiczenia kształtujące panowanie nad piłką, technikę podań i koordynację ruchową ułożone w formie jednostki treningowej.

Algorytmy dla gier dwuosobowych

Wiek graczy: 8+ Liczba graczy: 2 4 Czas gry: 20 min INSTRUKCJA

Planowanie drogi robota, algorytm A*

ATOLL. Wykonali: Aleksandra Kuchta, Łukasz Wójcik, Sztuczna Inteligencja, Semestr trzeci, Kierunek Informatyka, Wydział Informatyki i Zarządzania,

35 żetonów Leukocyt, 35 żetonów Lekarstwa, 84 żetony Globinka, 30 żetonów Hemo, 4 detektory odpowiedzi, 4 karty przelicznik, instrukcja gry.

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Teoria gier. Wykład7,31III2010,str.1. Gry dzielimy

Teoria gier. Teoria gier. Odróżniać losowość od wiedzy graczy o stanie!

2 gry planszowe. rekomendowany wiek: od lat 4 dla 2 4 osób

a) 7 b) 19 c) 21 d) 34

Porządek symetryczny: right(x)

Turing i jego maszyny

ELEMENTY GRY. 90 kart upraw

Elementy modelowania matematycznego

Adam Meissner. SZTUCZNA INTELIGENCJA Gry dwuosobowe

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 3

Prospero Hall. Abstrakcyjna gra logiczna dla 2-4 nieszablonowych spryciarzy w wieku 8-99 lat.

Przykładowe rozwiązania

Pawnographic chess. (Sztuczna inteligencja) Wydzia ł Informatyki i Zarządzania Informatyka. Pozna ń, 25 lutego 2008 r.

Algorytmiczne Aspekty Teorii Gier Rozwiązania zadań

Partition Search i gry z niezupełną informacją

Pora na gry planszowe

Spadające jabłuszka. licencja CC-BY-SA Uznanie autorstwa Na tych samych warunkach 3.0 Polska. Strona 51

Instrukcje dla zawodników

Zadanie: A2 Kapitan Mambeks i gra w skoczki Plik źródłowy: A2.pas dla języka Pascal Dostępna pamięć: 64 MB A2.c dla języka C A2.

METODY SZTUCZNEJ INTELIGENCJI 2 Opis projektu

Internetowe Ko³o M a t e m a t yc z n e


Algorytmy sztucznej inteligencji

Propozycje tematów zadań

gry na planszy do WARCABÓW WARCABY TRADYCYJNE WARCABY NAROŻNIKOWE gra dla 2 osób rekwizyty: - plansza - 12 pionków białych i 12 pionków czarnych

Animacje z zastosowaniem suwaka i przycisku

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

Reguły gry. Zawartość pudełka:

Podstawowe zasady gry w szachy. Ustawienie bierek na szachownicy w pozycji wyjściowej.

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Małe gry z akcentem na fazy przejściowe

QUIZ O ŚWIECIE INSTRUKCJA WARIANT I

Spotkanie Fireside Gathering z funkcją Fireside Special ustawioną na bójkę Bitwa morska! Możecie zorganizować je tutaj:

Szachy INSTRUKCJA. rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt.

Tworzenie gier na urządzenia mobilne

SZACHY mini INSTRUKCJA. rekwizyty: 1) Bierki - 32 szt. 2) plansza - 1 szt.

MODELOWANIE RZECZYWISTOŚCI

CHIŃCZYK. CHIŃCZYK z blokadą ruchomą INSTRUKCJA. gry na planszy do Chińczyka. gra dla 2-4 osób

HALMA HALMA SZYBKA HALMA KOLOROWA INSTRUKCJA

ELEMENTY GRY. 6 pionków, po jednym dla każdego gracza. Plansza. 6 zestawów kart (13 kart w każdym zestawie), po jednym dla każdego gracza

ALGORYTMY I STRUKTURY DANYCH

Tworzenie szablonów użytkownika

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

INSTRUKCJA. gra edukacyjna dla 2 3 graczy rekomendowany wiek: od lat 10 WARIANT I

INSTRUKCJA. Gwarancja świetnej zabawy dla dzieci i dorosłych!

25. NIE TYLKO WORECZKI CZYLI O ROZUMIENIU SYSTEMU DZIESIĘTNEGO, CZ. I

ELEMENTY GRY CEL GRY I I. 32 karty ruchu. 27 kart celów. 9 elementów totemu

Teoria gier. Katarzyna Koman Maria Koman. Politechnika Gdaoska Wydział Fizyki Technicznej i Matematyki Stosowanej

Znajdowanie wyjścia z labiryntu

Gra dla 2 4 graczy w wieku lat.

Ping-Pong. Gra dla dwóch graczy.

Gra planszowa stwarza jeszcze więcej możliwości!

KONSTRUKCJA TRÓJKĄTA 1 KONSTRUKCJA TRÓJKĄTA 2 KONSTRUKCJA CZWOROKĄTA KONSTRUKCJA OKRĘGU KONSTRUKCJA STYCZNYCH

(12) OPIS OCHRONNY PRZEMYSŁOWEGO

MODELOWANIE RZECZYWISTOŚCI

GRA O ZIMNEJ WOJNIE ELEMENTY GRY

Metoda Karnaugh. B A BC A

SZTUCZNA INTELIGENCJA

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Automatyczne Diagnozy Partii Szachowych nowa funkcja Zestawienie Ruchów.

D. Miszczyńska, M.Miszczyński KBO UŁ 1 GRY KONFLIKTOWE GRY 2-OSOBOWE O SUMIE WYPŁAT ZERO

Dokumentacja programu. Zoz. Uzupełnianie kodów terytorialnych w danych osobowych związanych z deklaracjami POZ. Wersja

Elementy gry. Cel gry. Dla 1 do 4 graczy, w wieku od 6 do 116 lat. Gra autorstwa Antoine a Bauzy, zilustrowana przez Stéphana Escapę.

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

ZASADY GRY. Zawartość:

Algorytmy z powrotami. Algorytm minimax

Tworzywo. 4 karty do zapisywania wyników 1 karta rundowa 4 pisaki

Excel - użycie dodatku Solver

Instrukcja obsługi programu

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

Teoria gier. wstęp Teoria gier Zdzisław Dzedzej 1

INSTRUKCJA. gra edukacyjna dla 2 6 graczy rekomendowany wiek: od lat 10 WARIANT I

ELEMENTY GRY. 72 karty pokoi (6 rodzajów po 12 kart) 4 karty startowe. 4 karty zmiany punktacji 4 dodatkowe karty zmiany punktacji.

INSTRUKCJA. gra edukacyjna dla 3 osób - od 8 lat

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Cel gry. Elementy gry: Grę dedykuję moim siostrom: Ilonie, Kasi i Marioli. Adam Kałuża

Zasady gry. Zawartosc pudełka. Przygotowanie do gry

Skowrońska-Szmer. Instytut Organizacji i Zarządzania Politechniki Wrocławskiej Zakład Zarządzania Jakością r.

PRZYJĘTE ZASADY GRY...3 ZAŁOŻENIA PROJEKTU...4 CZYM JEST I DLACZEGO QT?...5 DIAGRAM KLAS...7 DIAGRAM GRY SINGLE PLAYER...8 DIAGRAM MULTIPLAYERA...

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Drzewa poszukiwań binarnych

ELEMENTY GRY: 46 KAFELKÓW TERENU (w tym 4 startowe z kwiatami oraz 8 kafelków terenu specjalnego) 12 ŻABEK. 32 KAFELKI AKCJI (po 3 w kolorach graczy)

BEZPIECZNE DZIECKO- PRZYJACIEL SZNUPKA DLA KLASY VI. CEL GŁÓWNY: Nabywanie umiejętności wyboru zachowań promujących zdrowie.

WYPRAWA Z MARTYNĄ WOJCIECHOWSKĄ

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Gra rodzinna dla 2-4 osób w wieku od 7 do 99 lat

Transkrypt:

3. MINIMAX. Bardzo wygodną strukturą danych pozwalającą reprezentować stan i przebieg gry (szczególnie gier dwuosobowych) jest drzewo. Węzły drzewa reprezentują stan gry po wykonaniu ruchu przez jednego z graczy. Gałąź przechodząca od węzła x do węzła y oznacza, że przyjmując za stan bieżący stan x jeden z graczy może wybrać taki ruch, który spowoduje, że stan gry (czyli na przykład sytuacja na planszy) będzie równy y. Poziomy drzewa reprezentują wszystke ruchy, jakie może wykonać jeden z graczy w danej turze. Każdy węzeł ma przypisaną liczbę wyrażającą wartość reprezentowanej pozycji z punktu widzenia gracza, dla którego zaczęliśmy konstruować drzewo; w poniższym przykładowym drzewie graczem tym jest A. Rysunek 1: Drzewo obrazujące przebieg gry. Naszym zadaniem jest teraz wyznaczenie ścieżki prowadzącej od stanu początkowego do tego ze stanów końcowych, który daje nam pewność, że nie zdobędziemy mniej jak x punktów, przy czym x jest największą z najmniejszych wartości jakie możemy zdobyć. Już wyjaśniam o co chodzi... Rozważmy następujace drzewo gry (każdy stan oceniany jest od -10 - przegrana gracza A do +10 - wygrana gracza A) 1

Rysunek 2: Drzewo gry - ruchy gracza A. Będąc w stanie 1 i mając wykonać ruch gracz A z pewnością wybierze przjście (czyli wykona ruch powodujący zmianę na planszy) do stanu 2, gdyż stan ten zapewnia mu największą ilość punktów. Rozwińmy jednak to drzewo o jeden dodatkowy poziom, który powstanie po wykonaniu ruchu przez gracza B (wszystkie stany oceniane są z punktu widzenia gracza A). Rysunek 3: Drzewo gry. Pierwszy poziom ruchy gracza A; drugi - ruchy gracza B. Otórz w odpowiedzi na nasz ruch r2 gracz B może odpowiedzieć ruchami r5, r6 i r7. Zakładając, że gracz B stosuje kryterium zdrowego rozsądku, to znaczy wybiera najkorzystniejszy dla siebie ruch, wykona on ruch r6 a to oznacza dla gracza A zdecydowane pogorszenie poprzedniej świetnej sytuacji. Zdecydowanie lepiej dla A wykonać taki ruch, który zagwarantuje nam, że po odpowiedzi gracza B stracimy jak najmniej. Ruchem tym jest r3. W najgorszym razie znajdziemy się bowiem w sytuacji ocenianej na -2. Owszem, wybierając r2 moglibyśmy znaleźć się w stanie ocenianym na 9, ale pamiętajmy, że B nie gra przeciw sobie więc raczej ruchu r5 nie wykona. Przykład ten pokazuje jeszcze jedną rzecz. Bardzo istotna jest głębokość analizy, czyli wysokość drzewa. Najlepiej, jeśli możnaby wygenerować całe drzewo, co dla większości gier jest... niemożliwe. Problem stanowi tutaj czas potrzebny na realizację takiego zadania (tj. generowania i przeszukiwania drzewa). Dla prostych gier, jak ta z zadania, wystarczają 2-3 poziomy. Przyjmijmy więc, że nasze drzewo ma kilka poziomów odpowiadających kilku turom w pewnej grze. Jak zatem wybrać odpowiednią ścieżkę. Analizę drzewa rozpocz- 2

niemy od jego liści i posuwać będziemy się w kierunku korzenia. Liściom przypisjemy wartości gry odpowiadajęce reprezentowanym przez nie stanom. Dla pozostałych węzłów powstałych w wyniku ruchu gracza B będzie to max z wartości oceny dzieci, natomiast dla węzłów odpowiadających ruchowi gracza A min z wartości oceny dzieci (max i min liczone jest osobno dla każdego węzła). Rozważmy poniższe drzewo gry. Rysunek 4: Drzewo gry. Postępując zgodnie z powyższym opisem rozpoczynamy jego analizę od liści (węzłów o numerach 11-18). Każdemu z nich przypiszemy wartość reprezentowanego przez niego stanu gry. Stąd nasze drzewo przyjmie postać: Wartości dla węzłów z tury II odpowiadających ruchowi gracza A będą minimami z wartości przechowywanych przez dzieci. Stąd drzewo przyjmie postać: Wartości dla węzłów z tury II odpowiadających ruchowi gracza A będą minimami z wartości przechowywanych przez dzieci. Stąd drzewo przyjmie postać: 3

Wartości dla węzłów odpowiadających ruchowi gracza B w turze I to maksima z wartości ich dzieci, czyli Wartości dla węzłów odpowiadających ruchowi gracza A w turze I to ponownie minima z wartości ich dzieci, czyli 4

Ostatecznie, do korzenia zwracamy maxymalną wartości jego dzieci, czyli -2: Jeśli więc wykonamy ruch, który spowoduje, że znajdziemy się w stanie 2 to w najgorszym przypadku znajdziemy się w stanie ocenianym na -2 (przy założeniu, że nie gramy przeciw sobie. Przedstawimy teraz ten algorytm w bardziej formalnej postaci. Korzystać będziemy w tym opisie z następujacych funkcji i stałych MOVEGEN(Position, Player) - funkcja ta generuje wszystkie ruchy jakie może wykonać gracz Player traktując stan Position jako stan początkowy. Zwraca ona listę, w której każda pozycja zawiera nowy stan wraz z opisem ruchu, który do niego doprowadził. Na przykład MOVEGEN(1,B) daje listę {{3, r3}, {4, r4}}. ASSESS(Position,Player) - funkcja, która ocenia stan Position według kryteriów gracza Palyer, na przykład ASSESS(3,B)=-2. 5

Ponieważ jest to algorytm rekursywny zatem istotne jest przerwanie w pewnym momencie ciągu samowywołań. Uczynimy tak, gdy funkcja zwróci wartości TRUE. Stałe oznaczają największą i najmniejszą wartość jaką może zwócić funkcja ASSESS. Algorytm Minimax MINIMAX (Position, Depth, Player) 1. Jeśli DEEP_ENOUGH(Position,Depth)=TRUE to zwróć strukturę VALUE:=ASSESS(Position,PLAYER_A) PATH:=NULL 2. W przeciwnym razie wygeneruj kolejny poziom drzewa wywołując funkcję MOVGEN(Position, PLAYER_B) jeśli Player=PLAYER_A MOVGEN(Position, PLAYER_A) jeśli Player=PLAYER_B a zwrócone przez nią wartości zapisz w SUCCESSORS. 3. Jeśli SUCCESSORS=NULL, oznacz to, że nie ma już więcej możliwych do wykonania ruchów. Zwracamy zatem strukturę VALUE:=ASSESS(Position,PLAYER_A) PATH:=NULL 4. W przeciwnym razie jeśli a) Player=PLAYER_A to wykonaj: PATH:=NULL VALUE:=THE_BEST; Dla każdego stanu S z SUCCESSORS będącego wynikiem ruchu R wykonaj: (T_VALUE,T_PATH):=MINIMAX(S,Depth+1,PLAYER_B) Jeśli VALUE > T_VALUE to VALUE:=T_VALUE PATH:=R+T_PATH b) Player=PLAYER_B to wykonaj: PATH:=NULL VALUE:=THE_WORSE; Dla każdego stanu S z SUCCESSORS będącego wynikiem ruchu R wykonaj: (T_VALUE,T_PATH):=MINIMAX(S,Depth+1,PLAYER_A) Jeśli VALUE < T_VALUE to VALUE:=T_VALUE PATH:=R+T_PATH 5. Zwróć strukturę VALUE PATH 6

Algorytm został przedstawiony wyjątkowo nie w postaci ogólnej aby można było zauważyć momenty wybierania wartości minimalnej lub maksymalne. Dodatkowo jest to postać odpowiednia dla gracza A. Chcąc użyć go dla gracza B należy zamienić wystąpienia PLAYER_A i PLAYER_B na PLAYER_B i PLAYER_A. Pozostał jeszcze technicznych "drobiazg": jak TO wywolac? Popronuje tak: 1. Generujemy wszystkie możliwe ruchy dla PLAYER_A jakie może wykonać dla bieżącego układu planszy. 2. Dla każdego ruchu wygenerowanego w poprzednik kroku wywołujemy MINIMAX(kolejny_wygenerowany_ruch,1,PLAYER_A). 3. Z wartości zwróconych przez wszystkie wywolanie minimax-u wybieramy największą. Zadanie. Zadanie tym razem polega na napisaniu gry, w której poczynaniami jednego z graczy steruje komputer. Kolejny ruch do wykonania przez komputer znajdowany ma być oczywiście w oparciu o przedstawiony algorytm. Zasady gry są następujace 1. Gramy na planszy podobnej do planszy szachowej. Rozmiar dowolny, ale nie mniejszy niż 8x8 (nie musi to być kwadrat). 2. Wszystkie pola mają jednakowy kolor. 3. Dwóch graczy posługuje się pionkami dwóch różnych kolorów. 4. Na każdym polu może stać tylko jeden pionek. 5. Początkowo na planszy każdy z graczy ma po jednym pionku; ustawione one są w przeciwległych rogach planszy. 6. Sąsiedztwem pionka nazywamy wszystkie 8 pól, które bezpośrednio do niego przylegają (krzyżyki na rysunku). 7. Możliwe są dwa rodzaje ruchów: 7

Rozmnożenie: przejście z pola bieżącego na sąsiednie polegające na postawieniu na sąsiednim polu pionka. Przeskok: przejście z pola bieżącego na pole oddalone o 1 pole. 8. Ruch możliwy jest w pionie i poziomie (jak ktoś chce może także dodać skosy). 9. Podczas fazy ruchu jednego z graczy wszystkie pionki przeciwnika, które znajdą się w otoczeniu przemieszczonego pionka zmieniają kolor na kolor wykonującego ruch. 10. Celem gry jest zdobycie przewagi w postaci większej liczby pionków na planszy. Gra toczy się do momentu zapełnienia wszystkich pól na planszy lub niemożności wykonania posuniecia przez jednego z graczy. 8