Rozdział 2 Algorytmy szukania równowag w grach dwumacierzowych

advertisement
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
Download