Rozdział 2 Algorytmy szukania równowag w grach dwumacierzowych 2.1 Algorytm Lemke-Howsona Dzisiejszy wykład poświęcony będzie temu, jak szukać równowag w grach dwumacierzowych. Ponieważ temu były już w większości poświęcone wczorajsze ćwiczenia, więc w tym momencie znamy już pewien algorytm szukania równowag. Z grubsza można go opisać następująco: 1. Wykreślamy ze zbiorów strategii te strategie, które są zdominowane. 2. Wśród strategii, które nam zostały, rozważamy wszystkie możliwe podzbiory, i dla tych podzbiorów: (a) rozwiązując pewne układy równań, określamy, jakie strategie skoncentrowane na wybranych przez nas zbiorach mogą być w równowadze; (b) sprawdzamy, czy rzeczywiście są równowagą. Nie trzeba być geniuszem, żeby zauważyć, że taki algorytm, chociaż wygodny do obliczeń na papierze (tablicy), będzie dla gier o większych zbiorach strategii czystych bardzo wolny. Jeśli bowiem w danej grze nie ma strategii zdominowanych (a tak będzie bardzo często), to w drugim kroku algorytmu będziemy musieli rozważyć jako nośniki strategii w równowadze wszystkie podzbiory zbioru strategii czystych, czyli dla gry z n strategii 1. gracza i m drugiego – wykonać drugi krok algorytmu 2n+m razy, co oznacza, że ten algorytm będzie miał wykładniczą złożoność, i to nie tylko w jakichś najgorszych, zdegenerowanych przypadkach, ale dla większości gier. Stąd powstała potrzeba znalezienia jakiegoś innego, bardziej efektywnego algorytmu. Zanim dojdziemy do samego algorytmu szukania równowag, spróbujmy przedstawić problem szukania równowag w alternatywnej postaci, dostosowanej do stosowania algorytmów „geometrycznych” (tego typu, co algorytm sympleks dla programowania liniowego), czyli przy pomocy pewnego układu nierówności. Niech tradycyjnie Am×n oznacza macierz wypłat pierwszego gracza, a Bm×n – macierz wypłat drugiego. Niech µ = [µ1 , . . . , µm ] będzie strategią mieszaną w równowadze 1., a σ = [σ1 , . . . , σn ] – 2. gracza. Dodatkowo, przez v1 oznaczymy wypłatę w tej równowadze pierwszego z graczy, a przez v2 – drugiego. 8 Zgodnie z tym, co pokazaliśmy na ćwiczeniach, dla strategii w równowadze muszą być spełnione następujące warunki: ( P a σ = v1 Pj ij j j dla i z nośnika µ dla i spoza nośnika, aij σj ¬ v1 (To pierwsze, to dokładnie układ równości z ćwiczeń; nierówności w drugim wierszu zagwarantują nam, że µ będzie najlepszą odpowiedzią na σ). Podobnie dla drugiego gracza: ( P b µ = v2 dla j z nośnika σ Pi ij i b dla j spoza nośnika, i ij µi ¬ v2 Ponadto, ponieważ v1 i v2 są wypłatami w równowadze (µ, σ), więc dodatkowo musi być P P P P spełnione i j aij µi σj = v1 oraz i j bij µi σj = v2 . Przyjmijmy teraz sobie x = vµ2 oraz y = vσ1 . Dla takich x i y, warunki podane wcześniej będą implikować: ( P a y =1 Pj ij j j aij yj ¬ 1 ( P b x =1 Pi ij i dla i z nośnika x dla i spoza nośnika x i bij xi dla j z nośnika y dla j spoza nośnika y, (2.1) ¬1 a także: X i xi + X j yj = XX XX v2 1 1 v1 bij xi yj . aij xi yj + + = + = v1 v2 v1 v2 v2 v1 i j i j (2.2) Okazuje się, że ten układ warunków (plus założenie o nieujemności x i y), już wystarczy do policzenia strategii w równowadze. Dokładniej, prawdziwe będzie takie twierdzenie: " # 0 A Twierdzenie 2.1 Niech z = [x, y] , q = oraz C = i dodatBT 0 kowo załóżmy, że C > 0. Dowolne niezerowe rozwiązanie z ∗ następującego problemu: znajdź z takie, że: z ­ 0, (2.3) T [1, . . . , 1]T1×m+n q − Cz ­ 0, (2.4) z T (q − Cz) = 0, (2.5) ma taką własność, że µ = Px xi oraz σ = Py yj jest równowagą w grze dwumacierzowej i j o macierzach wypłat A i B. Uwaga 2.1 Założenie, że C > 0 nie ogranicza nas zbytnio, bo strategie w równowadze w grze dwumacierzowej z macierzami wypłat A, B pozostają w równowadze w grze z macierzami A + c, B + c, gdzie c jest pewną stałą. Żeby więc znaleźć równowagę w grze z macierzami, w których są elementy ujemne, wystarczy do tych macierzy dodać pewną stałą dodatnią, otrzymując w ten sposób grę spełniającą założenia naszego twierdzenia, a jednocześnie posiadającą równowagi takie same jak w grze wyjściowej. Dowód: ⇐=: Jeśli rozpiszemy warunek (2.5), dostaniemy 0 = X xi (1 − X i = X i aij yj ) + X j xi + X j yj − yj (1 − j XX i j 9 aij xi yj − X bij xi ) i XX i j bij xi yj , (2.6) czyli równość (2.2). Warunek (2.4) zapisany w postaci układu nierówności będzie wyglądał tak: ( P 1 − j aij yj ­ 0 P (2.7) 1 − i bij xi ­ 0, czyli są to lekko osłabione warunki (2.1), które zapisałem wcześniej. Dla odmiany, warunek (2.3) oznacza, że vµ2 ­ 0 oraz vσ1 ­ 0, co musi być spełnione, jeśli µ i σ będą rozkładami prawdopodobieństwa, a macierz C (czyli w konsekwencji wypłaty obu graczy) będzie nieujemna. Wniosek z tego taki, że równowaga Nasha na pewno będzie rozwiązaniem problemu sformułowanego w twierdzeniu. =⇒: Druga część dowodu musi być taka, że mamy pokazać, że nie ma rozwiązań tego problemu, które nie dawałyby równowagi Nasha. No to załóżmy nie wprost, że µ = Px xi , i σ = Py yj , [x, y]T jest niezerowym rozwiązaniem naszego problemu, ale µ i σ nie tworzą j równowagi Nasha. Jak już wcześniej napisaliśmy, warunek (2.5) można zapisać jako (2.6). Biorąc pod uwagę to, że wszystkie xi ­ 0, yj ­ 0 oraz dodatkowo spełnione są warunki (2.7), żeby suma w (2.6) była równa 0, każdy z jej elementów musi być równy 0. To z kolei oznacza, że ( P 1 6= j aij yj tylko wtedy, gdy xi = 0 P 1 6= i bij xi tylko wtedy, gdy yi = 0. A zatem (2.7) możemy zapisać w mocniejszej postaci: ( P a y =1 Pj ij j jeśli xi > 0 jeśli xi = 0, ( P b x =1 Pi ij i jeśli yj > 0 jeśli yj = 0, j oraz aij yj < 1 i bij xi <1 co jest równoważne warunkom: P P1 =: v1 j aij σj = y j j P j aij σj < v1 ( P i bij µi P i bij µi dla i z nośnika µ dla i spoza nośnika, = P1 xi =: v2 dla j z nośnika σ < v2 dla j spoza nośnika, i czyli warunkom, które musi spełniać równowaga Nasha, co oznacza sprzeczność, bo zakładaliśmy, że µ i σ nie tworzą równowagi. Teraz, co wynika z udowodnionego twierdzenia? Otóż problem, który pojawił się w powyższym twierdzeniu należy do pewnej znanej klasy problemów1 , dla której istnieją algorytmy podobne do algorytmu sympleks, służące do jego rozwiązywania. 1 Dla dowolnej macierzy kwadratowej C problem opisany nierównościami (2.3–2.5) nazywa się problemem komplementarności liniowej (LCP), i formułuje się go następująco: Niech C będzie macierzą l × l (kwadratową), a q – wektorem l × 1 złożonym z samych jedynek. Znajdź zl×1 , spełniający: z ­ 0, q − Cz ­ 0, T z (q − Cz) = 0. Dwa pierwsze warunki nazywamy ograniczeniami liniowymi, trzeci – warunkiem komplementarności liniowej. 10 Algorytm rozwiązywania takich problemów wymyślili Lemke i Howson. Na początek spróbuję wytłumaczyć, jaka jest ogólna idea tego algorytmu. Zbiór wektorów w odpowiedniej przestrzeni l-wymiarowej spełniających zestaw liniowych ograniczeń (dwa pierwsze warunki zadające LCP), jest wypukłym wielościanem. Równość w każdym z tych liniowych warunków oznacza, że w danym momencie jesteśmy na odpowiedniej ścianie tego wielościanu; jeśli spełnione jest naraz l z nich, jesteśmy jednocześnie na l ścianach, czyli w wierzchołku. Teraz zauważmy, że warunek (2.6) oznacza właśnie tyle, że jeśli znaleźliśmy rozwiązanie naszego problemu, to w co najmniej l z tych warunków jest równość, więc jesteśmy w wierzchołku. A zatem nasz algorytm ma znaleźć jeden z wierzchołków „naszego” wielościanu. Istotne jest jednak to, że nie każdy wierzchołek będzie rozwiązaniem. Rozwiązaniami będą tylko te wierzchołki, dla których spełniony będzie warunek (2.6), który mówi, że rozwiązanie musi być częścią wspólną l ścian o l różnych indeksach (istnieją dwie ściany o każdym z indeksów od 1 do l – jedną ścianą o indeksie i jest ściana spełniająca warunek zi = 0, drugą – spełniająca P j cij zj = 1). Stąd kolejne kroki algorytmu będą polegały na przechodzeniu (wzdłuż krawędzi) od wierzchołka do wierzchołka do momentu, w którym będzie spełniony warunek komplementarności. Zaczniemy przy tym od jedynego znanego nam rozwiązania naszego problemu (ale rozwiązania, które zgodnie z twierdzeniem nas nie interesuje), czyli samych zer. Formalnie algorytm Lemke-Howsona będziemy wykonywać przy pomocy następującej tablicy: z1 z2 . . . zl −c11 −c12 . . . −c1l 1 r1 −c21 −c22 . . . −c2l 1 r2 .. .. .. .. . . . . r3 −cl1 −cl2 . . . −cll 1 r4 Elementy tej tablicy będziemy oznaczać przez dij . Tablica ta reprezentuje układ równań P q − Cz = r, gdzie ri jest zmienną równą i-tej współrzędnej q − Cz, 1 − j cij zj . Zmienne u góry tablicy są równe zero, wartości pozostałych są równe temu, co stoi w l + 1. kolumnie tablicy. Startujemy z punktu z = 0, który jest rozwiązaniem LCP, ale nie generuje równowagi Nasha, i w kolejnych krokach algorytmu wykonujemy następujące operacje: 1. Wybieramy (dowolną, np. pierwszą) kolumnę macierzy j0 . Zapamiętujemy, która to była kolumna (czyli zmienna z jakim indeksem w niej stała). 2. Wybieramy taki wiersz i0 , że di0 j0 < 0 oraz nazywamy testem najmniejszego ilorazu). di0 ,l+1 −di0 j0 jest najmniejsze (tę regułę 3. Wymieniamy zmienną bazową (z prawej w wierszu i0 ) ze zmienną niebazową (u góry w wierszu j0 ), stosując te same reguły zmiany tablicy przy wymianie zmiennych co w algorytmie sympleks w zeszłym tygodniu (jak wtedy, di0 j0 z tyldą oznaczają wartości di0 j0 po wymianie zmiennych): dg i0 j0 = 1 di0 j0 di0 j dg i0 j = di0 j0 11 j 6= j0 dij0 i 6= i0 di0 j0 di j dij dfij = dij − 0 0 poza tym. di0 j0 dg ij0 = − Jeśli numer zmiennej opuszczającej bazę r· był inny niż zmiennej z pierwszego punktu, zmienną z tym numerem wybieramy w następnym kroku jako tę, która wejdzie do bazy. Wybieramy kolumnę, w której stoi zmienna o tym numerze i wracamy do punktu 2. Jeśli numer zmiennej opuszczającej bazę był taki sam jak numer pierwszej wybranej przez nas, to algorytm się kończy, a my możemy odczytać z tablicy rozwiązanie LCP. Robimy to w następujący sposób: te ze zmiennych zi , które pozostały u góry tablicy mają wartość 0, pozostałe mają wartości równe tym w l + 1. kolumnie tablicy. Sens takiego „łańcuszka”, oraz warunku kończącego algorytm, jest taki: naszym celem jest znalezienie takiego punktu, w którym dla każdego indeksu i albo zmienna zi , albo i-ta współrzędna q − Cz, ri będzie równa zero. W związku z tym, jeśli na którymś kroku wyzerowaliśmy zmienną o indeksie j, zj lub rj , to sprawdzamy, czy druga z tych zmiennych też jest wyzerowana – jeśli tak, staramy się wymienić tę drugą na zmienną o takim indeksie i, że w danej chwili ani zi ani ri nie jest wyzerowana. W ten sposób otrzymalibyśmy sytuację, w której zarówno jedna ze zmiennych zj , rj , jak i jedna ze zmiennych zi , ri jest wyzerowana. Jeśli na danym kroku to nam się nie udaje, to wymieniamy jedną ze zmiennych o indeksie i (które w takim wypadku są obie u góry tablicy, czyli ich wartość jest ustawiona na zero) na jakąś inną zmienną (dzięki czemu jednocześnie na żadnym kroku algorytmu nie ma więcej niż jednego indeksu takiego, że zarówno zmienna r o takim indeksie, jak i zmienna z o takim indeksie, jest wyzerowana). Powtarzamy to tak długo, aż u góry (wśród zmiennych wyzerowanych) będzie się znajdowało po jednej zmiennej o każdym indeksie, czyli będzie spełniony warunek komplementarności. Przykład2 Mamy znależć równowagę w grze dwumacierzowej z macierzami wypłat: " A= 5 5 10 1 8 3 W takim przypadku macierz C = 0 0 2 8 2 # " , 0 0 3 2 7 B= 5 1 0 0 0 2 8 2 3 2 7 z1 z2 z3 z4 z5 0 0 −5 −5 −10 1 r1 0 0 −1 −8 −3 1 r2 −2 −3 0 0 0 1 r3 −8 −2 0 0 0 1 r4 −2 −7 0 0 0 1 r5 Tego nie było na wykładzie. 12 . 5 10 8 3 0 0 . Zapiszmy teraz wszystko w po0 0 0 0 staci tabelki. 2 # Niech k = 1, co oznacza, że jako zmienną wchodzącą do bazy wybieramy z1 . Używając testu najmniejszego ilorazu wybieramy r4 jako zmienną, którą usuniemy z bazy. Po pierwszej wymianie zmiennych dostajemy: r4 0 0 1 4 −1 8 1 4 z2 z3 z4 z5 0 −5 −5 −10 1 r1 0 −1 −8 −3 1 r2 −5 0 0 0 34 r3 2 −1 0 0 0 18 z1 4 −13 0 0 0 34 r5 2 Kolejną zmienną wchodzącą do bazy będzie z4 , a usuwaną r2 . Po drugiej zamianie zmiennych dostajemy: r4 z2 z3 r2 z5 5 −65 3 0 0 −35 r1 8 8 8 8 −1 −3 1 −1 0 0 z4 8 8 8 8 −5 1 3 0 0 0 r3 4 2 4 −1 −1 1 0 0 0 8 z1 8 4 −13 1 0 0 0 34 r5 4 2 Następnie wymieniamy z2 z r5 , co daje nam nową tablicę: r4 0 0 r5 0 0 2 13 −7 52 1 26 5 13 1 26 −2 13 z3 −35 8 −1 8 r2 5 8 −1 8 z5 −65 8 −3 8 0 0 0 0 0 0 0 0 0 z3 −7 13 1 13 r2 1 13 −2 13 r1 −8 65 3 65 0 0 0 0 0 0 0 0 0 3 8 1 8 6 13 5 52 3 26 r1 z4 r3 z1 z2 Dalej wymieniamy z5 z r1 , co daje: r4 0 0 r5 0 0 2 13 −7 52 1 26 5 13 1 26 −2 13 3 65 7 65 6 13 5 52 3 26 z5 z4 r3 z1 z2 I to już koniec, bo zmienna k-ta (czyli o numerze równym numerowi pierwszej zmiennej, która weszła do bazy – r1 ) została usunięta z bazy. Stąd rozwiązaniem LCP jest z = 5 3 7 3 ( 52 , 26 , 0, 65 , 65 ). Po normalizacji otrzymujemy równowagę Nasha w wyjściowej grze µ = 5 6 7 3 ( 11 , 11 ), ν = (0, 10 , 10 ). Uwaga 2.2 Algorytm Lemke-Howsona ma wykładniczą złożoność obliczeniową. W przypadku zastosowania tego algorytmu do rozwiązywania dowolnych problemów komplementarności liniowej było to udowodnione już w latach siedemdziesiątych. To, że złożoność szukania równowag Nasha przy użyciu tego algorytmu też jest w najgorszym przypadku wykładnicza udowodnili dopiero Savani i von Stengel cztery lata temu3 , co sugeruje, że w większości przypadków algorytm jest jednak w miarę szybki. To o tyle 3 Czyli nie w 1999 roku, jak mi się wydawało na wykładzie. 13 dobrze, że niestety w przypadku problemu komplementarności liniowej nie ma znanych algorytmów, które byłyby szybsze (nawet w teorii). Istnieją natomiast pewne algorytmy szukania równowag w pewnych klasach gier dwumacierzowych, które działają w wielomianowym czasie. O pewnych z nich opowiem za tydzień. Uwaga 2.3 Inną wadą algorytmu Lemke-Howsona jest to, że nie znajduje on wszystkich równowag Nasha. Jeśli rozpocznie się go w już znalezionej równowadze, można znaleźć inną, ale nie ma gwarancji, że tą drogą znajdzie się wszystkie równowagi (któreś mogą zostać pominięte). Problem w tym, że nie są znane algorytmy, które efektywnie (nawet jeśli za kryterium efektywności przyjąć średni czas znalezienia równowagi dla gry o zadanym rozmiarze) znajdywałyby wszystkie równowagi w zadanej grze. Te, które są znane, są w mniejszym lub większym stopniu zbliżone do algorytmu z początku wykładu, polegającego na przeszukiwaniu po kolei wszystkich możliwych nośników strategii graczy, po odrzuceniu strategii silnie zdominowanych (lub w bardziej wyrafinowanej formie na przeszukiwaniu wszystkich wierzchołków wielościanu określonego przez warunki (2.3) i (2.4), których jest mniej niż możliwych par nośników strategii w równowadze, ale mimo wszystko ich liczba rośnie wykładniczo wraz ze wzrostem liczby strategii czystych graczy). 2.2 Gry macierzowe Jak wiemy z ostatniego wykładu, najszybszy znany algorytm liczenia równowag w grach dwumacierzowych ma wykładniczą złożoność. Stąd naturalnym pytaniem jest to, czy przynajmniej dla jakichś klas gier dwumacierzowych da się to obliczać szybciej. Odpowiedź jest twierdząca – o pewnej dużej klasie gier, dla których da się to zrobić, opowiem w pierwszej części dzisiejszego wykładu. Zaczniemy od ogólnej definicji takich gier, później spróbujemy dojść do tego, w jaki sposób przyspieszyć liczenie równowag w takich grach. Definicja 2.1 Grą dwuosobową o sumie zerowej nazwiemy dowolną grę dwuosobową (X, Y, u1 , u2 ), w której u2 ≡ −u1 . Taką grę można opisać przy pomocy trójki (X, Y, u), gdzie: X – zbiór strategii gracza 1., Y – zbiór strategii gracza 2., u : X × Y → R – ograniczona funkcja wypłaty. Gra rozgrywana jest w następujący sposób: gracze niezależnie od siebie wybierają x ∈ X oraz y ∈ Y , następnie gracz 2. płaci graczowi 1. kwotę u(x, y). Definicja 2.2 Grą macierzową nazywamy grę dwuosobową o sumie zerowej, jeśli zbiory strategii graczy są skończone. W takim wypadku wypłaty w tej grze da się opisać przy pomocy jednej macierzy A, w której będą wypłaty gracza 1. (wypłaty 2. gracza będą równe −A). Szczególność gier o sumie zerowej nie polega na tym, że funkcje wypłat spełniają pewną elegancką matematycznie własność, ale na tym, w jaki sposób można tę własność zinterpretować. Mianowicie: interesy graczy są dokładnie przeciwstawne, a stąd możemy się spodziewać, że drugi gracz będzie grał przeciwko nam (będzie się starał zminimalizować naszą wypłatę, bo to będzie jednocześnie oznaczało zmaksymalizowanie jego). Tego nie mogliśmy się spodziewać w przypadku innych gier, gdzie każdy stara się poprawić swoją wypłatę, a nie szkodzić innym (chyba że gracze byliby Polakami). Spróbujmy zobaczyć na przykładzie, jak w takim razie powinni zachowywać się gracze w grze o sumie zerowej. 14 Przykład: Rozważamy następującą sytuację: dwóch dowódców armii przeciwnych państw – A i B walczy o dwa forty (miasta) na terenie państwa A, każdy ma przy tym do dyspozycji po dwa oddziały. Zadaniem każdego z dowódców jest rozmieszczenie swoich oddziałów w poszczególnych fortach (przydzielenie do ataku na poszczególne forty) – generał armii A w ten sposób, żeby jak najwięcej fortów pozostało w rękach państwa A, generał B – tak, żeby przejąć jak najwięcej fortów. Wiedzą przy tym, że prawdopodobieństwo zdobycia fortu zależy od stosunku atakujących do broniących w następujący sposób: • jeśli nikt nie atakuje fortu, to pozostaje on w posiadaniu państwa A; • jeśli ktoś atakuje fort, a nikt go nie broni, fort zostaje zdobyty (z prawdopodobieństwem 1); • jeśli atakujących jest mniej niż broniących, fort pozostaje w posiadaniu państwa A (z prawdopodobieństwem 1); • jeśli atakujących jest tylu, ilu broniących, to fort zostaje zdobyty z prawdopodobieństwem 14 ; • jeśli stosunek atakujących do broniących jest równy 2 : 1, to fort zostaje zdobyty z prawdopodobieństwem 43 . Wypłatami generała B będą wartości oczekiwane liczby zdobytych fortów (gracza A, oczywiście minus liczba straconych). W związku z tym tabela jego wypłat graczy będzie przedstawiać się następująco (strategie w kolumnach to strategie generała B, w wierszach – generała A): 20 11 02 20 0.25 0.75 1 11 1 0.5 1 02 1 0.75 0.25 Z założenia, że gracz A będzie starał się maksymalnie zmniejszyć wypłatę gracza B możemy wywnioskować, że racjonalnym postępowaniem gracza B będzie wybranie takiej strategii, że będzie dawała najwyższą wypłatę przy założeniu, że przeciwnik będzie się starał ją zminimalizować, czyli x∗ takie że min u(x∗ , y) = max min u(x, y). y x y Podobnie, gracz A wybierze taką strategię y ∗ , że max u(x, y ∗ ) = min max u(x, y). x y x W naszym przykładzie to będzie oznaczać, że obaj gracze wybiorą strategię 11. Zastanówmy się teraz, co gracze wybraliby, gdyby mogli używać strategii mieszanych. Zgodnie ze znanym nam już twierdzeniem Nasha, dowolna gra dwumacierzowa (a gra macierzowa jest jej szczególnym przypadkiem) ma równowagę w strategiach mieszanych. W tej grze równowagą (jedyną) będzie para strategii µ∗ = ( 52 , 15 , 25 ) oraz σ ∗ = ( 15 , 35 , 15 ). Okazuje się, że te strategie będą optymalne w sensie, który opisałem powyżej, jeśli będziemy rozpatrywać strategie mieszane4 . Jak się za chwilę okaże, tak będzie zawsze, jeśli 4 Powinienem napisać, że sprawdzenie tego faktu pozostawiam czytelnikom jako proste ćwiczenie, bo tak się zwykle pisze, jeśli przeliczenie czegoś jest żmudne i męczące, a tak, jak mogli zobserwować wszyscy obecni na wykładzie, jest w tym przypadku 15 gra o sumie zerowej będzie miała równowagę. Narazie jednak zrekapitulujmy wszystko, co zrobiliśmy dla naszego przykładu, wprowadzając odpowiednie definicje. Definicja 2.3 Wartość, którą gracz 1. może sobie zapewnić, nazywana wartością dolną gry, jest równa v = sup inf u(x, y). x∈X y∈Y Wartość najmniejszej straty poniesionej przez gracza 2., którą może sobie zapewnić, nazywana jest wartością górną gry i jest równa v = inf sup u(x, y). y∈Y x∈X Strategie, przy pomocy których gracze zapewniają sobie wypłaty nie gorsze od (odpowiednio) wartości dolnej (gracz 1.) i wartości górnej (gracz 2.) nazywamy strategiami bezpieczeństwa graczy. Prawdziwe będzie następujące twierdzenie. Twierdzenie 2.2 W dowolnej grze o sumie zerowej prawdziwe będą następujące fakty: 1. v ¬ v. 2. Jeśli gra ma równowagę Nasha, to v = v (tę wspólną wartość nazywamy wartością gry), a strategie w równowadze są strategiami bezpieczeństwa. Dowód: 1. inf y u(x, y) ¬ u(x, y0 ) dla dowolnych x ∈ X i y0 ∈ Y . Nakładając obustronnie inf y0 supx , dostajemy inf sup inf u(x, y) ¬ inf sup u(x, y0 ), y0 x y y0 x tyle że wyrażenie pod infimum z lewej strony nie zależy od y0 , więc to jedno infimum można pominąć, dostając: sup inf u(x, y) ¬ inf sup u(x, y0 ), y y x 0 x czyli nierówność, którą mieliśmy udowodnić. 2. Niech (x∗ , y ∗ ) będzie tą równowagą. Z definicji równowagi Nasha mamy u(x∗ , y) ­ u(x∗ , y ∗ ) ­ u(x, y ∗ ). Oczywiście, skoro nierówności są prawdziwe dla dowolnych x i y, na lewą stronę możemy nałożyć infimum po y, a na prawą supremum po x: inf u(x∗ , y) ­ u(x∗ , y ∗ ) ­ sup u(x, y ∗ ). y x Jeśli teraz zamienimy x∗ z lewej strony na supremum po x, możemy tylko powiększyć wartość po lewej, dzięki czemu nierówność pozostanie prawdziwa. Podobnie y ∗ z prawej możemy zamienić na infimum po y, otrzymując: sup inf u(x, y) ­ u(x∗ , y ∗ ) ­ inf sup u(x, y). x y y 16 x Ale to oznacza, że v ­ v. Ponieważ przeciwna nierówność jest zawsze prawdziwa, dostajemy v = v. Skoro mamy równość pomiędzy wartością górną i dolną, to mamy także równości we wszystkich powyższych nierównościach, w szczególności: inf y u(x∗ , y) = supx inf y u(x, y) oraz supx u(x, y ∗ ) = inf y supx u(x, y), co oznacza, że x∗ i y ∗ są strategiami bezpieczeństwa. W tym momencie możemy powrócić do algorytmów szukania równowag w grach (dwu-) macierzowych, zauważając, że zamiast liczyć, czy dana para (µ∗ , σ ∗ ) jest równowagą w grze macierzowej, możemy policzyć oddzielnie, czy µ∗ jest strategią bezpieczeństwa dla 1. gracza, i czy σ ∗ jest strategią bezpieczeństwa dla 2. Jak się okaże, to uprości nam obliczenia. Zacznijmy od zapisania, co oznacza, że µ∗ jest strategią bezpieczeństwa: min u(µ∗ , σ) = max min u(µ, σ). σ µ σ A więc szukamy µ∗ , maksymalizującego minσ u(µ, σ). Tę ostatnią wielkość możemy rozpisać jako X X X σj µi aij = min µi aij , min σ j j i i gdzie ostatnia równość wynika z tego, że średnia ważona kilku wielkości (a tak możemy rozumieć sumę z lewej strony) jest nie mniejsza od najmniejszej z tych wielkości, przy czym, jeśli przyjmiemy za σi przy najmniejszej z wielkości jedynkę, to dostaniemy równość. µ∗ maksymalizujące tę ostatnią wielkość, to inaczej µ∗ , maksymalizujące v przy zaP łożeniu, że i µi aij ­ v (w ten sposób pozbywamy się ostatniego minimum). Tyle że takie zadanie maksymalizacyjne jest programem liniowym5 , a każdy program liniowy jesteśmy w stanie rozwiązać w czasie wielomianowym. 5 Problem programowania liniowego to najlepiej znany problem optymalizacyjny (w związku z tym, jeśli ktoś z państwa w przyszłości zapisze się na zajęcia z optymalizacji, to tam będzie to bardzo dokładnie omówione (bodaj przez pół semestru)) Ogólnie można go zapisać następująco: Znaleźć maksimum m X ci xi i=1 przy ograniczeniach m X aij xi ¬ bj dla j = 1, . . . , n, i=1 xi ­ 0 Macierzowo możemy zapisać to następująco: Dla zadanych C1×m , Am×n , bn×1 zmaksymalizować C T x przy ograniczeniach AT x ¬ B, x ­ 0. Istnieje wiele algorytmów rozwiązywania problemów programowania liniowego, z których najbardziej znanym i najczęściej stosowanym jest algorytm sympleks. Algorytm sympleks ma w najgorszym razie wykładniczą złożoność, ale istnieją twierdzenia, mówiące o tym, że przy pewnych założeniach wartość oczekiwana czasu działania sympleksu jest wielomianowa. Ponadto istnieją inne algorytmy, jak algorytm Karmarkara, które mają złożoność wielomianową zawsze, ale nie stosuje się ich, bo w większości przypadków mimo tej wielomianowej złożoności, są wolniejsze od sympleksu. 17 2.3 Równowagi przybliżone i skorelowane Ponieważ szukanie równowag Nasha okazuje się być dosyć trudnym zadaniem, czasem próbuje się temu zaradzić przez powiększenie zbioru możliwych rozwiązań. Pomysłów na powiększenie tego zbioru istnieje wiele, ale dwa zyskały szczególne powodzenie ze względu na swoją prostotę. Pierwszy z tych sposobów polega na tym, że zamiast szukać strategii, spełniających układ nierówności definiujących równowagę Nasha, będziemy szukać takich strategii, że te nierówności będą spełnione w pewnym przybliżeniu. Dokładniej, dla ustalonego ε > 0, strategie µ∗ i σ ∗ mają spełniać układ nierówności u1 (µ∗ , σ ∗ ) ­ u1 (µ, σ ∗ )(1 − ε) dla dowolnej strategii µ, u2 (µ∗ , σ ∗ ) ­ u2 (µ∗ , σ)(1 − ε) dla dowolnej strategii σ. Takie strategie będziemy nazywać ε-równowagami.6 Nietrudno zauważyć, że w większości gier zbiory równowag przybliżonych będą dużo większe niż zbiory równowag Nasha (na ogół będzie ich nieskończenie wiele, podczas gdy tych drugich w typowych grach jest skończona liczba), co mogłoby sugerować, że znaleźć ε-równowagę będzie dużo łatwiej niż równowagę. Niestety, okazuje się, że dla ogólnych gier dwumacierzowych algorytmy o złożoności wielomianowej istnieją tylko dla 1 -równowag, czyli rozwiązań bardzo mało dokładnych. Jeśli chodzi o mniejsze wartości 2 ε, istnieją algorytmy pozwalające na znalezienie ε-równowag w czasie lepszym niż wykładniczy, ale gorszym niż wielomianowy. Być może jednak uda się skonstruować szybsze algorytmy w przyszłości. Drugi sposób pochodzi od Aumanna, i polega na powiększeniu zbioru rozwiązań w inny sposób. Mianowicie: równowaga Nasha w strategiach mieszanych (w grze dwumacierzowej) składa się z dwóch rozkładów prawdopodobieństwa, jednym skupionym na zbiorze strategii czystych jednego gracza, drugim – na drugiego. Pomysł Aumanna polega na tym, żeby te dwa rozkłady prawdopodobieństwa zastąpić jednym, na produkcie kartezjańskim zbiorów strategii obu graczy, jednocześnie zostawiając warunki optymalności w zasadzie takie jak w przypadku równowagi Nasha. Konkretniej – równowagą skorelowaną będzie taki rozkład prawdopodobieństwa na parach strategii obu graczy, z którego jeśli wylosujemy parę strategii (x, y) i każdego z graczy poinformujemy o tym, jaka jest jego współrzędna, to żaden z nich nie zmieni strategii, którą mu zaproponowano, na inną (przy założeniu, że przeciwnik pozostanie przy wylosowanej strategii). Jeśli macierzami wypłat w naszej grze będą A i B, to rozkład p na X × Y będzie równowagą skorelowaną wtedy i tylko wtedy, gdy będzie spełniał nierówności X aij pij ­ j X i 6 X ai0 j pij dla każdych i, i0 ∈ X, bij 0 pij dla każdych j, j 0 ∈ Y. j bij pij ­ X i Alernatywnie ε-równowagi można definiować przy pomocy warunków u1 (µ∗ , σ ∗ ) ­ u1 (µ, σ ∗ ) − ε, u2 (µ∗ , σ ∗ ) ­ u2 (µ∗ , σ) − ε (tak się je zwykle definiuje), jednak my będziemy używać formy multiplikatywnej, która jest zgodna z nomenklaturą stosowaną zwykle przy omawianiu algorytmów aproksymacyjnych. 18 Nietrudno zauważyć, że są to nierówności liniowe, a zatem tu też (podobnie jak w przypadku równowag Nasha w grach macierzowych) do znalezienia rozwiązania można zastosować programowanie liniowe. 2.4 Szukanie równowag w grach n-osobowych W przypadku gier więcej niż dwóch graczy w liczeniu równowag napotykamy kilka różnych trudności. Po pierwsze, jeśli graczy jest wielu (a w ewentualnych zastosowaniach teorii gier do modelowania rzeczywistości tak zwykle będzie) sam opis gry staje się trudną sprawą – liczba wielkości opisujących grę rośnie bowiem wykładniczo wraz ze wzrostem liczby graczy. W związku z tym, nawet przy zastosowaniu bardzo szybkiego algorytmu szukania równowag, ich liczenie będzie nieefektywne. Tego problemu w ogólności nie daje się wyeliminować. Jest natomiast wiele „typów” gier, dla których opis gry może być zrobiony w inny sposób niż przy pomocy wielowymiarowych macierzy wypłat, i to tak, aby zwiększanie liczby graczy nie powodowało gwałtownego wzrostu złożoności opisu gry. Dla takich gier często istnieją szybkie algorytmy liczenia równowag (na ogół równowag przybliżonych lub skorelowanych, rzadziej równowag Nasha). Drugim problemem7 , jaki pojawia się przy liczeniu równowag dla gier więcej niż dwóch graczy, jest to, że tego problemu nie daje się już sprowadzić do pewnego układu warunków, z których tylko jeden nie jest liniowy (jak w przypadku LCP). Tutaj, jeśli spróbujemy podejść do szukania równowag w podany sposób, dostaniemy nieliniowy odpowiednik problemu komplementarności liniowej, tzn. problem znalezienia z takiego, że: z ­ 0, f (z) ­ 0, zj fj (z) = 0 j = 1, . . . , n, gdzie f jest pewną nieliniową funkcją o wartościach z Rn . To nie jest banalny problem, i jakkolwiek istnieją algorytmy dla gier n-osobowych oparte na tym spostrzeżeniu (niektóre z nich są uogólnieniami algorytmu Lemke-Howsona – te powstały na początku lat siedemdziesiątych), tyle że akurat te algorytmy są bardzo trudne do zaimplementowania. W związku z tym stosuje się inne podejście – mianowicie, jak pokazaliśmy na jednym z wcześniejszych wykładów, problem szukania równowagi w grze jest równoważny (właściwie pokazaliśmy tylko wynikanie w jedną stronę, ale prawdziwe jest w obie) pewnemu problemowi szukania punktu stałego. W związku z tym do szukania równowag w grach n-osobowych stosuje się algorytmy szukania punktu stałego funkcji ciągłej na zbiorze zwartym. Najbardziej znanym algorytmem tego rodzaju jest algorytm Scarfa (oczywiście o wykładniczej złożoności). 7 Tego nie było na wykładzie. 19