Programowanie gier logicznych

Podobne dokumenty
Praktyczne aspekty programowania gier logicznych. Piotr Beling

Wyznaczanie strategii w grach

Algorytmy dla gier dwuosobowych

Heurystyki. Strategie poszukiwań

Heurystyczne przeszukiwanie grafów gier dwuosobowych

TEORIA GIER DEFINICJA (VON NEUMANN, MORGENSTERN) GRA. jednostek (graczy) znajdujących się w sytuacji konfliktowej (konflikt interesów),w

Wykład 7 i 8. Przeszukiwanie z adwersarzem. w oparciu o: S. Russel, P. Norvig. Artificial Intelligence. A Modern Approach

Tworzenie gier na urządzenia mobilne

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Sztuczna Inteligencja i Systemy Doradcze

MODELOWANIE RZECZYWISTOŚCI

Luty 2001 Algorytmy (4) 2000/2001

MODELOWANIE RZECZYWISTOŚCI

Alfa-beta Ulepszenie minimax Liczba wierzchołk ow w drzewie gry. maksymalnie wd. minimalnie wbd/2c + wdd/2e Algorytmy przeszukiwania drzewa gry 5

Marcel Stankowski Wrocław, 23 czerwca 2009 INFORMATYKA SYSTEMÓW AUTONOMICZNYCH

Partition Search i gry z niezupełną informacją

Heurystyczne przeszukiwanie grafów w gier dwuosobowych

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

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

Podstawy sztucznej inteligencji

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

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

Paradygmaty programowania

Porządek symetryczny: right(x)

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

WHILE (wyrażenie) instrukcja;

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

WHILE (wyrażenie) instrukcja;

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Teoria gier. prof. UŚ dr hab. Mariusz Boryczka. Wykład 4 - Gry o sumie zero. Instytut Informatyki Uniwersytetu Śląskiego

Algorytmy i Struktury Danych, 9. ćwiczenia

Wstęp do Sztucznej Inteligencji

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

Drzewa poszukiwań binarnych

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Techniki sztucznej inteligencji w programach grających

SZTUCZNA INTELIGENCJA

Rozwiązywanie problemów metodą przeszukiwania

Programowanie w VB Proste algorytmy sortowania

Heurystyczne metody przeszukiwania

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Analiza algorytmów zadania podstawowe

Algorytmy i struktury danych

Algorytmy mrówkowe. H. Bednarz. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie Inteligentne systemy informatyczne

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Listy, kolejki, stosy

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Teoria gier. dr Przemysław Juszczuk. Wykład 2 - Gry o sumie zero. Instytut Informatyki Uniwersytetu Śląskiego

Metody przeszukiwania

Rekurencja (rekursja)

Podstawy Sztucznej Inteligencji (PSZT)

Sortowanie topologiczne skierowanych grafów acyklicznych

SID Wykład 4 Gry Wydział Matematyki, Informatyki i Mechaniki UW

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Matematyczne Podstawy Informatyki

Optymalizacja. Przeszukiwanie lokalne

1. Eliminuje się ze zbioru potencjalnych zmiennych te zmienne dla których korelacja ze zmienną objaśnianą jest mniejsza od krytycznej:

Wprowadzenie do algorytmiki

Wysokość drzewa Głębokość węzła

1 Wprowadzenie do algorytmiki

Propozycje tematów zadań

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

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Sztuczna Inteligencja i Systemy Doradcze

Matematyczne Podstawy Informatyki

Metody Metody, parametry, zwracanie wartości

Przykładowe B+ drzewo

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Podstawy Programowania Algorytmy i programowanie

Wykład 2. Drzewa poszukiwań binarnych (BST)

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Ekstrema globalne funkcji

Mechanizm wyboru następnego wierzchołka w grafie

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Metoda Tablic Semantycznych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

AiSD zadanie trzecie

Uczenie ze wzmocnieniem aplikacje

Algorytmika i pseudoprogramowanie

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Analiza konstrukcji zawierających wskaźniki. Piotr Błaszyński

Wyszukiwanie w BST Minimalny i maksymalny klucz. Wyszukiwanie w BST Minimalny klucz. Wyszukiwanie w BST - minimalny klucz Wersja rekurencyjna

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Algorytmy z powrotami. Algorytm minimax

Elementy inteligencji obliczeniowej

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

Programowanie dynamiczne i algorytmy zachłanne

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Planowanie drogi robota, algorytm A*

Algorytmy zrandomizowane

