Algorytmy i struktury danych

38
Algorytmy i Algorytmy i struktury danych struktury danych Drzewo stanów gry Klasyfikacja gier Przeglądanie drzew Pozyskiwanie wiedzy Status wybranych gier

description

Algorytmy i struktury danych. Drzewo stanów gry Klasyfikacja gier Przeglądanie drzew Pozyskiwanie wiedzy Status wybranych gier. Drzewo stanów. Stan S 1. zdarzenie A. zdarzenie C. zdarzenie B. S 2. S 3. S 4. D. E. F. S 5. S 6. S 7. I. G. H. S 10. S 8. S 9. Graf stanów. - PowerPoint PPT Presentation

Transcript of Algorytmy i struktury danych

Page 1: Algorytmy i struktury danych

Algorytmy i struktury Algorytmy i struktury danychdanych

Drzewo stanów gry

Klasyfikacja gier

Przeglądanie drzew

Pozyskiwanie wiedzy

Status wybranych gier

Page 2: Algorytmy i struktury danych

Drzewo stanówDrzewo stanów

zdarzenie Czdarzenie B

zdarzenie A

DE

G

F

H I

Stan S1

S2 S3 S4

S5

S6 S7

S8 S9S10

Page 3: Algorytmy i struktury danych

Graf stanówGraf stanów

zdarzenie Czdarzenie B

zdarzenie A

DE

G

F

H I

Stan S1

S2 S3 S4

S5

S6 S7

S8 S9S10

J

Page 4: Algorytmy i struktury danych

Drzewo (graf) gryDrzewo (graf) gry

ruch Cruch B

ruch A

DE

G

F

H I

Sytuacja S1

S2 S3 S4

S5

S6 S7

S8 S9S10

Page 5: Algorytmy i struktury danych

Definicja Definicja n-osobown-osobowejej gr gryy Drzewo topologiczne z wyróżnionym wierzchołkiem A,

nazywanym punktem początkowym. Funkcja wypłaty, która przyporządkowuje każdemu

wierzchołkowi końcowemu pewien wektor n-wymiarowy. Rozbicie zbioru niekońcowych wierzchołków drzewa na n+1

zbiorów S0 , S1, ..... Sn , zwany zbiorami posunięć graczy. Funkcję za pomocą, której możemy określić czy dany wierzchołek

topologicznego drzewa gry jest wierzchołkiem końcowym

Mówimy, że gra jest skończona, jeśli jej dendryt zawiera tylko skończoną ilość wierzchołków. Większość gier towarzyskich to gry skończone.

Page 6: Algorytmy i struktury danych

Definicja Definicja n-osobown-osobowejej gr gry cd.y cd. Rodzinę rozkładów prawdopodobieństwa, określonych dla

każdego wierzchołka ze zbioru S0 , na zbiorze wierzchołków następujących bezpośrednio po nim.

Podrozbicie każdego ze zbiorów Si , dla i=1,...n, na zbiory Sij zwane zbiorami informacyjnymi, takie że każde dwa wierzchołki z tego samego zbioru informacyjnego mają tę samą ilość wierzchołków następującą bezpośrednio po nich, ponadto żadne z wierzchołków nie następuje po żadnym innym z tego samego zbioru informacyjnego.

Określony dla każdego zbioru informacyjnego Sij zbiór wskaźników Iij wraz z przyporządkowanym każdemu wierzchołkowi X ze zbioru Sij wzajemnie jednoznacznym odwzorowaniem zbioru Iij na zbiór wierzchołków następujących bezpośrednio po X.

Page 7: Algorytmy i struktury danych

Strategia gryStrategia gry Przez czystą strategię i-tego gracza rozumiemy funkcję,

która przyporządkowuje każdemu zbiorowi informa-cyjnemu Si

j i-tego gracza jeden ze wskaźników z Iij .

Strategią mieszaną gracza (ang. mixed strategy) jest rozkład prawdopodobieństwa na zbiorze jego czystych strategii. W przypadku gier skończonych, gdzie gracz ma tylko skończoną liczbę m strategii czystych, strategia mieszana sprowadza się do wektora m-wymiarowego x=(x1,.....,xm) spełniającego warunki:

