Rozdział 1 Gry niekooperacyjne w postaci strategicznej 1.1 Gry

Transkrypt

Rozdział 1 Gry niekooperacyjne w postaci strategicznej 1.1 Gry
Rozdział 1
Gry niekooperacyjne w postaci
strategicznej
1.1
Gry dwuosobowe o sumie zerowej
Większość teorii matematycznych powstała do opisu pewnych konkretnych elementów rzeczywistości i nie inaczej jest z teorią gier. Ją stworzono dla opisu sytuacji konfliktowych i
sposobów z nich wychodzenia, bądź przez współzawodnictwo, bądź przez kooperację. Oczywiście w założeniu taka teoria powinna dawać odpowiedź na pytanie: jak w danej sytuacji
ludzie postąpią – niestety, jak w każdej teorii, teoria gier ma swoje założenia, w które ludzie, głupi, nie chcą się wpasować. Wniosek z tego taki, że teoria gier nie jest najlepszym
narzędziem przewidywania przyszłości – do tego wciąż najlepsza jest szklana kula – może
nam natomiast dać odpowiedź na pytanie, jak powinni postąpić, jeśli byliby racjonalni. I
od paru słów na temat tego, jak opisać sytuację konfliktu, oraz tego, co będziemy rozumieć
pod pojęciem racjonalności, zaczniemy.
Zastanowimy się nad tym na prostym przykładzie sytuacji, w której mamy dwóch podejmujących decyzje i ich interesy są całkowicie przeciwstawne, więc nie ma mowy o jakiejkolwiek kooperacji, i dzięki temu można w miarę jasno wyekstrahować istotę tego, jakie
działanie możemy rozumieć jako racjonalne. Większość przykładów, które będą się pojawiały na tym wykładzie, będzie jakimś uproszczeniem sytuacji z życia wziętych, ewentualnie
będzie opisywało jakieś zjawiska ekonomiczne – tyle że tam bardzo trudno o sytuacje, w
których interesy poszczególnych stron są całkowicie przeciwstawne – stąd przykład będzie
z dziedziny „gier wojennych”, czyli w praktyce takiej zabawy w żołnierzyki dla dużych
chłopców.
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 (ewent. jako atakujących 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 armia posiadająca na danym
odcinku przeważającą siłę na pewno bitwę o dany fort wygra, a jeśli siły są równe, to z
prawdopodobieństwem 12 wygra jeden, i z prawdopodobieństwem 21 drugi. Jeśli o dany fort
nie toczy się walka, to zostaje on we władaniu państwa A. Taka bardzo prosta gra.
W naturalny sposób możemy to opisać tak, że wypiszemy wszystkie możliwe decyzje
jednego gracza, wszystkie możliwe decyzje drugiego, i w tabelce zapiszemy, co się w danym
1
przypadku dzieje:
20
11
20 fort 1 z pr.0.5 zdobyty przez B, fort 2 zostaje w A . . .
11
...
...
02
...
...
02
...
...
...
Teraz co z informacji, które zawarliśmy w tabelce jest istotne - na co będą zwracać
uwagę podejmujący decyzje? Na to, ilu żołnierzy poległo, dostało się do niewoli, który
oddział wygrał, a który przegrał – nie! Istotny jest tylko efekt końcowy, czyli to, ile fortów
zdobyto, i (ewentualnie), czy efekt (pozytywny) operacji jest pewny, czy tylko z pewnym
prawdopodobieństwem. W takim razie po odrzuceniu nadmiarowej informacji dostajemy
taki opis gry:
20 11
02
20 −0.5 −1
−1
11
−1 −1
−1
02
−1 −1 −0.5
I w ten sposób dostaliśmy naturalny opis gry – przy pomocy zbiorów strategii dostępnych poszczególnym graczom oraz macierzy tego, co wypłaca drugi gracz pierwszemu w
zależności od tego, jakie strategie stosują. Ogólnie:
Definicja 1.1 Grą dwuosobową o sumie zerowej nazwiemy trójkę (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).
Drugim problemem, który postawiliśmy, było to, co będzie uważane za racjonalne w
grze. Wróćmy do naszego przykładu i zastanówmy się, jak postąpią gracze, i dlaczego?
↓
11
−1
−1
−1
20
→ 20 −0.5
lub 11
−1
→ 02
−1
02
−1
−1
−0.5
Drugi gracz (generał B) wybiera drugą kolumnę, bo wtedy powinien zdobyć jeden fort
niezależnie od tego, co zrobi pierwszy (generał A). Generał A natomiast wybierze jedną z
możliwości przy których może coś zyskać, czyli 1. lub 3. wiersz.
Na tej podstawie możemy zapisać, że za racjonalne będziemy uważać takie zachowania
jak:
1. Maksymalizowanie własnej wypłaty
2. Unikanie sytuacji, w których możemy więcej stracić, jeśli przeciwnik zagra dla nas
niekorzystnie
3. Odrzucanie decyzji, od których mamy lepsze
Zgodnie z tymi zasadami (przynajmniej z dwoma pierwszymi) gracz 1. będzie się starał
wybrać taką strategię, żeby zmaksymalizować swoją wypłatę przy założeniu, że przeciwnik będzie się starał mu jak najbardziej zaszkodzić. Podobnie – gracz 2. będzie wybierał
tak, żeby wypłacić graczowi 1. jak najmniej, zakładając, że ten będzie grał w najbardziej
dla siebie korzystny sposób. Patrząc na przykład, widzimy, że gracze właśnie tak robią.
Spróbujmy to teraz sformalizować.
2
Definicja 1.2 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
Można udowodnić (i my to pokażemy na ćwiczeniach), że v ¬ v. W naszym przykładzie
mamy równość.
Ale czy zawsze jest równość? Nie. Np. w grze z X = Y = {1, 2} oraz
(
1
gdy x = y
u(x, y) =
, v = −1, a v = 1.
−1 gdy x 6= y
Czym się zatem różnią dwa podane przez nas przykłady? Otóż w pierwszym z nich
istnieją takie strategie x∗ ∈ X, y ∗ ∈ Y , że u(x∗ , y ∗ ) = supx∈X u(x, y ∗ ) = inf y∈Y u(x∗ , y). Z
tego wynika, że
v = sup inf u(x, y) ­ inf u(x∗ , y) = sup u(x, y ∗ ) ­ inf sup u(x, y) = v.
x∈X y∈Y
y∈Y
x∈X
y∈Y x∈X
Czyli wartość górna jest równa wartości dolnej (i w dodatku równa wypłacie gracza 1., gdy
gracze używają strategii x∗ i y ∗ ).
Definicja 1.3 Jeśli v = v, to tę wspólną wartość nazywamy wartością gry i oznaczamy
przez v. Jeśli dodatkowo istnieją x∗ ∈ X, y ∗ ∈ Y , takie że u(x∗ , y ∗ ) = supx∈X u(x, y ∗ ) =
inf y∈Y u(x∗ , y), mówimy, że strategie x∗ i y ∗ są optymalne dla graczy 1. i 2., lub że (x∗ , y ∗ )
tworzą punkt siodłowy w grze.
Uwaga 1.1 Mówimy o strategiach optymalnych poszczególnych graczy, a nie tylko o optymalnej parze strategii, bo strategie optymalne danego gracza można między sobą wymieniać
(ten fakt udowodnimy sobie na ćwiczeniach).
Mamy zatem pewną koncepcję rozwiązania, przynajmniej dla pewnej klasy gier o sumie zerowej. Nie dla wszystkich jednak, a chcięlibyśmy mieć jakąś możliwość rozwiązania
możliwie jak najszerszej klasy gier. Na pewien pomysł, jak to zrobić, wpadł von Neumann,
i temu jego pomysłowi poświęcimy resztę wykładu. Ten sposób będzie skuteczny tylko dla
gier ze skończonymi zbiorami akcji graczy. Wypłaty dla takich gier (jak w przykładzie)
można zapisać przy pomocy macierzy, stąd będziemy je nazywać grami macierzowymi.
Gry macierzowe o sumie zerowej
X = {1, 2, . . . , m} – zbiór wierszy macierzy, Y = {1, 2, . . . , n} – zbiór kolumn macierzy
Wypłatę gracza 1. zapisujemy przy pomocy macierzy m × n A = [u(i, j)], i ∈ X, j ∈ Y .
Rozszerzenie mieszane gry macierzowej zdefiniowanej powyżej:
Zbiorami strategii graczy są P (X) i P (Y ) (gdzie P (A) oznacza zbiór rozkładów prawdopodobieństwa o nośniku w zbiorze A). Elementy µ ∈ P (X) oraz σ ∈ P (Y ) będziemy nazywać
strategiami mieszanymi graczy (w odróżnieniu od elementów X i Y , które nazywamy strategiami czystymi), a wypłatę definiujemy następująco:
u(µ, σ) =
XX
i
u(i, j)µi σj ,
j
gdzie µi to prawdopodobieństwo wylosowania i z rozkładu µ, a σj – prawdopodobieństwo
wylosowania j z σ.
3
Oczywiście praktycznie rozszerzenie mieszane interpretuje się w ten sposób, że gracze,
zamiast wybrać jeden wiersz (jedną kolumnę) macierzy A, wybierają rozkład prawdopodobieństwa, zgodnie z którym losują ten wiersz (tę kolumnę), a jako wypłaty graczy stosujemy
wartość oczekiwaną z ich wypłat.
Jeśli zastosujemy rozszerzenie mieszane, prawdziwe będzie następujące twierdzenie:
Twierdzenie 1.1 (von Neumann, 1928) W każdej grze macierzowej o sumie zerowej istnieje para optymalnych strategii mieszanych tzn. µ∗ ∈ P (X), σ ∗ ∈ P (Y ) takie że
u(µ, σ ∗ ) ¬ u(µ∗ , σ ∗ ) ¬ u(µ∗ , σ) ∀µ ∈ P (X), σ ∈ P (Y ).
Dowodu tego twierdzenia nie będę podawał, bo wynika z twierdzenia Nasha, które udowodnimy za tydzień.
Wniosek 1.1 W strategiach mieszanych każda gra macierzowa posiada wartość.
Uwaga 1.2 To że u(µ, σ) = v nie oznacza, że µ i σ są optymalne. Np. w grze z macierzą
wypłat
"
#
1 0
A=
0 0
wybór pierwszej kolumny i drugiego wiersza nie jest optymalny, a wartość gry jest równa
0.
Niestety, trick z rozszerzeniem mieszanym nie działa już dla gier z większymi zbiorami
akcji graczy. Łatwo znaleźć przykład gry z przeliczalnymi zbiorami strategii czystych, dla
której gra nie posiada wartości w strategiach mieszanych.
Przykład: Niech X = Y = {1, 2, . . .} oraz u(x, y) = sgn(x − y). Rozważmy rozszerzenie
P
P
µi = 1}, P (Y ) = {σ : σi ­ 0, ∞
mieszane tej gry: P (X) = {µ : µi ­ 0, ∞
i=1 σi = 1},
i=1
P∞ P∞
u(µ, σ) = i=1 j=1 u(i, j)µi σj .
W takiej grze v = −1, a v = 1.
Oba te fakty pokazuje się podobnie, więc udowodnię tylko pierwszy. Weźmy dowolne µ ∈
P
P (X) oraz ε > 0. Niech nε będzie takie, że ∞
i=nε +1 µi < ε. Określmy teraz strategię gracza
2. jako σµ = δ[nε ].
u(µ, σµ ) =
∞
X
u(i, nε )µi =
i=1
= −
nX
ε −1
(−1)µi +
i=1
∞
X
µi − µnε + 2
i=1
∞
X
(1)µi
i=nε +1
∞
X
µi < −1 + 2ε
i=nε +1
Ponieważ ε było dowolne, dostajemy
inf u(µ, σ) ¬ −1,
σ∈P (Y )
ale skoro dowolnie było też wybrane µ, to mamy
sup
inf u(µ, σ) ¬ −1.
µ∈P (X) σ∈P (Y )
Oczywiście w rzeczywistości mamy równość, bo w grze nie ma wypłat mniejszych niż -1.
4
1.2
Gry o sumie niezerowej
Na ostatnim wykładzie mówiłem o grach opisujących sytuację, gdy mamy dwóch graczy,
których interesy są całkowicie przeciwstawne – taką sytuację opisywały gry macierzowe, czy
ogólniej gry dwuosobowe o sumie zerowej. Dzisiaj uogólniamy tamten model. Zaczniemy
od sytuacji, gdy mamy dwóch graczy, których interesy nie są dokładnie przeciwne.
Gry dwumacierzowe
Niech X = {1, 2, . . . , m} – zbiór strategii (czystych) gracza 1., Y = {1, 2, . . . , n} – zbiór
strategii (czystych) gracza 2. Niech A = [aij ]m×n – macierz wypłat gracza 1., B = [bij ]m×n
– macierz wypłat gracza 2. (Oczywiście, te wypłaty są czysto subiektywne, i mówią o tym,
co dany gracz myśli o danej sytuacji, a nie muszą oznaczać jakichś konkretnych wypłat,
które jeden z graczy wypłaca drugiemu, lub ktoś trzeci (Pan Bóg) wypłaca graczom). Jak
poprzednio, rozważamy od razu rozszerzenie mieszane takiej gry, czyli dowolny rozkład
prawdopodobieństwa na zbiorze X, µ = (µ1 , . . . , µm ) jest strategią mieszaną gracza 1;
rozkład prawdopodobieństwa na zbiorze Y , σ = (σ1 , . . . , σn ) – strategią mieszaną gracza
2., natomiast wypłatami poszczególnych graczy są odpowiednie wartości oczekiwane:
u1 (µ, σ) =
XX
i
aij µi σj
u2 (µ, σ) =
j
XX
i
bij µi σj .
j
Jak pamiętają Państwo, w grach o sumie zerowej optymalnym zachowaniem było wybranie przez gracza najkorzystniejszej dla siebie strategii przy założeniu, że przeciwnik będzie
grał najgorzej dla nas. Tam uzasadnieniem takiego zachowania było to, że interesy graczy
były dokładnie przeciwne, i wiedzieliśmy, że przeciwnik wybierze to, co dla nas najbardziej
niekorzystne, dlatego że to było jednocześnie najbardziej korzystne dla niego. Tutaj nie
mamy powodu, żeby oczekiwać, że przeciwnik będzie specjalnie działał na naszą niekorzyść
(nie wszyscy gracze są Polakami) – więc naturalnym jest, że każdy z graczy stara się zmaksymalizować własną wypłatę, przy założeniu, że inni też starają się zmaksymalizować swoje
wypłaty. Autorem takiej koncepcji rozwiązania jest John Nash (stąd nazwa).
Definicja 1.4 Równowagą w sensie Nasha w grze dwumacierzowej nazwiemy taką parę
strategii µ∗ ∈ P (X), σ ∗ ∈ P (Y ), że
u1 (µ∗ , σ ∗ ) ­ u1 (µ, σ ∗ )
u2 (µ∗ , σ ∗ ) ­ u1 (µ∗ , σ)
∀µ ∈ P (X)
∀σ ∈ P (Y ),
czyli taką, że odstąpienie od równowagi przez pojedynczego gracza nie jest dla niego opłacalne.
Uwaga 1.3 Oczywiście, jeśli B = −A, czyli u1 = −u2 , równowagą Nasha sprowadza się
do punktu siodłowego.
Równowaga w sensie Nasha wydaje się na tyle naturalnym uogólnieniem punktu siodłowego, że pewnie duża część z Państwa by ją wymyśliła, i aż narzuca się pytanie, dlaczego
von Neumann jej nie wymyślił. Jedna z możliwych odpowiedzi jest taka, że pewnie wymyślił, ale uznał takie rozwiązanie za wadliwe. I teraz parę słów na temat tego, co w pojęciu
NE nie jest do końca udane.
Rozważmy taki przykład:
Przykład: Mamy dwoje małżonków, którzy właśnie wysłali dzieci do dziadków na wieczór,
i planują spędzić razem wieczór, tylko zastanawiają się jak. Kanoniczna wersja tej historyjki
jest taka , że Pani chce iść na balet, Pan na boks (co prawda niewielu znam facetów, którzy
chcieliby iść na boks, i jeszcze mniej kobiet, które chciałyby na balet, ale będę się trzymał
5
tej wersji). Jeśli każde z nich będzie obstawać przy swoim, nigdzie nie pójdą, w dodatku
pewnie się pokłucą i Pani będzie miała migrenę czy jakąś inną wymówkę, żeby już nic
razem znim nie robić tego wieczoru, a może obrazić się na następnych kilka dni, w drugą
stronę podobnie, w związku z tym taka sytuacja będzie ze wszech miar niekorzystna. W
związku z tym macierze wypłat graczy będą wyglądały tak:
"
A (Pani) =
4 0
0 1
#
"
B (Pan) =
1 0
0 4
#
.
Ta gra ma dwie równowagi w strategiach czystych: (boks,boks) i (balet, balet), oraz jedną
w strategiach mieszanych: µ = (.8, .2), σ = (.2, .8). W tej ostatniej wypłaty garczy są sobie
równe, i równe 45 .
Co z tego przykładu wynika?
1. Może istnieć wiele różnych równowag Nasha ze znacząco różnymi wypłatami. Może
się zdarzyć, że jedna równowaga jest bardziej opłacalna dla jednego z graczy, a inna
dla drugiego.
2. Strategii w różnych równowagach nie można między sobą wymieniać. Bez uzgodnienia, która równowaga będzie grana, nie da się racjonalnie wybrać strategii
do gry.
3. Wiedząc, jaki jest zbiór równowag Nasha w danej grze, nie potrafimy powiedzieć, jak będą zachowywać się gracze (nawet przy założeniu, że grają
racjonalnie.)
Kolejny przykład pokaże jeszcze jedną wadę rozwiązania Nasha.
Przykład: (dylemat więźnia – najbardziej znany przykład w teorii gier). Historyjka jest
taka: dwóch więźniów podejrzanych o jakieś przestępstwo, jest przesłuchiwanych w oddzielnych pokojach. Są winni, ale każdy z nich zastanawia się, czy się przyznać, czy nie. Jeśli się
przyzna (zrzucając przy okazji większość winy na drugiego), a drugi więzień będzie szedł w
zaparte, pierwszy może liczyć na to, że dostanie wyrok w zawiasach, ale kosztem wspólnika.
Jeśli żaden się nie przyzna, to głównej winy nikt im nie udowodni, ale przymkną ich na
rok za to, co są w stanie im udowodnić bez współpracy żadnego z nich. Jeśli przyznają się
obaj, sąd nie uwerzy w ich skruchę, ale odpowiedzialnością obarczy w tym samym stopniu,
i dostaną wyrok nieco niższy niż ten, który się nie przyzna, a cała wina zostanie jemu
przypisana. Macierze wypłat w tej grze wyglądają tak:
"
A=
−5 0
−10 −1
#
"
B=
−5 −10
0
−1
#
.
Ta gra posiada dokładnie jedną równowagę, i to w strategiach czystych – obaj się przyznają.
Problem w tym, że gdyby obaj odstąpili od równowagi, zyskaliby na tym.
Wniosek:
4. Równowaga nie musi dawać optymalnych wypłat w grze. Jeśli osiągnięcie takich wypłat wiąże się z kooperacją, nie będzie to równowaga.
Mimo tych wszystkich wad, równowaga Nasha ma jedną ważną zaletę – zawsze istnieje
(przynajmniej dla gier dwumacierzowych, dla bardziej skomplikowanych bytów niekoniecznie, o czym później). Twierdzenie stwierdzające ten fakt sformułował John Nash.
Twierdzenie 1.2 (Nash, 1950) Każda gra dwumacierzowa posiada równowagę w sensie
Nasha.
6
I znowu, nie będziemy dowodzić tego twierdzenia. Udowodnimy twierdzenie trochę ogólniejsze, które za chwilkę podam. Żeby je podać, zdefiniuję ogólnie, co nazywamy grą niekooperacyjną.
Definicja 1.5 n-osobową grą niekooperacyjną nazwiemy Γ = (X1 , . . . , Xn , u1 , . . . , un ),
gdzie Xi – (niepuste) zbiory strategii poszczególnych graczy, ui : X1 × · · · × Xn → R
– ograniczone funkcje wypłaty poszczególnych graczy. Gracze wybierają niezależnie od siebie odpowiednio x1 ∈ X1 , x2 ∈ X2 , . . . , xn ∈ Xn , w wyniku czego gracz k-ty otrzymuje
uk (x1 , . . . , xn ).
W powyższej definicji nie precyzujemy, czy Xi są zbiorami strategii czystych, czy mieszanych. Pokażemy, że przy pewnych założeniach na te zbiory, oraz na funkcje wypłaty graczy,
gra będzie posiadała strategie należące wąśnie do tych zbiorów.
Definicja 1.6 Równowagą w sensie Nasha w grze Γ zdefiniowanej powyżej nazwiemy układ
strategii x∗ = (x∗1 , . . . , x∗n ) takich, że dla każdego gracza i oraz yi ∈ Xi mamy
ui (x∗ ) ­ ui ((x∗1 , . . . , x∗i−1 , yi , x∗i+1 , . . . , x∗n )).
Oznacza to, jak poprzednio, że pojedynczemu graczowi nie opłaca się odstąpić od równowagi, gdy inni pozostają przy swoich strategiach x∗i .
Prawdziwe będzie następujące twierdzenie:
Twierdzenie 1.3 Załóżmy, że każdy ze zbiorów Xi jest zwartym wypukłym podzbiorem Rk .
Załóżmy ponadto, że dla każdego i funkcja ui jest ciągła na X1 × · · · × Xn oraz jest wklęsła
względem i-tej zmiennej, przy ustalonych pozostałych zmiennych. Wtedy gra Γ, określona
przez zbiory Xi i funkcje ui , posiada równowagę Nasha.
Uwaga 1.4 Dla tych, którzy nie wiedzą – podzbiór przestrzeni metrycznej nazywamy
zwartym, jeśli każdy ciąg elementów tego zbioru posiada podciąg zbieżny. W Rk zbiór
jest zwarty iff jest domknięty i ograniczony.
Zanim przejdziemy do dowodu tej uogólnionej wersji twierdzenia Nasha, sformułujemy
twierdzenie, które będzie punktem wyjściowym dla tego dowodu.
Twierdzenie 1.4 (Twierdzenie Kakutaniego o punkcie stałym) Niech S będzie zwartym
wypukłym podzbiorem Rk i niech ψ będzie operatorem przyporządkowującym każdemu s ∈ S
zwarty, wypukły podzbiór S, o wykresie domkniętym, (tzn. jeśli xn ∈ S, xn → x0 , yn ∈
ψ(xn ), yn → y0 , to y0 ∈ ψ(x0 )). Istnieje wtedy takie x∗ , że x∗ ∈ ψ(x∗ ) (punkt stały
multifunkcji ψ).
Tak naprawde chętnie przeprowadziłbym dowód też tego twierdzenia, żeby wychodzić od
faktów przez Państwa znanych, ale to wymagałoby wprowadzenia ileś dodatkowej teorii (sympleks, współrzędne barycentryczne, podział symplicjalny, twierdzenie Brouwera o
punkcie stałym), w związku z tym twierdzenie Kakutaniego będę traktował jako punkt
wyjściowy, natomiast osobom zainteresowanym dowodem tego twierdzenia polecam przeczytanie XX rozdziału „Wstępu do teorii mnogości i topologii” Kuratowskiego [2] (Sympleks
i jego własności). Wtedy poniższy dowód powinien być zrozumiały.
Dowód tw Kakutaniego: Bez straty ogólności możemy założyć, że S jest sympleksem. Niech
{πµ } będzie ciągiem rozbić symplicjalnych sympleksu S, takich że średnica każdego sympleksu z
πµ nie przekracza δµ i δµ → 0.
Zdefiniujmy ψ µ : S → S w następujący sposób: jeśli x jest wierzchołkiem sympleksu z πµ , to za
µ
ψ (x) przyjmujemy dowolne s ∈ ψ(x), a następnie przedłużamy ψ µ liniowo na każdy z sympleksów
7
rozbicia, tzn. jeśli x = k+1
λj = 1, gdzie {x1 , . . . , xk+1 } — wierzchołki ustalonego
j=1 λj xj , λi ­ 0,
Pk+1
µ
µ
sympleksu z πµ , to ψ (x) = j=1 λj ψ (xj ). Tak zdefiniowane ψ µ jest ciągłe, a zatem na mocy
twierdzenia Brouwera ma punkt stały, który możemy oznaczyć przez xµ . Ponadto
P
P
xµ =
k+1
X
j=1
λµj xµj ,
k+1
X
λµj = 1, λµj ­ 0.
j=1
Ze zwartości S można założyć bez straty ogólności, że xµi , λµi , ψ µ (xµi ) są zbieżne przy µ → ∞; xµi
oraz xµ mają tę samą granicę x∗ ∈ S. Niech limµ λµj = λ∗j , a limµ ψ µ (xµj ) = ηj∗ .
P µ µ µ
P ∗ ∗
Mamy xµ = ψ µ (xµ ) =
λj ψ (xj ). Wtedy x∗ =
λj ηj , a z własności, które spełnia ψ
∗
∗
∗
∗
wynika, że ηj ∈ ψ(x ) dla każdego j. Stąd x ∈ ψ(x ), bo ψ(x∗ ) jest wypukły, a więc x∗ jest
szukanym punktem zbioru S. Dowód tw. Nasha: Idea tego dowodu polega na tym, żeby skonstruować odwzorowanie,
które będzie miało punkt stały wtedy i tylko wtedy, gdy gra posiada równowagę Nasha.
Wtedy sprawdzimy, że to odwzorowanie spełnia założenia twierdzenia Kakutaniego, zatem
ma punkt stały, a gra ma równowagę. Dowód twierdzenia przeprowadzimy dla przypadku,
gdy jest dwóch graczy. Ta zmiana upraszcza jedynie notację, natomiast dowód w ogólnym
przypadku nie jest ani trochę bardziej skomplikowany.
Niech:
B1 (y) = {a ∈ X1 : u1 (a, y) = max u2 (x, y)},
x∈X1
B2 (x) = {b ∈ X2 : u2 (x, b) = max u2 (x, y)}.
y∈X2
Zbiór B1 (y) interpretujemy jako zbiór najlepszych odpowiedzi 1. gracza na strategię y
drugiego. Podobną interpretację ma zbiór B2 (x). Jeśli teraz zdefiniujemy sobie multifunkcję
F (x, y) = B1 (y) × B2 (x),
to to będzie to odwzorowanie, którego szukamy, bo ewentualny punkt stały takiego odwzorowania (x∗ , y ∗ ) ∈ F (x∗ , y ∗ ) będzie miał taką własność, że x∗ będzie najlepszą odpowiedzią
na strategię y ∗ i na odwrót, czyli to będzie równowaga Nasha.
Sprawdźmy zatem, czy spełnione są założenia twierdzenia Kakutaniego.
1. Multifunkcja F jest zdefiniowana na zbiorze U = X1 × X2 , który jest zwarty. To
można uzasadnić na wiele sposobów (wyciągając podciąg zbieżny z jednej współrzędnej, a potem z niego podciąg zbieżny po drugiej, lub mówiąc, że produkt zbiorów
domkniętych i ograniczonych też ma tę własność). Jest też wypukły jako produkt
zbiorów wypukłych.
2. Zbiory B1 (y) (B2 (x)) są zawsze niepuste, bo każda funkcja ciągła na zbiorze zwartym
osiąga swoje supremum na tym zbiorze.
3. Funkcja u1 (·, y) jest wklęsła dla każdego y ∈ X2 , stąd jeśli dla ustalonego y osiąga ona
maksimum dla x1 oraz x2 , to musi osiągać je także dla kombinacji wypukłych tych
punktów, a to oznacza, że dla każdego y, zbiór B1 (y) jest wypukły. Podobnie można
uzasadnić wypukłość B2 (x). Ponieważ iloczyn kartezjański dwóch zbiorów wypukłych
też jest wypukły, to F (x, Y ) jest zbiorem wypukłym dla dowolnych x i y.
4. Weźmy teraz dowolny ciąg {xi } elementów zbioru B1 (y) dla dowolnego ustalonego
y, zbieżny do pewnego x. Ponieważ funkcja u1 jest ciągła, to x też należy do B1 (y).
Zatem zbiór ten jest domknięty. Jako podzbiór X1 jest także ograniczony, a zatem
zwarty. Podobnie pokazujemy, że B2 (x) są zbiorami zwartymi. Oczywiście F (x, y),
jako iloczyn kartezjański zbiorów zwartych, jest dla dowolnych x i y także zbiorem
zwartym (patrz punkt 1.).
8
5. Domkniętość wykresu. Znowu (bez utraty ogólności) ograniczymy się do jednej współrzędnej. Załóżmy nie wprost, że wykres B1 nie jest domknięty, czyli istnieje ciąg
{(xn , yn )} zbieżny do (x, y) taki, że xn ∈ B1 (yn ), ale x 6∈ B1 (y). Pierwsza z tych
równości oznacza, że
u1 (a, yn ) ¬ u1 (xn , yn ) ∀a ∈ X1 ,
ale ponieważ u1 jest ciągła, więc prawdziwe musi być także
u1 (a, y) ¬ u1 (x, y) ∀a ∈ X1 ,
co jest równoważne x ∈ B1 (y) – sprzeczność. Czyli wykres naszego odwzorowania jest
domknięty.
A zatem wszystkie założenia twierdzenia Kakutaniego są spełnione, więc gra Γ posiada
równowagę Nasha. Wniosek 1.2 Twierdzenie Nasha dla gier dwumacierzowych wynika z powyższego twierdzenia w następujący sposób:
Niech X1 = P (W ), gdzie W = {1, . . . , m} – zbiór wierszy macierzy, a X2 = P (K), gdzie
K = {1, . . . , n} – zbiór kolumn. Dowolny rozkład prawdopodobieństwa µ = (µ1 , . . . , µm ) ∈
P
P (W ) jest układem m liczb spełniających warunki i µi = 1, µi ­ 0 ∀i. Zbiór takich µ jest
wypukłym i zwartym podzbiorem Rm . Podobnie w przypadku zbioru strategii mieszanych
2. gracza. Z kolei wypłata gracza 1. (podobnie z wypłatą 2.), gdy używane są strategie µ
P P
i σ, u1 (µ, σ) = i j Aij µi σj jest funkcją liniową (właściwie afiniczną) względem µ i σ z
osobna; taka funkcja jest też w szczególności ciągła i wklęsła. A zatem spełnione są założenia udowodnionego przez nas uogólnionego twierdzenia Nasha, i gra posiada równowagę
w strategiach z X1 i X2 , czyli strategiach mieszanych w wyjściowej grze dwumacierzowej.
Wniosek 1.3 Oczywiście, jeśli rozważymy grę dwuosobową, w której wypłaty będą spełniać u1 = −u2 , to wynika z tego twierdzenia również twierdzenie von Neumanna.
Oczywiście, udowodnione przez nas twierdzenie nie jest najbardziej ogólnym twierdzeniem o istnieniu równowagi Nasha w grach niekooperacyjnych. Istnieje na przykład twierdzenie Glicksberga [1], mówiące, że w grze dwuosobowej ze zwartymi metrycznymi przestrzeniami akcji graczy (niekoniecznie będącymi podzbiorami Rk ), i ciągłymi funkcjami
wypłaty, zawsze istnieje równowaga w strategiach mieszanych. Wiadomo natomiast także, że osłabienie założeń tego twierdzenia może prowadzić do sytuacji, gdy równowagi nie
ma, nawet w strategiach mieszanych. W szczególności osłabienie założenia o ciągłości w
taki sposób, że funkcja wypłaty tylko jednego z graczy nie jest ciągła w jednym punkcie
X1 × X2 może prowadzić do braku równowagi (nawet w strategiach mieszanych). Przykład
takiej gry znalazł Vieille [5]. Innym przykładem gry z nieciągłymi funkcjami wypłat graczy
(już w więcej niż jednym punkcie), jest przykład gry o sumie zerowej, posiadającej wartość,
ale nie posiadającej strategii optymalnych (w przypadku takiej gry strategie optymalne są
również strategiami w równowadze Nasha), który mieli Państwo znaleźć w 4. zadaniu na 1.
liście zadań.
9
1.3
1.3.1
Algorytmy szukania równowag w grach niekooperacyjnych
Gry macierzowe
Na ćwiczeniach pojawiły się jakieś sposoby szukania równowag w grach macierzowych (dwumacierzowych), tyle że w praktyce nadają się one do zastosowania tylko do niektórych gier
(w większości z nich ilość obliczeń, które musielibyśmy wykonać byłaby ogromna), nie
mówiąc o tym, żeby zastosować je do obliczania równowag w grach maszynowo. Dlatego
najbliższe dwa wykłady będą poświęcone temu, jak szukać rozwiązań gier (algorytmicznie). Dzisiaj opowiem o tym, jak to się robi w przypadku gier macierzowych. W przyszłym
tygodniu opowiem, jak rozwiązywać gry bardziej skomplikowane. To, od czego zaczniemy
dzisiaj, nie będzie miało bezpośredniego związku z grami, ten związek wyłoni się dopiero
później.
Programowanie liniowe
Problem programowania liniowego, to bodaj najlepiej znany problem optymalizacyjny, i 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) – tu ograniczę się do
zdefiniowania problemu, opowiedzenia o tym, jak taki problem się rozwiązuje, no i (przede
wszystkim) do opowiedzenia o jego związku z problemem szukania strategii optymalnych
w grach macierzowych.
Problem programowania liniowego możemy 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.

"
#
0
h
i
x
5 −1


, B =  10 , C = 2 −3 , X =
. To oznacza, że
Przykład: A =
−1 1
1
y
3
maksymalizujemy funkcję F (x, y) = 2x − 3y przy ograniczeniach
"
1
4
#


1

x−y ¬0

4




 5x + y ¬ 10
−x + y ¬ 3



x­0




y­0
Jeśli narysujemy sobie ten zbiór (patrz rysunek poniżej), okazuje się, że jest to wypukły
wielokąt (czworokąt ograniczony prostymi i osia Oy). Dodatkowo, jeśli zaznaczymy sobie,
w którym kierunku zwiększa się funkcja celu (funkcja, którą maksymalizujemy – tu ten
kierunek wskazuje wektor, na prostych prostopadłych do tego wektora funkcja celu się nie
zmienia, zwiększając swoją wartość w kierunku przezeń wskazywanym), okazuje się, że maksimum musi być osiągnięte w jednym wierzchołku tego wielokąta (to jest ten wierzchołek,
który zaznaczyłem kropką).
10
y
6
D
D
D
D
D
D
D
D
D
D
D
D
J
D
J D
^ D
J
D
t DD
- x
Jeśli funkcja celu byłaby inna, maksimum mogłoby być osiągnięte we wszystkich punktach któregoś z boków naszego wielokąta, i w przypadku maksymalizowania funkcji liniowej
na płaszczyźnie innych możliwości nie będzie.
Teraz – co się dzieje w ogólności? Otóż w tym przykładzie (dwuwymiarowym), każdy
z warunków ograniczających X mówił, że rozwiązanie musi się znajdować po jednej, określonej stronie prostej. W przypadku m-wymiarowym te ograniczenia oznaczają, że X musi
się znajdować po jednej stronie hiperpłaszczyzny, a część wspólna takich zbiorów leżących
po jednej stronie hiperpłaszczyzny jest wypukłym wielościanem. W przypadku wielościanu,
maksimum funkcji liniowej musi być przyjmowane w którymś z wierzchołków tego wielościanu (ewentualnie we wszystkich punktach którejś ze ścian tego wielościanu, cokolwiek
słowo ściana miałoby tutaj oznaczać). To oznacza, że chcąc szukać naszego maksimum,
wystarczy przeszukać kolejne wierzchołki tego wielościanu. Dodatkowo, żeby algorytm szukania maksimum był zbieżny, algorytm powinien po sprawdzeniu, czy w jakimś jednym
wierzchołku nie ma maksimum, przechodzić do któregoś z wierzchołków, w których funkcja
celu będzie miała większą wartość, dzięki czemu po skończonej liczbie kroków dojdzie do
tego jednego (albo jednego z tych) wierzchołka, w którym jest osiągnięte maksimum.
Algebraicznie ten pomysł będzie realizował algorytm sympleks, który teraz po krótce
omówię.
Algorytm sympleks
W algorytmie będziemy kolejne kroki, o których mówiłem, opisywali algebraicznie, wychodząc od układu nierówności, które musi spełniać nasze rozwiązanie:


a x + a21 x2 + . . . + am1 xm ¬ b1

 11 1
.
..
.


 a x + a x + ... + a x ¬ b
1n 1
2n 2
mn m
n
Ten układ nierówności możemy równoważnie zapisać jako układ równań:


a x + a21 x2 + . . . + am1 xm − b1 = −u1

 11 1
.
..
,


 a x + a x + . . . + a x − b = −u
1n 1
2n 2
mn m
n
n
gdzie u1 ,. . . , un są dodatkowymi zmiennymi nieujemnymi, zwanymi zmiennymi wolnymi.
Tak jak w przypadku algorytmów rozwiązywania równań macierzowych wygodniej jest
działać na odpowiednich macierzach zamiast całych równań, tu też zapisujemy te równania
11
przy pomocy pewnego schematu, który nazywamy „tablicą sympleks”:
−x1 −x2
a11 a21
..
..
.
.
a1n a2n
−c1 −c2
. . . −xm 1
. . . am1 b1 u1
.. ..
.. .
. .
.
. . . amn bn un
. . . −cm 0 z
Ostatni wiersz tablicy odpowiada funkcji celu.
Interpretacja takiej tablicy jest taka: środkowa część tablicy przedstawia współczynniki
przy zmiennych u góry, dolny wiersz to samo dla funkcji celu, zmienne znajdujące się u
góry tablicy (tzw. zmienne niebazowe) są równe zero, a zmienne z prawej strony tablicy są
równe wartościom w przedostatniej kolumnie. To, że m zmiennych ma wartość zero algebraicznie ma oznaczać, że jesteśmy w wierzchołku wielościanu (bo w m ograniczeń zachodzi
równość). W trakcie algorytmu będziemy wymieniać zmienne wyzerowane ze zmiennymi bazowymi (tymi z prawej), uzyskując w ten sposób inny wierzchołek. Jedyny problem może
być taki, że któreś z ograniczeń obetnie nam punkt, w którym w m z pozostałych ograniczeń są równości. Reguły przechodzenia od jednego wierzchołka do następnego będą nam
gwarantowały, że tak nie będzie – jeśli byliśmy w wierzchołku, to przejdziemy do wierzchołka. Problem może być tylko z punktem startowym, bo oczywiście nie zawsze zmienne
x1 ,. . . ,xn ustawione na zera muszą być wierzchołkiem zbioru rozwiązań dopuszczalnych.
Dlatego pierwsza faza algorytmu ma właśnie na celu znalezienie jednego z wierzchołków
wielościanu.
Pierwsza faza:
Sprawdzamy, czy w ostatniej kolumnie nie ma elementów ujemnych. Jeśli nie ma, to x1 =
. . . = xm = 0 jest wierzchołkiem tego wielościanu. Jeśli takie są, to
1. wybieramy ostatni z nich (w najdalszym wierszu), w wierszu k. Dla uproszczenia notacji wszystkie elementy tablicy będę oznaczał przez αij (włącznie z ostatnią kolumną
i ostatnim wierszem).
2. W wierszu k (tym z elementem ujemnym w ostaniej kolumnie) wybieramy element,
dla którego αkj0 < 0 (to j0 jest tu istotne). Jeśli takiego nie ma – zbiór rozwiązań
dopuszczalnych jest pusty.
3. Następnie wśród wierszy i ­ k poza wierszem funkcji celu wybieramy ten, dla którego
jest najmniejszy dodatni. Oznaczamy go przez i0 .
iloraz ααi,m+1
ij
0
4. Wymieniamy zmienne, które są w wierszu i0 i kolumnie j0 .
g
Tablica po wymianie zmiennych wygląda następująco (α
ij oznacza elementy tablicy po
wymianie, αij – przed wymianą):
αg
i0 j0 =
1
αi0 j0
αi0 j
αg
j 6= j0
i0 j =
αi0 j0
αij0
αg
i 6= i0
ij0 = −
αi0 j0
αi0 j αij0
g
α
.
ij = αij −
αi0 j0
Jeśli w ostatniej kolumnie po wymianie zmiennych bazowych dalej jest element ujemny, to
powtarzamy tę fazę metody sympleksowej. Jeśli nie – przechodzimy do drugiej fazy.
12
Druga faza algorytmu polega na przechodzeniu od jednego wierzchołka do innego
w taki sposób, żeby za każdym razem zwiększać funkcję celu. Robimy to w następujący
sposób:
1. Wybieramy kolumnę j0 , w której w wierszu funkcji celu mamy wartość ujemną.
2. Następnie z elementów tej kolumny wybieramy taki, że αij0 jest dodatni i
jak najmniejsze.
αi,m+1
αij0
jest
3. W ten sposób dostajemy wiersz i0 i kolumę j0 , w których wymieniamy zmienną bazową ze zmienną niebazową. Reguły zmieniania tablicy sympleksowej przy wymianie
zmiennych są takie same jak w pierwszej fazie.
Tę fazę powtarzamy tak długo, aż w wierszu celu nie ma elementów ujemnych. Współrzędne optymalnego rozwiązania odczytujemy z tablicy – te zmienne, które zostały u góry
są równe zero, pozostałe są równe wartościom, które stoją obok nich w ostatniej kolumnie.
Z kolei optymalną wartość funkcji celu odczytujemy z prawej kolumny ostatniego wiersza.
Zanim przejdziemy do tego, w jaki sposób sprowadzić problem szukania rozwiązania
optymalnego do programowania liniowego, napiszę jeszcze jedno twierdzenie, które ma fundamentalne znaczenie w programowaniu liniowym, a które będzie miało też związek z tym,
co nas najbardziej interesuje, czyli z grami.
Problem dualny do problemu zdefiniowanego na początku wykładu definiujemy nastęP
pująco: Znaleźć Y = [y1 , . . . , , ym ]T minimalizujący m
i=1 bi yi przy ograniczeniach: Y ­ 0,
AY ­ C T .
Prawdziwe będzie takie twierdzenie:
Twierdzenie 1.5 (o dualności) Jeśli program liniowy i program do niego dualny mają
P
P
rozwiązania, to maxX nj=1 cj xj = minY m
i=1 bi yi .
I teraz, po godzinie wykładu, wracamy do gier (przypominam) o sumie zerowej. Okazuje
się, że problem szukania strategii optymalnych w takiej grze można zapisać przy pomocy
programu liniowego, a, co więcej, okaże się, że twierdznie von Neumanna będzie w takim
wypadku wynikać z twierdzenia o dualności.
Niech W = [wij ]k×l będzie macierzą wypłat w grze macierzowej. Wtedy rozważać będziemy problem programowania liniowego następującej postaci:





T
A =




−W T
1
−1
...
...
1 −1
..
.. 
.
. 


,
1 −1 


1 0
0 
−1 0
0
X = [µ1 , . . . , µk , v1 , v2 ]T , B = [0, . . . , 0, 1, −1]T , C = [0, . . . , 0, 1, −1]. Maksymalizujemy
v1 − v2 =: v. Jeśli zapisać ten problem w postaci układu równań, dostaniemy:
 Pk

 Pi=1 wij µi ­ v
k
i=1 µi = 1


dla j = 1, . . . , l
.
µi ­ 0 dla i = 1, . . . , k
Te równania oznaczają, że µ = (µ1 , . . . , µk ) jest rozkładem prawdopodobieństwa na wierszach macierzy W . Dodatkowo, jeśli µ∗ będzie rozwiązniem tego problemu, a v ∗ wartością
funkcji celu dla tego rozwiązania, to:
k
X
wij µ∗i ­ v ∗
dla każdej kolumny j,
i=1
13
czyli dla dowolnego rozkładu prawdopodobieństwa σ = (σ1 , . . . , σl ) na kolumnach:
k X
l
X
wij µ∗i σj ­ v ∗ ,
i=1 j=1
Ponieważ σ było dowolne, a prawa strona nie zależy od σ, więc możemy napisać
min
σ
k X
l
X
wij µ∗i σj ­ v ∗ ,
i=1 j=1
a stąd
min
v = max
µ
σ
k X
l
X
wij µi σj ­ v ∗ .
i=1 j=1
A teraz popatrzmy się na problem dualny. Jeśli przyjmiemy Y = [σ1 , . . . , σl , v1 , v2 ]T ,
a wszystkie pozostałe macierze – jak poprzednio, to dostajemy, że mamy zminimalizować
P
P
v = v1 − v2 przy ograniczeniach lj=1 wij σj ¬ v, lj=1 σj = 1 dla i = 1, . . . , k, σj ­ 0,
j = 1, . . . , l, skąd w podobny sposób co poprzednio dostajemy:
v = min max
σ
µ
k X
l
X
wij µi σj ¬ v ∗ ,
i=1 j=1
a ponieważ v ∗ na mocy twierdzenia o dualności jest takie samo, to dostaliśmy, że gra
ma wartość równą v ∗ (czyli tezę twierdzenia von Neumanna), a strategiami optymalnymi,
realizującymi tę wartość, są µ∗ i σ ∗ , będące rozwiązaniami naszych dualnych problemów
programowania liniowego.


3 0
1

2 
Przykład: Rozważmy grę macierzową z macierzą wypłat  −1 2
. Zgodnie z tym,
1 0 −1
co było powiedziane przed chwilą, żeby znaleźć wartość tej gry oraz strategie optymalne
graczy, musimy rozwiązać problem programowania liniowego z macierzą




T
A =



−3
1 −1
0 −2
0
−1 −2
1
1
1
1
−1 −1 −1

1 −1

1 −1 

1 −1 
,
0
0 

0
0
X = [µ1 , µ2 , µ3 , v1 , v2 ]T , B = [0, . . . , 0, 1, −1]T , C = [0, . . . , 0, 1, −1], oraz problem do niego
dualny. Na początek zapisujemy tablicę sympleksową:
−µ1 −µ2 −µ3 −v1 −v2
1
−3
1 −1
1 −1
0
0 −2
0
1 −1
0
−1 −2
1
1 −1
0
1
1
1
0
0
1
−1 −1 −1
0
0 −1
0
0
0 −1
1
0
u1
u2
u3 .
u4
u5
v
W ostatniej kolumnie jest jedna liczba ujemna, w 5. wierszu. Ponieważ jest to ostatni
wiersz poza wierszem celu, więc wybieramy do zamiany zmiennej ten wiersz. Wybieramy
14
też kolumnę taką, żeby w 5. wierszu stał w niej element ujemny, na przykład 1. kolumnę.
Po zamianie zmiennych dostajemy:
−u5 −µ2 −µ3 −v1 −v2
−3
4
2
1 −1
0 −2
0
1 −1
−1 −1
2
1 −1
1
0
0
0
0
−1
1
1
0
0
0
0
0 −1
1
1
3
0
1
0
1
0
u1
u2
u3 .
u4
µ1
v
Na tym kończy się pierwsza faza metody sympleksowej, bo w ostatniej kolumnie nie ma już
elementów ujemnych. Zaczynamy drugą fazę. Wybieramy 4. kolumnę, bo tam w wierszu
funkcji celu znajduje się wartość ujemna, oraz drugi wiersz, bo tam iloraz elementu w
ostatniej kolumnie i elementu w kolumnie wybranej (czwartej) jest najmniejszy z wierszy,
w których w 4. kolumnie stoi liczba dodatnia. Po zamianie zmiennych dostajemy:
−u5 −µ2 −µ3 −u2 −v2
−3
6
2 −1
0
0 −2
0
1 −1
−1
1
2 −1
0
1
0
0
0
0
−1
1
1
0
0
0 −2
0
1
0
1
3
0
1
0
1
0
u1
v1
u3 .
u4
µ1
v
W ostatnim wierszu w drugiej kolumnie stoi element ujemny, więc wybieramy tę kolumnę,
a z elementów dodatnich tej kolumny wybieramy szóstkę w pierwszym wierszu, bo dla niej
iloraz elementu w ostatniej kolumnie i elementu w wybranej przez nas jest najmniejszy. Po
zamianie zmiennych dostajemy:
−u5 −u1 −µ3 −u2 −v2
1
1
− 12
− 16
0
6
3
1
2
2
−1
−1
3
3
3
5
5
− 21 − 16
−
0
3
6
1
0
0
0
0
2
1
− 21 − 16
0
3
6
1
−1
0
1
0
3
1
1
2
µ2
1 v1
1
u3 .
2
0 u4
1
µ1
2
1 v
Dalej wybieramy pierwszą kolumnę i czwarty wiersz, otrzymując:
−u4 −u1 −µ3 −u2 −v2
1
1
1
− 16
0
2
6
3
1
2
2
1
−1
3
3
3
1
1
5
5
−6
−6
0
2
3
1
0
0
0
0
1
2
1
− 16
0
2
3
6
1
1
0
1
0
3
1
1
2
µ2
1 v1
1
u3 .
2
0 u5
1
µ1
2
1 v
I na tym się kończy algorytm, bo w wierszu funkcji celu nie ma już wartości ujemnych.
Odczytujemy wynik – µ3 = 0, bo pozostało u góry, pozostałe wartości odczytujemy z 6.
kolumny: µ1 = µ2 = 12 , a wartość gry (funkcja celu) v = 1. Mamy w takim razie strategię
pierwszego gracza. Aby otrzymać strategię drugiego, rozwiązujemy problem dualny. Nie
15
będę rozpisywał, jak on wygląda – od razu zapiszę go w postaci tablicy sympleksowej.
−σ1 −σ2 −σ3 −v1 −v2
1
3
0
1 −1
1
0 u1
−1
2
2 −1
1
0 u2
1
0 −1 −1
1
0 u3 .
−1 −1 −1
0
0 −1 u4
1
1
1
0
0
1 u5
0
0
0
1 −1
0 −v
Zaczynamy od pierwszej fazy metody sympleksowej, czyli szukamy wiersza, który ma w
ostatniej kolumnie wartość ujemną – takim wierszem jest wiersz czwarty. Wybieramy inną
kolumnę, w której stoi wartość ujemna, np. pierwszą, i sprawdzamy w czwartym i piątym
wierszu, gdzie odpowiedni iloraz jest najmniejszy. W obu jest taki sam (równy 1), więc
możemy np. wybrać czwarty wiersz. Wymieniamy zmienne:
−u4 −σ2 −σ3 −v1 −v2
1
3 −3 −2 −1
1 −3 u1
−1
3
3 −1
1
1 u2
1 −1 −2 −1
1 −1 u3 .
−1
1
1
0
0
1 σ1
1
0
0
0
0
0 u5
0
0
0
1 −1
0 −v
Teraz bierzemy ostatni wiersz z ujemną wartością w ostatniej kolumnie, i kolumnę, w
której w tym (trzecim) wierszu stoi element ujemny (np. 2. kolumnę), i po porównaniu
odpowiednich ilorazów stwierdzamy, że zamieniamy zmienną w trzecim wierszu i drugiej
kolumnie:
−u4 −u3 −σ3 −v1 −v2
1
0 −3
4
2 −2
0 u1
2
3 −3 −4
4 −2 u2
−1 −1
2
1 −1
1 σ2 .
0
1 −1 −1
1
0 σ1
1
0
0
0
0
0 u5
0
0
0
1 −1
0 −v
Jedyny element ujemny w ostatniej kolumnie jest w drugim wierszu. W tym wierszu są
poza tym dwie wartości ujemne, wybieramy kolumnę 3., w której znajduje się jedna z nich.
Porównujemy ilorazy wartości w ostatniej kolumnie i kolumnie przez nas wybranej, i dochodzimy do wniosku, że najmniejszy dodatni iloraz ( 12 ) jest w 3. wierszu, więc wymieniamy
zmienną w trzecim wierszu σ2 ze zmienną w trzeciej kolumnie σ3 :
−u4 −u3 −σ2 −v1 −v2
1
2 −1 −2
0
0 −2 u1
1
3
3
5
− 25
− 12 u2
2
2
2
2
1
1
1
1
1
1
−2 −2
−2
σ3 .
2
2
2
1
1
1
1
1
− 12
−
σ1
2
2
2
2
2
1
0
0
0
0
0 u5
0
0
0
1 −1
0 −v
16
Następnie wymieniamy zmienne w 4. kolumnie (v1 ) i w 2. wierszu (u2 ):
−u4 −u3 −σ2 −u2 −v2
1
2 −1 −2
0
0 −2 u1
1
v1
− 15 − 53 − 53 − 25 −1
5
2
1
4
1
2
−5 −5
0
σ3 .
5
5
5
1
1
1
3
−
0
σ1
− 35
5
5
5
5
1
0
0
0
0
0 u5
3
3
2
1
0 − 15 −v
5
5
5
5
Dalej wymieniamy zmienną u3 ze zmienną u1 :
−u4 −u1 −σ2 −u2 −v2
1
−2 −1
2
0
0 −2 u3
3
2
7
− 75 − 53
−
−1
v1
5
5
5
6
1
1
4
4
0
−5 −5
σ3 .
5
5
5
1
1
1
1
1
−5 −5
0
−5
σ1
5
5
1
0
0
0
0
0 u5
7
3
2
− 53
0 − 75 −v
5
5
5
Na tym kończy się pierwsza faza, bo w ostatniej kolumnie nie ma już elementów ujemnych. Zaczynamy drugą fazę. W ostatnim wierszu (poza ostatnią kolumną) jest tylko jedna
wartość ujemna, w trzeciej kolumnie, więc wybieramy tę kolumnę. Porównujemy następnie
ilorazy elementów ostatniej kolumny z dodatnimi elementami wybranej (3.) kolumny. Wybieramy trzeci wiersz, bo tam ten iloraz jest najmniejszy (równy 23 ). Po wymianie zmiennych
dostajemy:
−u4 −u1 −σ3 −u2 −v2
1
2
2
5
1
2
−3 −3 −3 −3
u3
0
3
1
1
1
−1 − 2 − 2 − 2 −1
1 v1
5
1
2
− 32 − 16
0
σ2 .
6
6
3
1
1
1
1
1
−6
0
σ1
−3
6
6
3
1
0
0
0
0
0 u5
1
1
1
1
0
−1
−v
2
2
2
I na tym kończymy, bo jedyną wartością ujemną w ostatnim wierszu jest wartość funkcji
celu, a ona ma prawo być ujemna. Otrzymanym rozwiązaniem jest rozkład σ = ( 31 , 23 , 0).
Uwaga 1.5 Jakkolwiek algorytm sympleks w najgorszym przypadku ma złożonośc wykładniczą, to istniejące algorytmy rozwiązywania problemów programowania liniowego,
które mają złożoność wielomianową (np. algorytm Karmarkara) zwykle działają znacznie
wolniej. Dlatego omawiałem tę metodę.
1.3.2
Gry dwumacierzowe
W zeszłym tygodniu mówiłem o tym, jak sprowadzić problem szukania strategii optymalnych w grze macierzowej do rozwiązania odpowiedniego zagadnienia optymalizacyjnego,
konkretnie do zadania programowania liniowego. Dzisiaj poopowiadam trochę o tym, jak
to jest w przypadku bardziej skomplikowanych gier. Większość wykładu będzie poświęcona grom dwumacierzowym, bo o zagadnieniu szukania równowag w takich grach dosyć
dużo wiemy, natomiast o przypadkach bardziej skomplikowanych powiem trochę na końcu
wykładu, nie wchodząc już w szczegóły konkretnych algorytmów.
Zacznijmy więc wykład od próby przedstawienia problemu szukania równowagi w grze
dwumacierzowej w postaci analogicznej do tego, co było na końcu ostatniego wykładu,
17
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. 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 było zadanie 8. z pierwszej listy). Podobnie dla drugiego gracza:
( P
b µ = v2
Pi ij i
i bij µi
dla j z nośnika σ
dla j spoza nośnika,
¬ 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
a także:
X
( P
b x =1
Pi ij i
dla i z nośnika x
dla i spoza nośnika x
xi +
X
i
yj =
j
i bij xi
¬1
dla j z nośnika y
dla j spoza nośnika y,
XX
XX
1
1
+
=
aij xi yj +
bij xi yj .
v2 v1
i
j
i
j
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
oraz C =
i dodatkowo
Twierdzenie 1.6 Niech z = [x, y] , q =
BT 0
załóżmy, że C > 0. Dowolne niezerowe rozwiązanie z ∗ następującego problemu: znajdź z
takie, że:
z ­ 0,
(1.1)
T
[1, . . . , 1]T1×m+n
q − Cz ­ 0,
(1.2)
z T (q − Cz) = 0,
(1.3)
ma taką własność, że µ = Px xi oraz σ = Py yj jest równowagą w grze dwumacierzowej o
i
j
macierzach wypłat A i B.
Uwaga 1.6 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 zapiszemy warunek (1.3), dostaniemy ostatnią z równości zapisanych przed
twierdzeniem. Warunek (1.2) zapisany w postaci układu nierówności będzie wyglądał tak:
(
1 − j aij yj ­ 0
P
1 − i bij xi ­ 0,
P
18
czyli są to (lekko osłabione warunki, które zapisałem wcześniej). Dla odmiany, warunek
(1.1) musi być spełniony, żeby µ i σ były rozkładami prawdopodobieństwa. Wniosek z
tego taki, że równowaga Nasha na pewno będzie rozwiązaniem problemu sformułowanego
w twierdzeniu.
Druga część dowodu musi więc 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. (1.2) będzie oznaczało, że j aij yj ¬ 1 oraz i bij xi ¬ 1. Niech teraz I
będzie zbiorem takich i, że w pierwszej nierówności jest równość, a J zbiorem j dla których
jest równość w drugiej nierówności. Wtedy:
P
XX
=
¬
i
j
X
xi
aij xi yj +
X
i∈I
j
X
xi +
i
aij yj +
XX
i
j
X
xi
X
bij xi yj =
X
i6∈I
P
aij yj +
j
X
yj
j∈J
X
xi bij +
i
X
yj
j6∈J
X
xi bij ¬
i
yj ,
j
gdzie równość w ostatniej nierówności zachodzi wtedy i tylko wtedy (i po to zostało to
rozpisane na sumę po I i jego dopełnieniu, oraz po J i jego dopełnieniu), gdy xi = 0 na
zbiorze I C , a yj = 0 na zbiorze J C . Tyle że warunek (1.3) implikuje, że tu jest równość. A
zatem dostajemy warunki:
( P
a y =1
Pj ij j
jeśli xi > 0
jeśli xi = 0,
( P
b x = v2
Pi ij i
jeśli yj > 0
jeśli yj = 0,
j
oraz
aij yj < 1
i bij xi
< v2
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
ale w zadaniu 8. z 1. listy udowodniliśmy, że strategie µ i σ są w równowadze wtedy i
tylko wtedy gdy spełniają powyższe warunki, a więc mamy sprzeczność, bo zakładaliśmy,
że µ i σ nie tworzą równowagi Nasha. Teraz, co wynika z udowodnionego twierdzenia? Otóż problem, który pojawił się w
powyższym twierdzeniu należy do znanej klasy problemów, i istnieją algorytmy, służące do
jego rozwiązywania, i teraz sformułujemy ogólnie taki problem, i opowiem, na czym polega
algorytm ich rozwiązywania.
Problem komplementarności liniowej (LCP)
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,
z T (q − Cz) = 0.
19
Pierwsze dwa warunki, to ograniczenia liniowe takie, jakie znamy z problemu programowania liniowego. Trzeci warunek nazywamy warunkiem komplementarności, bo oznacza on
tyle, że na każdej współrzędnej i, albo zi = 0 albo i-ta współrzędna q − Cz jest równa zero
(innych możliwości nie ma, bo dwa pierwsze warunki gwarantują, że każda współrzędna z
i każda współrzędna q − Cz jest nieujemna).
Algorytm rozwiązywania LCP wymyślili Lemke i Howson, i wygląda następująco:
Algorytm Lemke-Howsona
Zbiór wektorów w odpowiedniej przestrzeni l-wymiarowej spełniających zestaw liniowych
ograniczeń (dwa pierwsze warunki zadające LCP), podobnie jak w przypadku programowania liniowego jest wypukłym wielościanem (bo to są takie same warunki jak te, które tam
się pojawiły). Stąd kolejne kroki algorytmu będą wyglądały podobnie jak w przypadku algorytmu sympleks. Tu też będziemy przechodzili od wierzchołka do wierzchołka wielościanu
zadanego przez te warunki (stąd kolejne kroki algorytmu będą polegały na wymienianiu
między sobą zmiennych, których wyzerowanie odpowiada równości w poszczególnych warunkach). Cel algorytmu będzie tylko inny. W programowaniu liniowym mieliśmy funkcję
celu, która zwiększała się przy każdym kolejnym kroku algorytmu, tu takiej funkcji celu
nie ma, w związku z tym nie ma takiego jasnego kryterium wyboru kolejnego wierzchołka
wielościanu, do którego ma przejść algorytm. Warunek, który będziemy sprawdzali przy
zamianie zmiennych, będzie miał na celu jedynie to, żeby algorytm nie cofał się – nie
przechodził do wierzchołka, który już sprawdzaliśmy.
Jak poprzednio, zapisujemy wszystko w postaci tablicy:
z1
z2
−c11 −c12
−c21 −c22
..
..
.
.
−cl1 −cl2
...
zl
. . . −c1l 1 r1
. . . −c2l 1 r2
.. ..
. . r3
. . . −cll 1 r4
Elementy tej tablicy będziemy oznaczać przez dij . Tablica ta reprezentuje układ równań
q − Cz = r, gdzie ri jest zmienną równą i-tej współrzędnej q − Cz. Zmienne u góry tablicy,
jak w algorytmie sympleks, są ustawione na 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
wamy testem najmniejszego ilorazu).
di0 ,l+1
−di0 j0
jest najmniejsze (tę regułę nazy-
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):
1
dg
i0 j0 =
di0 j0
di0 j
dg
j 6= j0
i0 j =
di0 j0
dij0
dg
i 6= i0
ij0 = −
di0 j0
20
dfij = dij −
di0 j dij0
.
di0 j0
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ład
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
#
.

5 10

8 3 

0 0 
. Zapiszmy teraz wszystko w postaci
0 0 

0 0
tabelki.
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
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
21
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
3
5
−65
0
0 −35
r1
8
8
8
8
−1
−3
1
−1
0
0
z
4
8
8
8
8
1
−5
3
0
0
0
r
3
4
2
4
−1
−1
1
0
0
0
z
1
8
4
8
−13
1
3
0
0
0
r
5
4
2
4
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
, 26 , 0, 65
, 65 ). Po normalizacji otrzymujemy równowagę Nasha w wyjściowej grze µ =
( 52
5 6
7 3
( 11 , 11 ), ν = (0, 10
, 10 ).
Uwaga 1.7 Algorytm Lemke-Howsona, podobnie jak algorytm sympleks, 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 Savani i von Stengel [4] trzy lata
temu, co sugeruje, że w większości przypadków algorytm jest jednak w miarę szybki. To
o tyle dobrze, że niestety w przypadku problemu komplementarności liniowej nie ma znanych algorytmów, które byłyby szybsze (nawet w teorii). Jakkolwiek nie jest oczywiste, że
ktoś w przyszłości takich nie znajdzie, bo złożoność problemu szukania równowag w grach
dwumacierzowych nie jest znana. Nie jest nawet pokazane, że problem policzenia jednej z
równowag w grze dwumacierzowej jest NP-zupełny. Istnieją tylko rezultaty tego rodzaju
dotyczące szukania równowag o pewnych zadanych własnościach (np. równowag, które są
najlepsze dla któregoś z graczy).
22
Uwaga 1.8 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 używanego przez nas na ćwiczeniach, polegającego na przeszukiwaniu po kolei wszystkich możliwych nośników strategii
graczy, po odrzuceniu strategii silnie zdominowanych.
1.3.3
Gry n-osobowe
To już końcówka wykładu, i powiem tylko kilka słów na temat algorytmów szukania równowag w grach z większą liczbą graczy. Podobnie jak w przypadku gier dwumacierzowych,
można pokazać, ze ten problem da się sprowadzić do nieliniowego analogonu LCP, tzn.
problemu znalezienia z takiego, że:
z ­ 0,
f (z) ­ 0,
zj fj (z) = 0 j = 1, . . . , n,
gdzie f jest pewną funkcją o wartościach z Rn (niekoniecznie liniową). 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 swoim opracowaniu na temat algorytmów szukania równowag McLennan i McKelvey [3]
piszą nawet, że nie słyszeli o tym, żeby ktoś te algorytmy zaimplementował). 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 przwdziwe 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. Większość innych jest jego modyfikacjami.
Osoby zainteresowane tym, jak wygląda algorytm Scarfa zastosowany do szukania równowag w grach n-osobowych, odsyłam do wspomnianej pracy McLennana i McKelveya [3]
23
Bibliografia
[1] I.L. Glicksberg, A further generalization of the Kakutani fixed point theorem with
application to Nash equilibrium points, Proceedings of the American Mathematical
Society 3 (1952) 170–174.
[2] K. Kuratowski, Wstęp do teorii mnogości i topologii, PWN, Warszawa, 2004 (któreś
wydanie).
[3] R.D. McKelvey, A. McLennan, Computation of equilibria in finite games. Handbook of
Computational Economics, Elsevier, 1996, vol. 1, pp 87-142.
[4] B. von Stengel, R. Savani, Exponentially many steps for finding a
Nash equilibrium in a bimatrix game. Proc. of FOCS 2004 (też
http://www.maths.lse.ac.uk/Personal/stengel/TEXTE/focs04.pdf).
[5] N. Vieille, On equilibria on the square, International Journal of Game Theory 25 (1996)
199–205.
24