WPROWADZENIE DO SZTUCZNEJ INTELIGENCJI

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

Transkrypt:

Programowanie gier logicznych Piotr Beling Instytut Informatyki Politechnika Łódzka 25 marca 2007

Rozważane gry logiczne dwuosobowe- konflikt interesów występuje pomiędzy dwoma uczestnikami deterministyczne- bez czynnika losowego z pełną informacją- gracze posiadają pełną informację na tematstanuwjakimznajdujesięgra o sumie zerowej- suma wypłat(miar zwycięstwa) graczy wynosi zero Przykłady szachy, warcaby, GO, othello, kółko i krzyżyk

Rozważane gry logiczne dwuosobowe- konflikt interesów występuje pomiędzy dwoma uczestnikami deterministyczne- bez czynnika losowego z pełną informacją- gracze posiadają pełną informację na tematstanuwjakimznajdujesięgra o sumie zerowej- suma wypłat(miar zwycięstwa) graczy wynosi zero Przykłady szachy, warcaby, GO, othello, kółko i krzyżyk

Rozważane gry logiczne dwuosobowe- konflikt interesów występuje pomiędzy dwoma uczestnikami deterministyczne- bez czynnika losowego z pełną informacją- gracze posiadają pełną informację na tematstanuwjakimznajdujesięgra o sumie zerowej- suma wypłat(miar zwycięstwa) graczy wynosi zero Przykłady szachy, warcaby, GO, othello, kółko i krzyżyk

Rozważane gry logiczne dwuosobowe- konflikt interesów występuje pomiędzy dwoma uczestnikami deterministyczne- bez czynnika losowego z pełną informacją- gracze posiadają pełną informację na tematstanuwjakimznajdujesięgra o sumie zerowej- suma wypłat(miar zwycięstwa) graczy wynosi zero Przykłady szachy, warcaby, GO, othello, kółko i krzyżyk

Rozważane gry logiczne dwuosobowe- konflikt interesów występuje pomiędzy dwoma uczestnikami deterministyczne- bez czynnika losowego z pełną informacją- gracze posiadają pełną informację na tematstanuwjakimznajdujesięgra o sumie zerowej- suma wypłat(miar zwycięstwa) graczy wynosi zero Przykłady szachy, warcaby, GO, othello, kółko i krzyżyk

Rozważane gry logiczne dwuosobowe- konflikt interesów występuje pomiędzy dwoma uczestnikami deterministyczne- bez czynnika losowego z pełną informacją- gracze posiadają pełną informację na tematstanuwjakimznajdujesięgra o sumie zerowej- suma wypłat(miar zwycięstwa) graczy wynosi zero Przykłady szachy, warcaby, GO, othello, kółko i krzyżyk

Gra jako graf przepisy gry charakteryzują pewien skierowany graf(dalej nazywany grafem gry) węzły grafu gry utożsamiamy z stanami gry następnikami każdego węzła(stanu) w grafie są węzły(stany) osiągalne z niego poprzez wykonanie jednego ruchu gracze wykonują ruchy na przemian(następnikami węzła są stany w których ruch należy do przeciwnika) stany końcowe(dla których przepisy definiują wypłatę) charakteryzuje brak następników

Gra jako graf przepisy gry charakteryzują pewien skierowany graf(dalej nazywany grafem gry) węzły grafu gry utożsamiamy z stanami gry następnikami każdego węzła(stanu) w grafie są węzły(stany) osiągalne z niego poprzez wykonanie jednego ruchu gracze wykonują ruchy na przemian(następnikami węzła są stany w których ruch należy do przeciwnika) stany końcowe(dla których przepisy definiują wypłatę) charakteryzuje brak następników

Gra jako graf przepisy gry charakteryzują pewien skierowany graf(dalej nazywany grafem gry) węzły grafu gry utożsamiamy z stanami gry następnikami każdego węzła(stanu) w grafie są węzły(stany) osiągalne z niego poprzez wykonanie jednego ruchu gracze wykonują ruchy na przemian(następnikami węzła są stany w których ruch należy do przeciwnika) stany końcowe(dla których przepisy definiują wypłatę) charakteryzuje brak następników

Gra jako graf przepisy gry charakteryzują pewien skierowany graf(dalej nazywany grafem gry) węzły grafu gry utożsamiamy z stanami gry następnikami każdego węzła(stanu) w grafie są węzły(stany) osiągalne z niego poprzez wykonanie jednego ruchu gracze wykonują ruchy na przemian(następnikami węzła są stany w których ruch należy do przeciwnika) stany końcowe(dla których przepisy definiują wypłatę) charakteryzuje brak następników