Page 8: Algorytmy i struktury danych

Przykładowa graPrzykładowa gra A I

II

OR

RRO

(-1,1)(1,-1) (1,-1)

(-1,1)

O

Gracz I wybiera orła (O) lub reszkę (R). Gracz II, nie znając wyboru gracza I, wybiera również orła lub reszkę. Jeśli obydwaj wybrali to samo, gracz II wygrywa złotówkę od gracza I, w przeciwnym przypadku gracz I wygrywa złotówkę od gracza II.

Page 9: Algorytmy i struktury danych

Podział gierPodział gier Liczba graczy – gry mogą się różnić między sobą ilością graczy, przy

czym liczba graczy waha się od 1 do n Bilans gry – wektor wypłaty dla gry o n graczach przyjmuje postać

(p1,...,pn), gdzie pi jest wartością wypłaty przypadającego na gracza i w końcowym wierzchołku drzewa ruchów.

Złożoność gry – o złożoności gry decyduje przede wszystkim rozmiar drzewa gry

Popularność gry – w przypadku tej własności najlepszym kryterium jest liczba aktualnych graczy oraz historia gry.

Trudność gry – o trudności danej gry decyduje potrzeba ciągłego nabywania doświadczenia przez gracza po to by podnosić swój poziom gry.

Kryterium zakończenia: „nagła śmierć” (o/x na nieskończonej planszy) vs. stałe zakończenie (reversi).

Informacje o stanie gry

Page 10: Algorytmy i struktury danych

BadaniaBadania Gry z dwoma graczami oraz brydż. Gry z zerowym bilansem (o sumie zerowej) : w każdym

wierzchołku końcowym drzewa ruchów spełniony jest warunek :

 

Gdzie pi jest wypłatą przypadająca na gracza i. Strata jednego z graczy powoduje tutaj jednoczesny zysk drugiego.

Gry nietrywialne: najlepsza strategia nie daje się otrzymać poprzez matematyczną analizę wszystkich możliwych stanów gry przy wykorzystaniu dostępnych obecnie komputerów.

Gry dobrze znane: uprawia je stosunkowo duża liczba graczy. Gry wymagające doświadczenia: doświadczony gracz ma dużą

przewagę nad graczem początkującym, tj. istnieje wyraźna zależności miedzy doświadczeniem gracza, a szansą zwycięstwa. Co ciekawe dotyczy to równiez gier z czynnikiem losowym np. brydż, trik-trak

01

n

iip

Page 11: Algorytmy i struktury danych

Stan badańStan badań Gry rozwiązane

• Go-Moku

Gry, dla których istnieją programy grające na poziomie najlepszych graczy lub wyższym• tryk-trak, warcaby (64), otello, szachy, brydż

Gry, w których dominują ludzie i prawdopodobnie ten stan nie ulegnie zmianie w najbliższych latach• go

Page 12: Algorytmy i struktury danych

Rozwiązywanie gierRozwiązywanie gier Gry bardzo słabo rozwiązane (ang. ultra-weakly solved):

wszystkie początkowe pozycje mają określoną teoretyczną wartość gry (np. Hex)

Gry słabo rozwiązane (ang. weakly solved): dla wszystkich początkowych pozycji można określić strategię, dzięki której możemy osiągnąć teoretyczny rezultat (przy rozsądnych zasobach obliczeniowych, pamięciowych i czasowych)

Gry mocno rozwiązane (ang. strongly solved): dla wszystkich legalnych pozycji można wyznaczyć strategię pozwalającą osiągnąć teoretyczną wartość.

Page 13: Algorytmy i struktury danych

