Gry dzielimy ze względu na: liczbę graczy: 1-osobowe, bez przeciwników(np. pasjanse, 15-tka, gra w życie, itp.), 2-osobowe(np. szachy, warcaby, go, itp.), wieloosobowe(np. brydż, giełda, itp.); wygraną/przegraną: o sumie zerowej(suma wygranych jest dokładnie równa sumie przegranych), o sumie niezerowej(np. dylemat więźnia, lotto, itp.); współpracę: kooperacyjne(np. gospodarka), niekooperacyjne(np. ucieczka-pościg, itp.); rolę losowości: całkiem losowe(np. lotto, ruletka, itp.), częściowo losowe(np. brydż, itp.), deterministyczne(np. szachy, itp.); wiedzę graczy o stanie. Wykład7,31III2010,str.2 Odróżniać losowość od wiedzy graczy o stanie! pełna wiedza niepełna wiedza graczy o stanie graczy o stanie determinizm szachy okręty gryzkostką losowość (np. chińczyk) brydż Do opisu gry potrzeba: specyfikacji graczy, określenia ich celów, opisu dostępnej informacji, specyfikacji ich strategii.
Prosta gra macierzowa, 2-osobowa, o sumie zerowej: gracze wykonują ruchy jednocześnie; macierz wypłat dla A(skoro suma zerowa, wystarczy podać, ile wygrywa jeden gracz, drugi przegrywa tyle samo): ruchy gracza B b 1 b 2... b k ruchy gracza A a2 a1... an u 11 u 12... u 1k u 21 u 22... u 2k............ u n1 u n2... u nk u ij R dla i,j [1..n] [1..k] Wykład7,31III2010,str.4 Prosta gra macierzowa, 2-osobowa, o sumie zerowej: PAPIER, KAMIEŃ, NOŻYCE gracze wykonują ruchy jednocześnie; macierzwypłatdlaa: A B papier kamień nożyce papier 0 1 1 kamień 1 0 1 nożyce 1 1 0
Prosta gra macierzowa, 2-osobowa, o sumie niezerowej: DYLEMAT WIĘŹNIA gracze wykonują ruchy jednocześnie; macierz wypłat: A B współpraca zdrada współpraca 3 3 zdrada 0 20 20 0 10 10 Strategia optymalna: zawsze zdradzać. Dygresja polityczno-ewolucyjna Wykład7,31III2010,str.6 Mantra liberalna: Niech każdy dba o swój interes, wtedy interes wspólny sam o siebie zadba. W sytuacji dylematu więźnia(np. w sprawach globalnych, jak wpływ na klimat) interesy jednostkowe nie składają się w interes wspólny... Problem ewolucjonistów: Skąd w przyrodzie biorą się zachowania altruistyczne? Geny osobnika, który poświęca się dla bliźniego/grupy/społeczności, powinnyzanikać,botojestgorszastrategiagryniżegoizm...
Dygresja polityczno-ewolucyjna Hipotetyczna odpowiedź: Iterowany dylemat więźnia: Gramy wiele razy i w każdej rozgrywce bierzemy pod uwagę zachowanie przeciwnika/partnera w poprzednich rozgrywkach. Jeśli liczba rozgrywek nie jest z góry ograniczona, to strategią lepszą od pełnego egoizmu jest wet za wet : na początku współpracować, w następnych turach robić tak, jak poprzednio zrobił przeciwnik; cojakiśczas(losowo) darowaćwinę pójśćnawspółpracęmimo że przeciwnik zdradził. Być może liberalny ład społeczny może działać na zasadzie iterowanego dylematu więźnia... Być może altruizm powstaje z iterowanego dylematu więźnia... Wykład7,31III2010,str.8 Gra w zapałki(minimax): Gracze kolejno biorą zkupkipo1lub2 zapałki. Kto weźmie ostatnią przegrywa. Wygrana czerwonego: 1; zielonego: 0. 5 4 3 3 2 2 1 2 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0-1 0-1 -2-1 -2-1 -2-1 -2-1 -2-1 -2-1 -1-2 -1-1 -1 0 1 0 1 1 1 0 1 1 1 1 Czerwony zainteresowany jest maksymalizacją wyniku. Zielony zainteresowany jest minimalizacją wyniku. 1 0 0 0
Strategia minimax : minimax stosuje się do gier 2-osobowych, w których gracze wykonują ruchy na przemian; jeden z nich zainteresowany jest minimalizacją a drugi maksymalizacją wyniku; oceniasięwszystkiepozycjewpełnymdrzewiegry począwszyod liści i skończywszy na korzeniu: najpierw na liściach wpisuje się wyniki zakończonych rozgrywek; potem na każdym wierzchołku wewnętrznym wpisuje się minimum lub maximum(zależnie od tego, który gracz ma ruch) ocen dzieci tego wierzchołka; w każdej pozycji gracz powinien wykonać ruch prowadzący do pozycji o najniższej lub najwyższej(zależnie od tego, który z nich) ocenie. Wykład7,31III2010,str.10 Funkcja oceny pozycji w strategii minimax : int ocena(stan_planszy pl, int czyj_ruch){ if(gra_zakonczona(pl, czyj_ruch)) return wielkosc_wyplaty(pl, czyj_ruch); else{ int i, min, max, oc; Stan_planszy pl1; min=infty;max=-infty; for(i in zbior_mozliwych_ruchow(pl,czyj_ruch)){ wykonaj_ruch(&pl1, pl, i); oc=ocena(pl1,(czyj_ruch==max?min:max)); if(oc>max) max=oc; if(oc<min) min=oc; if(czyj_ruch == MAX) return max; else return min; } } }
-1 1-1 1 Wygrana krzyżyka: 1; kółka:-1. Krzyżyk zainteresowany jest maksymalizacją. Kółko zainteresowane jest minimalizacją. Drzewa nawet prostych gier są na ogół olbrzymie, a minimax trzeba zacząć od liści, więc wydaje się, że potrzebne jest całe drzewo. Wykład7,31III2010,str.12 Heurystyczna ocena pozycji: budujemy fragment drzewa gry o takiej wysokości, na jaką nas stać; liście tego fragmentu są wewnętrznymi węzłami całego drzewa, więc niemapewności,ktownichwygrywa; stosujemy jakąś heurystyczną ocenę pozycji na liściach tego fragmentu; propagujemy na cały fragment ocenę z liści stosując zwykły minimax; wybieramy ruch wg minimaxu; usuwamy oceny; przy następnym ruchu budujemy nowy fragment drzewa sięgający głębiej i oceniamy jak wyżej.
Gra w zapałki: Heureza: (liczba zapałek) mod 3 Czerwony: jak najwyższa ocena Zielony: jak najniższa ocena Uwaga: Dlatejgrytakaheurezaniema sensu; to tylko taka sobie ilustracja działania algorytmu. Z pktu widzenia Czerwonego: 1.biorę2zapałki;isadzę,żeZielonyweźmie2; 2.biorę1zapałkę;isadzę,żeZielonyweźmie2; 3... 8-1 -2 7 6-1 -2-1 -2 6 5 5 4-1 -2 3 2 1 0-1 -2-1 -2 2 1 1 0 2 1 1 0 Wykład7,31III2010,str.14 Przycinanie α-β: 1-1 -1 ruch ma kółko, zainteresowany minimalizacją; topoddrzewoniebędziegrało,bo ma wyższą ocenę niż sąsiednie. W takiej sytuacji tego poddrzewa można w ogóle nie rozpatrywać. 1
Przycinanie α-β: a b b? min max A B C Jeślia b,todrzewacnietrzebaprzeglądać, bo gracz min nie pozwoli tam wejść, wybierze poddrzewo A.