Gra jako graf przepisy gry charakteryzują pewien skierowany graf(dalej nazywany grafem gry) węzły grafu gry utożsamiamy z stanami gry następnikami każdego węzła(stanu) w grafie są węzły(stany) osiągalne z niego poprzez wykonanie jednego ruchu gracze wykonują ruchy na przemian(następnikami węzła są stany w których ruch należy do przeciwnika) stany końcowe(dla których przepisy definiują wypłatę) charakteryzuje brak następników

Przykładowy graf gry. Który ruch należy wykonać? 7 5 9 2 11 1-2 -1

Przykładowe drzewo poszukiwań algorytmu Min-Max 5 max 5 min 1 min -2 min 7 5 9 2 11 1-2 -1

Algorytm Min-Max. Czy warunek stopu jest wystarczający? 1 int MinMax(Stan S) { 2 vector <Stan>N= nast(s); //następnikis 3 if (N== ) 4 return wyplata(s, G); //wypłatagraczag 5 int result =MinMax(N[0]); 6 if (S.czyj ruch ==G) { //szukamymaksimum: 7 for (int i = 1; i < N ; i++) { 8 int val =MinMax(N[i]); 9 if (val > result) result = val; 10 } 11 } else { //szukamyminimum: 12 for (int i = 1; i < N ; i++) { 13 int val =MinMax(N[i]); 14 if (val < result) result = val; 15 } 16 } 17 return result; 18 }

Algorytm Min-Max z ograniczeniem głębokości 1 int MinMax(Stan S, int Depth) { 2 if (Depth== 0) return ocena G (S); 3 vector <Stan>N= nast(s); 4 if (N== ) return wyplata(s, G); 5 int result =MinMax(N[0], Depth 1); 6 if (S.czyj ruch ==G) { //szukamymaksimum: 7 for (int i = 1; i < N ; i++) { 8 int val =MinMax(N[i], Depth 1); 9 if (val > result) result = val; 10 } 11 } else { //szukamyminimum: 12 for (int i = 1; i < N ; i++) { 13 int val =MinMax(N[i], Depth 1); 14 if (val < result) result = val; 15 } 16 } 17 return result; 18 }

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Funkcjaoceniająca(ocena G (S)) aproksymuje MinMax(S) jest obliczana na podstawie statycznych cech stanu S(bez przewidywania ruchów), np. w warcabach może ona uwzględniać przewagę w ilości posiadanych pionów lub damek, odległość pionów od linii promocji, itd. może być postaci(przykładowo): (wwiększościprogramów)ocena(s)= C 1 i=0 w i C i (S)gdzie w i Rdlai=0,1,..., C 1towagai-tejcechy(C i ) sieci neuronowej cechy i współczynniki mogą być dobierane: (w większości programów) ręcznie automatycznie(np. metody: Samuela, różnic w czasie TD(λ), Generalized Linear Evaluation Model(GLEM), wstecznej propagacji błędu dla sieci neuronowych)

Algorytm Nega-Max- zasada działania Zapis algorytmu Min-Max można ujednolić korzystając ze spostrzeżenia, że: a 1,...,a N R:min(a 1,...,a N )= max( a 1,..., a N ) We wszystkich węzłach typu minimum można obliczać maksimum z wartości przeciwnych do tych zwróconych przez podrzędne wywołania rekurencyjne. Wywołanie nadrzędne (które jest dla węzła typu maksimum) dołoży minus do zwróconego wyniku. Nega-Max ocenia węzeł z punktu widzenia gracza idącego (analogicznie muszą być też zdefiniowane funkcje wyplata iocena).

Algorytm Nega-Max- zasada działania Zapis algorytmu Min-Max można ujednolić korzystając ze spostrzeżenia, że: a 1,...,a N R:min(a 1,...,a N )= max( a 1,..., a N ) We wszystkich węzłach typu minimum można obliczać maksimum z wartości przeciwnych do tych zwróconych przez podrzędne wywołania rekurencyjne. Wywołanie nadrzędne (które jest dla węzła typu maksimum) dołoży minus do zwróconego wyniku. Nega-Max ocenia węzeł z punktu widzenia gracza idącego (analogicznie muszą być też zdefiniowane funkcje wyplata iocena).

Algorytm Nega-Max- zasada działania Zapis algorytmu Min-Max można ujednolić korzystając ze spostrzeżenia, że: a 1,...,a N R:min(a 1,...,a N )= max( a 1,..., a N ) We wszystkich węzłach typu minimum można obliczać maksimum z wartości przeciwnych do tych zwróconych przez podrzędne wywołania rekurencyjne. Wywołanie nadrzędne (które jest dla węzła typu maksimum) dołoży minus do zwróconego wyniku. Nega-Max ocenia węzeł z punktu widzenia gracza idącego (analogicznie muszą być też zdefiniowane funkcje wyplata iocena).

Algorytm Nega-Max- listing 1 //Zwraca przewidywaną wypłatę gracza do którego należy ruch w S 2 //S- aktualny stan gry, Depth- głębokość poszukiwań 3 int NegaMax(Stan S, int Depth) { 4 if (Depth== 0) 5 return ocena(s); 6 vector<stan>n= nast(s); 7 if (N== ) 8 return wyplata(s); 9 int result = ; 10 //szukamy maksimum z ocen kolejnych pozycji 11 for (int i = 0; i < N ; i++) { 12 int val = NegaMax(N[i], Depth 1); 13 if (val > result) 14 result = val; 15 } 16 return result; 17 }

Przykładowe drzewo poszukiwań algorytmu Nega-Max 5 max - - - -5-1 2 max max max - - - - - - - - 7 5 9 2 11 1-2 -1

Przykładowe drzewo poszukiwań algorytmu α-β 5 max - - - -5 max -2 max 2 max - - - - - 7 5 9 2?? -2?

algorytm α-β- zasada działania Jeśli oznaczymy przez G zawodnika do którego należy ruch wstaniesto: α jest największą wartością jaką osiągną dotychczas G, tzn. mógł on wcześniej wykonać posunięcie, które w efekcie doprowadziłoby grę do stanu o ocenie nie mniejszej niż α β jest najmniejszą wartością(z punktu widzenia G) do jakiej mógł doprowadzić rywal gracza G Jeżeli bieżąca wartość oceny stanu S osiągnie lub przekroczy β, to przeszukanie kolejnych następników S nie ma sensu, gdyż rywal G będzie wolał wykonać wcześniej ruch, który doprowadzi grę dostanuoocenieβzamiastdos.możenastąpićodcięcieijako wartość stanu S można zwrócić β.

algorytm α-β- listing 1 //Zwraca przewidywaną wypłatę gracza do którego należy ruch w S 2 //S- aktualny stan gry, Depth- głębokość poszukiwań 3 //α, β- największa i najmniejsza znaleziona wcześniej wartość 4 int AlfaBeta(Stan S, int Depth, int α, int β) { 5 if (Depth== 0) return ocena(s); 6 vector<stan>n= nast(s); 7 if (N== ) return wyplata(s); 8 sort(n); //krok opcjonalny 9 for (int i = 0; i < N ; i++) { //szukamymaksimum 10 int val = AlfaBeta(N[i], Depth 1, β, α); 11 if (val β) 12 return β; //β cięcie 13 if (val >α) 14 α= val; //poprawa maksimum 15 } 16 return α; 17 }

twierdzenie o związku α-β z Nega-Max Niechd 0,α<β,S-stangry.Oznaczmyponadto ab=alfabeta(s,d,α,β)orazn=negamax(s,d).wtedy możemy wyróżnić trzy sytuacje: (succes)α<ab<β ab=n (failinglow)α ab ab n (failinghigh)β ab ab n Wniosek z implikacji(succes) S S,d 0: AlfaBeta(S,d,, )=NegaMax(S,d) co określa możliwość bezpośredniego wykorzystania α-β do znalezienia wartości negamaksowej stanu gry.

twierdzenie o związku α-β z Nega-Max Niechd 0,α<β,S-stangry.Oznaczmyponadto ab=alfabeta(s,d,α,β)orazn=negamax(s,d).wtedy możemy wyróżnić trzy sytuacje: (succes)α<ab<β ab=n (failinglow)α ab ab n (failinghigh)β ab ab n Wniosek z implikacji(succes) S S,d 0: AlfaBeta(S,d,, )=NegaMax(S,d) co określa możliwość bezpośredniego wykorzystania α-β do znalezienia wartości negamaksowej stanu gry.

twierdzenie o związku α-β z Nega-Max Niechd 0,α<β,S-stangry.Oznaczmyponadto ab=alfabeta(s,d,α,β)orazn=negamax(s,d).wtedy możemy wyróżnić trzy sytuacje: (succes)α<ab<β ab=n (failinglow)α ab ab n (failinghigh)β ab ab n Wniosek z implikacji(succes) S S,d 0: AlfaBeta(S,d,, )=NegaMax(S,d) co określa możliwość bezpośredniego wykorzystania α-β do znalezienia wartości negamaksowej stanu gry.

twierdzenie o związku α-β z Nega-Max Niechd 0,α<β,S-stangry.Oznaczmyponadto ab=alfabeta(s,d,α,β)orazn=negamax(s,d).wtedy możemy wyróżnić trzy sytuacje: (succes)α<ab<β ab=n (failinglow)α ab ab n (failinghigh)β ab ab n Wniosek z implikacji(succes) S S,d 0: AlfaBeta(S,d,, )=NegaMax(S,d) co określa możliwość bezpośredniego wykorzystania α-β do znalezienia wartości negamaksowej stanu gry.

twierdzenie o związku α-β z Nega-Max Niechd 0,α<β,S-stangry.Oznaczmyponadto ab=alfabeta(s,d,α,β)orazn=negamax(s,d).wtedy możemy wyróżnić trzy sytuacje: (succes)α<ab<β ab=n (failinglow)α ab ab n (failinghigh)β ab ab n Wniosek z implikacji(succes) S S,d 0: AlfaBeta(S,d,, )=NegaMax(S,d) co określa możliwość bezpośredniego wykorzystania α-β do znalezienia wartości negamaksowej stanu gry.

algorytm α-β- złożoność wielkość drzewa poszukiwań(i ilość β-odcięć) ściśle uzależniona od kolejności rozpatrzenia ruchów O(B d )wnajgorszymwypadku(gdynienastąpiżadne odcięcie), taka jak dla Nega-Max O(B d/2 )wnajlepszymprzypadku(gdynajlepszyzmożliwych ruchów zawsze zostanie sprawdzony jako pierwszy) O(B 3d/4 )oczekiwana(dlaruchówwykonanychwlosowej kolejności) Objaśnienia symboli d głębokość poszukiwań B średni czynnik rozgałęzienia drzewa poszukiwań

algorytm α-β- złożoność wielkość drzewa poszukiwań(i ilość β-odcięć) ściśle uzależniona od kolejności rozpatrzenia ruchów O(B d )wnajgorszymwypadku(gdynienastąpiżadne odcięcie), taka jak dla Nega-Max O(B d/2 )wnajlepszymprzypadku(gdynajlepszyzmożliwych ruchów zawsze zostanie sprawdzony jako pierwszy) O(B 3d/4 )oczekiwana(dlaruchówwykonanychwlosowej kolejności) Objaśnienia symboli d głębokość poszukiwań B średni czynnik rozgałęzienia drzewa poszukiwań

algorytm α-β- złożoność wielkość drzewa poszukiwań(i ilość β-odcięć) ściśle uzależniona od kolejności rozpatrzenia ruchów O(B d )wnajgorszymwypadku(gdynienastąpiżadne odcięcie), taka jak dla Nega-Max O(B d/2 )wnajlepszymprzypadku(gdynajlepszyzmożliwych ruchów zawsze zostanie sprawdzony jako pierwszy) O(B 3d/4 )oczekiwana(dlaruchówwykonanychwlosowej kolejności) Objaśnienia symboli d głębokość poszukiwań B średni czynnik rozgałęzienia drzewa poszukiwań

algorytm α-β- złożoność wielkość drzewa poszukiwań(i ilość β-odcięć) ściśle uzależniona od kolejności rozpatrzenia ruchów O(B d )wnajgorszymwypadku(gdynienastąpiżadne odcięcie), taka jak dla Nega-Max O(B d/2 )wnajlepszymprzypadku(gdynajlepszyzmożliwych ruchów zawsze zostanie sprawdzony jako pierwszy) O(B 3d/4 )oczekiwana(dlaruchówwykonanychwlosowej kolejności) Objaśnienia symboli d głębokość poszukiwań B średni czynnik rozgałęzienia drzewa poszukiwań

Sposoby redukowania wielkości drzewa poszukiwań porządkowanie ruchów(by spowodować większą ilość β-cięć) unikajanie redundantnych obliczeń(różne sekwencje ruchów mogą prowadzić do tej samej sytuacji, co nie musi oznaczać konieczności wielokrotnego jej sprawdzania) manipulowanie oknem(α, β) głębsze przeszukiwanie ciekawszych gałęzi(szczędzenie czasu na mniej obiecujących) wykonywanie ruchów z bazy Przykładowe metody heurystyka historyczna, heurystyka ruchów morderców, iteracyjne pogłębianie, tablica transpozycji

Sposoby redukowania wielkości drzewa poszukiwań porządkowanie ruchów(by spowodować większą ilość β-cięć) unikajanie redundantnych obliczeń(różne sekwencje ruchów mogą prowadzić do tej samej sytuacji, co nie musi oznaczać konieczności wielokrotnego jej sprawdzania) manipulowanie oknem(α, β) głębsze przeszukiwanie ciekawszych gałęzi(szczędzenie czasu na mniej obiecujących) wykonywanie ruchów z bazy Przykładowe metody tablica transpozycji

Sposoby redukowania wielkości drzewa poszukiwań porządkowanie ruchów(by spowodować większą ilość β-cięć) unikajanie redundantnych obliczeń(różne sekwencje ruchów mogą prowadzić do tej samej sytuacji, co nie musi oznaczać konieczności wielokrotnego jej sprawdzania) manipulowanie oknem(α, β) głębsze przeszukiwanie ciekawszych gałęzi(szczędzenie czasu na mniej obiecujących) wykonywanie ruchów z bazy Przykładowe metody algorytm aspirującego okna, Principal Variation Search, rodzina algorytmów MTD(ang. Memory-enhanced Test Driver)

Sposoby redukowania wielkości drzewa poszukiwań porządkowanie ruchów(by spowodować większą ilość β-cięć) unikajanie redundantnych obliczeń(różne sekwencje ruchów mogą prowadzić do tej samej sytuacji, co nie musi oznaczać konieczności wielokrotnego jej sprawdzania) manipulowanie oknem(α, β) głębsze przeszukiwanie ciekawszych gałęzi(szczędzenie czasu na mniej obiecujących) wykonywanie ruchów z bazy Przykładowe metody Quiescence Search, ProbCut, Multi-ProbCut

Sposoby redukowania wielkości drzewa poszukiwań porządkowanie ruchów(by spowodować większą ilość β-cięć) unikajanie redundantnych obliczeń(różne sekwencje ruchów mogą prowadzić do tej samej sytuacji, co nie musi oznaczać konieczności wielokrotnego jej sprawdzania) manipulowanie oknem(α, β) głębsze przeszukiwanie ciekawszych gałęzi(szczędzenie czasu na mniej obiecujących) wykonywanie ruchów z bazy Przykładowe metody baza debiutów, baza końcówek

Iteracyjne pogłębianie polega na wielokrotnym, coraz głębszym przeszukiwaniu grafu gry(wywoływaniu α-β), dopóty, dopóki dostatecznie dużo czasu pozostało na wykonanie ruchu pozwala dostosować głębokość poszukiwań do czasu jakim dysponujemy na wykonanie ruchu uporządkowanie następników badanego stanu według ostatnio uzyskanych ocen, tak, by najbardziej obiecujące ruchy były sprawdzane na początku powoduje zwiększenie ilości β-cięć w kolejnych wywołaniach α-β(iteracjach) (algorytm aspirującego okna) okno(α, β) można ograniczyć do pewnego otoczenia wartości znalezionej w poprzedniej iteracji(jeśli odpowiedź nie zmieści się w tym otoczeniu to trzeba powtórzyć obliczenia dla danej głębokości w większym oknie)

Iteracyjne pogłębianie polega na wielokrotnym, coraz głębszym przeszukiwaniu grafu gry(wywoływaniu α-β), dopóty, dopóki dostatecznie dużo czasu pozostało na wykonanie ruchu pozwala dostosować głębokość poszukiwań do czasu jakim dysponujemy na wykonanie ruchu uporządkowanie następników badanego stanu według ostatnio uzyskanych ocen, tak, by najbardziej obiecujące ruchy były sprawdzane na początku powoduje zwiększenie ilości β-cięć w kolejnych wywołaniach α-β(iteracjach) (algorytm aspirującego okna) okno(α, β) można ograniczyć do pewnego otoczenia wartości znalezionej w poprzedniej iteracji(jeśli odpowiedź nie zmieści się w tym otoczeniu to trzeba powtórzyć obliczenia dla danej głębokości w większym oknie)

Iteracyjne pogłębianie polega na wielokrotnym, coraz głębszym przeszukiwaniu grafu gry(wywoływaniu α-β), dopóty, dopóki dostatecznie dużo czasu pozostało na wykonanie ruchu pozwala dostosować głębokość poszukiwań do czasu jakim dysponujemy na wykonanie ruchu uporządkowanie następników badanego stanu według ostatnio uzyskanych ocen, tak, by najbardziej obiecujące ruchy były sprawdzane na początku powoduje zwiększenie ilości β-cięć w kolejnych wywołaniach α-β(iteracjach) (algorytm aspirującego okna) okno(α, β) można ograniczyć do pewnego otoczenia wartości znalezionej w poprzedniej iteracji(jeśli odpowiedź nie zmieści się w tym otoczeniu to trzeba powtórzyć obliczenia dla danej głębokości w większym oknie)

Iteracyjne pogłębianie polega na wielokrotnym, coraz głębszym przeszukiwaniu grafu gry(wywoływaniu α-β), dopóty, dopóki dostatecznie dużo czasu pozostało na wykonanie ruchu pozwala dostosować głębokość poszukiwań do czasu jakim dysponujemy na wykonanie ruchu uporządkowanie następników badanego stanu według ostatnio uzyskanych ocen, tak, by najbardziej obiecujące ruchy były sprawdzane na początku powoduje zwiększenie ilości β-cięć w kolejnych wywołaniach α-β(iteracjach) (algorytm aspirującego okna) okno(α, β) można ograniczyć do pewnego otoczenia wartości znalezionej w poprzedniej iteracji(jeśli odpowiedź nie zmieści się w tym otoczeniu to trzeba powtórzyć obliczenia dla danej głębokości w większym oknie)

Tablica transpozycji Struktura w której, dla każdego odwiedzonego węzła(stanu gry S), zapisujemy: wartość(ocenę) stanu gry S głębokośćnajakąbadanybyłstans informację, czy zapisana wartość jest dokładna, czy też jest górną lub dolną granicą(wynikłą z β-odcięć) tej dokładnej opcjonalnie: wskazanie najlepszego następnika S opcjonalnie: informacja czy dany węzeł drzewa poszukiwań leży na ścieżce od korzenia do węzła aktualnie sprawdzanego Uwagi tablica transpozycji najczęściej realizowana jest za pomocą tablicy haszującej z adresowaniem otwartym

Tablica transpozycji Struktura w której, dla każdego odwiedzonego węzła(stanu gry S), zapisujemy: wartość(ocenę) stanu gry S głębokośćnajakąbadanybyłstans informację, czy zapisana wartość jest dokładna, czy też jest górną lub dolną granicą(wynikłą z β-odcięć) tej dokładnej opcjonalnie: wskazanie najlepszego następnika S opcjonalnie: informacja czy dany węzeł drzewa poszukiwań leży na ścieżce od korzenia do węzła aktualnie sprawdzanego Uwagi pozwoli to na odczytanie wartości S z tablicy zamiast ponownego jego przeszukiwania...

Tablica transpozycji Struktura w której, dla każdego odwiedzonego węzła(stanu gry S), zapisujemy: wartość(ocenę) stanu gry S głębokośćnajakąbadanybyłstans informację, czy zapisana wartość jest dokładna, czy też jest górną lub dolną granicą(wynikłą z β-odcięć) tej dokładnej opcjonalnie: wskazanie najlepszego następnika S opcjonalnie: informacja czy dany węzeł drzewa poszukiwań leży na ścieżce od korzenia do węzła aktualnie sprawdzanego Uwagi...jeśli tylko został przeszukany odpowiednio głęboko...

Tablica transpozycji Struktura w której, dla każdego odwiedzonego węzła(stanu gry S), zapisujemy: wartość(ocenę) stanu gry S głębokośćnajakąbadanybyłstans informację, czy zapisana wartość jest dokładna, czy też jest górną lub dolną granicą(wynikłą z β-odcięć) tej dokładnej opcjonalnie: wskazanie najlepszego następnika S opcjonalnie: informacja czy dany węzeł drzewa poszukiwań leży na ścieżce od korzenia do węzła aktualnie sprawdzanego Uwagi...i w odpowiednim oknie

Tablica transpozycji Struktura w której, dla każdego odwiedzonego węzła(stanu gry S), zapisujemy: wartość(ocenę) stanu gry S głębokośćnajakąbadanybyłstans informację, czy zapisana wartość jest dokładna, czy też jest górną lub dolną granicą(wynikłą z β-odcięć) tej dokładnej opcjonalnie: wskazanie najlepszego następnika S opcjonalnie: informacja czy dany węzeł drzewa poszukiwań leży na ścieżce od korzenia do węzła aktualnie sprawdzanego Uwagi jeśli nawet S nie został sprawdzony dostatecznie głęboko poprzednim razem, to możemy zacząć przeszukiwanie od potencjalnie najlepszego jego następnika(i liczyć na dużą ilość β-cięć)

Tablica transpozycji Struktura w której, dla każdego odwiedzonego węzła(stanu gry S), zapisujemy: wartość(ocenę) stanu gry S głębokośćnajakąbadanybyłstans informację, czy zapisana wartość jest dokładna, czy też jest górną lub dolną granicą(wynikłą z β-odcięć) tej dokładnej opcjonalnie: wskazanie najlepszego następnika S opcjonalnie: informacja czy dany węzeł drzewa poszukiwań leży na ścieżce od korzenia do węzła aktualnie sprawdzanego Uwagi umożliwia to wykrywanie powtórek sytuacji(pętli w grafie gry)

Quiescence Search polega na unikaniu statycznej oceny stanów niecichych (niespokojnych) stan niecichych to taki którego statyczna ocena może znacznie różnić się od dynamicznej, np. w szachach lub warcabach może być to sytuacja w której strona idąca może wykonać bicie(zmieniając ważną cechę stanu jaką jest przewaga materialna) statyczna ocena zostaje zastąpiona oceną dynamiczną, tj. dalszym pogłębieniem danej gałęzi drzewa poszukiwań

Quiescence Search polega na unikaniu statycznej oceny stanów niecichych (niespokojnych) stan niecichych to taki którego statyczna ocena może znacznie różnić się od dynamicznej, np. w szachach lub warcabach może być to sytuacja w której strona idąca może wykonać bicie(zmieniając ważną cechę stanu jaką jest przewaga materialna) statyczna ocena zostaje zastąpiona oceną dynamiczną, tj. dalszym pogłębieniem danej gałęzi drzewa poszukiwań

Quiescence Search polega na unikaniu statycznej oceny stanów niecichych (niespokojnych) stan niecichych to taki którego statyczna ocena może znacznie różnić się od dynamicznej, np. w szachach lub warcabach może być to sytuacja w której strona idąca może wykonać bicie(zmieniając ważną cechę stanu jaką jest przewaga materialna) statyczna ocena zostaje zastąpiona oceną dynamiczną, tj. dalszym pogłębieniem danej gałęzi drzewa poszukiwań

Przykładowe porównanie efektywności algorytmów przeszukiwania(dla programu Little Polish grającego w warcaby klasyczne) zastosowane algorytmy średnia ilość węzłów odwiedzonych przy poszukiwaniu na głębokość 6 10 14 α-β+iterdeep 2423 116790 4818576 PVS 1946 87873 3537031 α-β 1706 82428 3522847 α-β+tt 1374 42448 1037559 α-β+iterdeep+tt 1524 29708 427175 PVS+iterdeep+TT 1512 29082 417349 PVS+AspWin+TT 1510 29043 416945 PVS+AspWin+TT+ED5 1501 28683 412156

Zależność wielkości drzewa poszukiwań od jego wysokości 10000 wielkość drzewa poszukiwań (w tysiącach węzłów) 1000 100 10 1 0.1 α-β + iterdeep α-β α-β+tt α-β+iterdeep+tt 5 6 7 8 9 10 11 12 13 14 głębokość poszukiwań

Literatura Bruce Moreland http://www.seanet.com/ brucemo/topics/topics.htm (WWW) T.A. Marsland Game Tree Searching and Prunning M.N.J.vanKervinckTheDesignandImplementationof the Rookie 2.0 Chess Playing Program(2002, mgr) Aske Plaat Research, Re: Search& RE-SEARCH(1996, dr) Michael Buro From Simple Features to Sophisticated Evaluation Functions(1999) Gerald Tesauro Temporal Difference Learning and TD-Gammon

Literatura Halina Kwaśnicka, Artur Spirydowicz Uczący się komputer. Programowanie gier logicznych.(2004, Wrocław) Artur Michalski Współczesne techniki przeszukiwania grafów gier dwuosobowych(slajdy) Adam Kujawski Programowanie gry w szachy(1994, mgr) Arkadiusz Paterek Modelowanie funkcji oceniającej w szachach(2004, mgr) Piotr Beling Praktyczne aspekty programowania gier logicznych(2006, mgr)