Programy grająceProgramy grające Głębokie przeszukiwanie (Deep-blue: Deep Blue 32-

procesorowy komputer IBM SP-2, z każdym procesorem połączonych było szesnaście specjalizowanych procesorów szachowych: dwieście milionów szachowych pozycji na sekundę. Głębokość: co najmniej 12 pojedynczych ruchów.

Duży rozmiar pamięci (baza końcówek chinooka - warcaby)

Pozyskiwanie wiedzy (automatyczne np. longistello – othello lub od ekspertów np. komercyjne programy szachowe)

Symulacje (brydż, poker, scrabble) Rozumowanie bez zrozumienia (Proverb: krzyżówki)

Page 14: Algorytmy i struktury danych

MinimaxMinimax1. Określ – głebokość przeszukiwania

2. Dla węzłów oceń sytuację w kategoriach dobrej dla programu (tj. wyższa wartość = lepsza sytuacja)

3. Propaguj sytuację dla węzłów wcześniejszych wybierając odpowiednio

• dla węzła odpowiadającego sytuacji w której wykonuje ruch program największą wartość spośród dzieci węzła

• dla węzła odpowiadającego sytuacji w której wykonuje ruch przeciwnik najmniejszą wartość spośród dzieci węzła

Page 15: Algorytmy i struktury danych

Przeglądanie drzewa gryPrzeglądanie drzewa gryS1

S2 S3 S4

S5 S6 S7 S13S8 S9 S10 S11 S12

Page 16: Algorytmy i struktury danych

Ocena sytuacjiOcena sytuacjiS1

S2 S3 S4

5 3 8 3 0 1 1 0 6 14 6 2 5 4 4 2 7 5 21 8 4 2 5 4 7

S5 S6 S7 S13S8 S9 S10 S11 S12

Page 17: Algorytmy i struktury danych

MinimaxMinimaxS1

S2 S3 S4

5 3 8 3 0 1 1 0 6 14 6 2 5 4 4 2 7 5 21 8 4 2 5 4 7

8S5

4S6

6S7

5S13

8S86S9

2S107S11

7S12

Page 18: Algorytmy i struktury danych

MinimaxMinimax5S1

4 5 2S2 S3 S4

5 3 8 3 0 1 1 0 6 14 6 2 5 4 4 2 7 5 21 8 4 2 5 4 7

8S5

4S6

6S7

5S13

8S86S9

2S107S11

7S12

Page 19: Algorytmy i struktury danych

AlfaBetaAlfaBeta1. Z: Podczas częściowej ewaluacji drzewa określone

zostają pewna wartości graniczne węzła W oznaczające najwyższą/najniższą aktualną wartość

2. Jeżeli podczas ewaliacji potomków w kolejnym poddrzewie napotykamy węzeł podnoszący ocenę W (dla ruchu przeciwnika) lub obniżający ocenę W (dla ruchu programu) ignorujemy całe poddrzewo.

Page 20: Algorytmy i struktury danych

Minimax – alfa-betaMinimax – alfa-beta5S1

4 5 2S2 S3 S4

5 3 8 3 0 1 1 0 6 14 6 2 5 4 4 2 7 5 21 8 4 2 5 4 7

8S5

4S6

6S7

5S13

8S86S9

2S107S11

7S12

Page 21: Algorytmy i struktury danych

UlepszeniaUlepszenia Zapamiętywanie uzyskanych dotychczas informacji – w ten

sposób unikamy powtarzania obliczeń dla tych samych lub podobnych sytuacji występujących w drzewie ruchów.

Zapewnienie odpowiedniego porządku ruchów w drzewie – dzięki temu zwiększa się prawdopodobieństwo wystąpienia najlepszych ruch na początku przeszukiwania danego poziomu drzewa.

Zmniejszanie okna przeszukiwania – początkowe okno przeszukiwania można ustawić na oczekiwaną wartość +/- zakładany/odgadnięty rozmiar okna (standardowo początkowymi wartościami Alfy i Bety są +/ -) co może zdecydowanie zredukować liczbę rozpatrywanych węzłów.

Ustalanie zmiennej głębokości szukania – metody te polegają na dynamicznej zmianie głębokości przeszukiwania drzewa na podstawie, zdobytej do tej pory informacji na temat sytuacji w grze.

Page 22: Algorytmy i struktury danych

SymulacjeSymulacje• Symulator losuje np. rozkład kart i rozgrywa partię. • W ten sposób uzyskujemy pojedynczą wartość

symulacji,która składa się z liczby wziątek.• Cała partia zostaje następnie powtórzona poprzez rozdanie

innego układu kart dla przeciwników. • Badanie statystyczne zostanie wykonane wielokrotnie.• Zgromadzona wiedza pozwoli oszacować najlepsze

zagrania, z których wybieramy teoretycznie najlepsze. Na przykład, jeśli 90% zagrań daną kartą prowadzi do najlepszego rezultatu, gramy tą kartą. W oparciu o takie badania, program może z dużą pewnością stwierdzić zagranie jaką kartą jest najlepsze.

• W programie musi być zaimplementowany algorytm grający, korzystający z pełnej informacji, aby rozgrywać poszczególne przypadki do końca.

Page 23: Algorytmy i struktury danych

Alternatywne podejście Alternatywne podejście SSS* SSS* SSS* (ang. State Space Search). Algorytm typu

best-first, nie sprawdza potomków ostatnio sprawdzanego węzła, lecz rozwija najlepiej oceniane z dotychczas sprawdzanych. Udowodniono, że jest lepszy od alfa-beta pod względem rozmiaru przeglądanego drzewa — każdy węzeł odwiedzany przez SSS* jest też odwiedzany przez alfa-beta, ale nie na odwrót. • Problem: algorytm ten wymaga wykładniczej ilosci

pamieci i dlatego nie jest wykorzystywany w praktyce.

11

n

iii fwFo

Page 24: Algorytmy i struktury danych

Alternatywne podejście Alternatywne podejście B* i PB*B* i PB* B*. Algorytm ten przypisuje pozycjom nie jedną

wartość lecz dwie: optymistyczne i pesymistyczne oszacowanie wartości minimaksowej. Przegląda drzewo aktualizując wartości potomków korzenia do momentu, aż ustali wierzchołek, którego pesymistyczna wartość jest nie mniejsza, niż optymistyczna każdego pozostałego. Róznicą w stosunku do alfa-beta jest to, że B* nie ustala wartości minimaksowej a jedynie znajduje najlepsze posunięcie. • Problem: konstrukcja funkcji oceniającej, która zwraca

wiarygodne optymistyczne i pesymistyczne wartości minimaksowe.

(Probability-based B*). Rozwinieciem algorytmu B*, w którym wartości graniczne zastąpiono rozkładem prawdopodobienstwa.

Page 25: Algorytmy i struktury danych

Algorytm Liczb SpiskowychAlgorytm Liczb Spiskowych Algorytm zakłada selektywne pogłębianie (ang. selective

deepening) tzn. niektóre gałęzie drzewa ruchów są głębiej przeszukiwane od innych. Przeszukiwane są te części drzewa, które dają największe prawdopodobieństwo zmiany wartości korzenia drzewa. Ta strategia jest zarazem zaletą jak i wadą algorytmu.

Kolejnych wierzchołki drzewa są wybierane do rozwinięcia, tak aby zawęzić możliwe wartości jakie może przyjmować korzeń drzewa.

Prawdopodobieństwo zmiany wartości korzenia drzewa ruchów wyraża wartość liczby spiskowej.

Liczba spiskowa przyjmuje wartość minimalnej liczby węzłów końcowych, które muszą zmienić swoją wartość ( muszą zostać głębiej przeszukane) aby wartość korzenia mogła ulec zmianie.

Page 26: Algorytmy i struktury danych

Algorytm Liczb SpiskowychAlgorytm Liczb Spiskowych O tych końcowych węzłach mówi się, że spiskują aby

osiągnąć zamierzoną wartość korzenia. Zazwyczaj stosuje się jakieś ograniczenie wielkości liczby spiskowej jako kryterium zakończenia działania algorytmu: próg spiskowy (CT).

CT (ang. conspiracy threshold) tj. minimalna liczba węzłów konspiratorów wystarczająca do uznania danej wartości korzenia za nieprawdopodobną.

Węzły w drzewie ruchów są tak rozwijane aby zawężać przedział możliwych wartości korzenia, aż do momentu gdy istnieje tylko jedna wartość korzenia, dla której liczba spiskowa jest mniejsza od progu spiskowego.

• Jeżeli prawdopodobieństwo zmiany wartości korzenia przy dalszym pogłębianiu drzewa ruchów będzie bardzo małe, wtedy można zakończyć pogłębianie drzewa, jeśli nie wtedy algorytm nadal powinien pogłębiać drzewo ruchów

Page 27: Algorytmy i struktury danych

Algorytm Liczb SpiskowychAlgorytm Liczb Spiskowych

Dla przykładu: ile terminalnych węzłów musiało by zmienić wartość, aby korzeń drzewa zmienił wartość na 4 (Vroot = 4). Jeśli węzeł E zmieni swoją wartość na 4 wtedy korzeń drzewo osiągnie wartość 4. Podobnie jeśli węzeł F zmieni swoją wartość na 4, równieŜ wtedy korzeń drzewa osiągnie wartość 4. Wynika z tego, że liczba spiskowa dla Vroot = 4 wynosi 1 (CN=1).

Page 28: Algorytmy i struktury danych

Algorytm Liczb SpiskowychAlgorytm Liczb Spiskowych

Przypadek gdy chcemy osiągnąć Vroot = 1. W tym przypadku węzły D lub E muszą osiągnąć wartość 1

oraz węzły F lub G muszą osiągnąć wartość 1. Wartość CN dla Vroot =1 wynosi 2.

Page 29: Algorytmy i struktury danych

Algorytm Liczb SpiskowychAlgorytm Liczb Spiskowych Na wyliczanie wartości liczby spiskowej istnieje prosta

metoda. Dla węzłów drzewa typu MAX, jeśli chcemy zwiększyć jego wartość, wystarczy żeby zmieniła się wartość tylko jednego z jego potomków.

Wybieramy zawsze tego potomka, który wymaga najmniejszej głębokości przeszukiwania potrzebnej do podniesienia jego wartości.

Jeśli chcemy obniżyć wartość węzła typu MAX, wtedy musimy obniżyć wartości tych potomków, których wartość jest większa od założonej.

W tym przypadku musimy zsumować liczbę węzłów spiskujących dla potomków MAXa.

W przypadku węzła typu MIN sytuacja jest dokładnie odwrotna.

Page 30: Algorytmy i struktury danych

Pozyskiwanie wiedzyPozyskiwanie wiedzy Tablice transpozycji (zapamiętywanie pewnych sytuacji w

grze razem z ich ocenami) Bazy końcówek Książka otwarć Funkcja oceniająca

Page 31: Algorytmy i struktury danych

Funkcje oceniająceFunkcje oceniające• Zbiór cech f, względem, których można oceniać pozycję gry. Dla

każdej z tych cech przyporządkujemy wagę w, której wartość wyraża jak bardzo dana cecha wpływa na końcową ocenę pozycji. Większość programów wykorzystuje liniową kombinację cech oraz przypisanych do nich wag aby otrzymać wartość danej pozycji.

• Zwykle takie strojenie funkcji oceniającej odbywa się ręcznie bez pomocy algorytmów. Rozsądne dokładanie wiedzy do funkcji oceniającej przynosi dużą poprawę jakości gry programu. Niestety istnieją wyjątki od sprawdzonych zasad, które chcemy zawrzeć w funkcji oceniającej.Arcymistrz szachowy Kevin Spraggett: „Spędziłem połowę mojej szachowej kariery ucząc się zasad silnej gry, a drugą połowę swojego czasu poświęciłem ucząc się kiedy je łamać”.

n

iii fwFo

1

Page 32: Algorytmy i struktury danych

Algorytm Algorytm TDLTDL (Temporal (Temporal Difference Learning)Difference Learning)

• Algorytmów uczący się z krytykiem (ang. reinforcement learning), tj. w trakcie uczenia nie są dostępne prawidłowe odpowiedzi, a jedynie łączna ocena po całej serii reakcji. Przykładem takiej sytuacji może być partia szachów, której wynik jest oceną całej sekwencji ruchów.

• Celem uczenia z krytykiem jest propagacja wsteczna wyniku końcowego gry, tak aby wpływać na ocenę węzłów drzewa, poprawiając jakość tych ocen.

• Rozważmy serię ocen P1, P2, ..., PN. Są to oceny pozycji po każdym ruchu (ruch programu i odpowiedź przeciwnika), a ich wartości wyrażają szansę programu na zwycięstwo z ruchu na ruch. Na przykład w szachach dla pozycji początkowej P1 ma wartość równą lub bliską zeru. W przypadku zwycięstwa PN =1, w przypadku porażki PN =-1, dla ruchów pomiędzy pierwszym a N-tym oceny przybierają różne wartości z przedziału (-1,1).

Page 33: Algorytmy i struktury danych

Algorytm Algorytm TDLTDL cd. cd.• Jeśli wartość funkcji P dla pozycji t (Pt) jest mniejsza (większa) niż pozycji

t+1 (Pt+1), wtedy powinniśmy podnieść (obniżyć) ocenę pozycji t, żeby lepiej przewidywała wartość pozycji t+1.

• Algorytmu TDL modyfikuje oceny, na podstawie różnic występujących po sobie ocen.

• Uaktualnianie wektora wag w funkcji oceniającej odbywa się po zakończeniu partii według wzoru:

gdzie:w – wektor wagN – liczba ruchów ( ruch zdefiniowany jest jako ruch programu i odpowiedź

przeciwnika)wt – zmiany wektora w obliczane po kaŜdym ruchu

Page 34: Algorytmy i struktury danych

Algorytm Algorytm TDLTDL cd. cd.• Różnice wt są obliczane po każdym ruchu programu i odpowiedzi

przeciwnika.

w – wektor wag, które podlegają strojeniu, t – numer aktualnie analizowanego ruchu, wt – zmiana zbioru wag w ruchu t

Pt – wartość funkcji oceniającej w kroku t ( na końcu gry PN przyjmuje wartość funkcji wypłaty),

t – różnica ocen kolejnych sytuacji po odpowiedzi przeciwnika (0<<1) – współczynnik odpowiadający za to jak bardzo poprzednie

oceny wpływają na bieżącą zmianę wag (=0 – brak wpływu, =1 wszystkie poprzednie ruchy są traktowane tak samo),

w Pk – zbiór cząstkowych pochodnych dla każdej składowej wektora w, >0 – współczynnik uczenia ( małe powoduje małe zmiany w, duże

powoduje, że w bardziej się zmienia) i są parametrami heurystyki, ich wartość powinna być dobierana

doświadczalnie

Page 35: Algorytmy i struktury danych

Algorytm Algorytm TDLTDL cd. cd.• Wzór na różnice wartości funkcji oceniającej między ruchem

t+1 a ruchem t

t = Pt+1 – Pt

Nauka powinna być przeprowadzana poprzez rozgrywanie serii partii i modyfikację wag funkcji oceniającej po zakończeniu każdej partii

TDL z powodzeniem zaimplementowano m.in. w najsilniejszym programie grającym w triktraka TD-Gammonprogramie szachowym Cilkchessprogramie szachowym KnightCap (tu jako wartości poczatkowe

zadano tylko ustalone wagi w części odpowiedzialne za ocenę materialną pozycji pozostałe wagi zostały zestrojone przez TDL)

Page 36: Algorytmy i struktury danych

Rozwiązane gryRozwiązane gry Młynek (Nine Men Morris) Connect-Four Awari (gra typu Mankala) Go-Moku Qubic (trójwymiarowe kółko i krzyżyk 4x4x4) Nim L-game Fanorona

Bardzo słabo rozwiązane gry:• Hex

Page 37: Algorytmy i struktury danych

Gry zdominowane przez Gry zdominowane przez komputerykomputery

Warcaby (8x8) (Checkers) Renju Otello Scrabble Tryktrak (Backgammon)

Page 38: Algorytmy i struktury danych

Programy grające na poziomieProgramy grające na poziomie

Mistrza świata

• Szachy• Warcaby (10x10)

Najlepszych graczy• Go (9x9)• Chińskie szachy• Brydż

Amatorskim• Go