Teoria jocurilor

(Categoria Teoria jocurilor, Autor Filip Cristian Buruiana)

Adunarea jocurilor

Valorile Sprague-Grundy reprezinta o generalizare fata de algoritmul de programare dinamica in cazul jocului cu un singur pion, deoarece cu ajutorul acestor valori pot fi combinate mai multe jocuri. De exemplu, putem presupune ca in graful orientat sunt mai multi pioni in loc de unul singur si ca o mutare consta in deplasarea unui pion din nodul in care se afla intr-un nod adiacent. La fel ca mai sus, cine nu mai poate muta pierde. In acest caz, castigatorul in cazul unui joc perfect nu se poate determina pe baza programarii dinamice in timp polinomial. Mai mult, determinarea castigatorului nu este deloc triviala, asa cum era in cazul jocului cu un pion. Atunci cand combinam (adunam) mai multe jocuri elementare, rezultatul poate fi determinat in mod eficient cu ajutorul valorilor Sprague-Grundy.

In cazul jocului cu mai multi pioni, in loc sa consideram un singur graf, putem considera (conceptual) mai multe grafuri de joc identice, in fiecare dintre acestea aflandu-se cate un pion. Acum, o mutare inseamna alegerea unui graf si deplasarea pionului din graful ales conform regulilor pentru un singur pion. In acest fel, am separat jocul initial in mai multe jocuri independente. Stim rezultatul pentru fiecare joc independent in parte si dorim sa determinam castigatorul pentru jocul cu mai multe grafuri. Aceasta inseamna ca dorim sa combinam rezultatele partiale pentru a determina rezultatul general. Pentru aceasta vom folosi adunarea grafurilor de joc.

Sa presupunem ca avem P jocuri notate G1, G2, ..., GP, pe care dorim sa le adunam. Fiecare din cele P jocuri poate fi reprezentat ca un graf orientat fara circuite in care multimea nodurilor (notata Vi pentru jocul i) este data de multimea starilor iar multimea arcelor (notata Ei pentru jocul i) este data de perechile ordonate de stari adiacente (exista arc de la x la y daca se poate ajunge printr-o mutare din starea x in starea y). Adunand cele P jocuri obtinem un nou joc G pentru care o stare (nod in graful asociat) este un P-uplu (v1,v2, ...,vP) care ne precizeaza starea curenta pentru fiecare joc individual (vi este starea curenta in jocul i). Pentru a afla daca pentru o anumita stare din jocul G exista sau nu strategie sigura de castig am putea aplica algoritmul de programare dinamica (prezentat mai sus) pentru graful asociat jocului G. Se observa insa ca acest graf are |V1|*|V2|* ...*|VP| noduri, deci algoritmul nu este eficient.

In continuare vom arata cum putem sa determinam eficient daca o stare este castigatoare sau nu pentru un joc compus folosindu-ne de informatiile preprocesate pentru fiecare joc individual.

Adunarea xor

Vom aduna jocurile G1, G2, ..., GP astfel incat la fiecare pas jucatorul care urmeaza trebuie sa isi aleaga exact un joc si sa faca o mutare in jocul respectiv. Jucatorul care nu mai poate muta pierde. Un astfel de joc este generalizarea jocului cu un pion din capitolul precedent si se intalneste in problema Pawns, data la concursul national Bursele Agora. Pentru a determina castigatorul in cazul acestui joc, ne vom folosi de urmatoarea teorema:

Teorema: Fie jocurile independente G1, G2, ..., GP si fie G suma acestor jocuri. Daca la fiecare pas alegem un singur joc si efectuam o mutare in jocul ales, atunci o stare (v1,v2, ...,vP) din jocul G este pierzatoare daca si numai daca mex(v1) xor mex(v2) xor ... xor mex(vP) = 0, unde vi reprezinta starea din jocul Gi.

Demonstratie: Demonstratia este similara cu cea a jocului NIM, cele doua jocuri fiind asemanatoare. Starile care au suma-xor 0 sunt pierzatoare, celelalte stari fiind castigatoare.

Dintr-o stare pierzatoare putem ajunge numai in stari castigatoare. Prin reducere la absurd putem presupune ca mutam dintr-o valoare x = mex(vi) intr-o valoare x' = mex(v'i). Daca notam cu S suma xor a starilor din jocurile diferite de i, atunci avem S xor x = 0, deci S = x. Dar trebuie sa avem si S xor x' = 0, deci S este egal si cu x', ceea ce implica x = x'. Aceasta egalitate nu poate avea loc, deoarece dintr-o stare nu putem ajunge intr-o stare adiacenta care sa aiba aceeasi valoarea Sprague-Grundy (conform definitiei functiei mex).

Din orice stare castigatoare putem ajunge intr-o stare pierzatoare.

Vom arata ca jocul G este echivalent cu un joc NIM cu N gramezi in care gramada i are mex(vi) pietre. In jocul NIM putem alege o gramada cu mex(xi) pietre si sa luam cateva astfel incat in gramada sa ramana a<g(xi) pietre. Acestei mutari in jocul NIM ii corespunde o mutare in jocul compus G in care se alege jocul individual Gi si se muta din stare curenta xi intr-o stare y cu g(y)=a. Deoarece a<g(xi) va exista mereu o astfel de stare y. Nu vom lua in considerare mutarile cand dintr-o stare xi se muta intr-o stare y cu g(y)>g(xi) deoarece urmatorul jucator poate muta din starea y intr-o stare z cu g(z)=g(xi) si anuleaza practic mutarea precedentului. (de editat)


Notiuni de baza | Jocul NIM | Numere Sprague-Grundy |
Adunarea jocurilor | w-numere | Aplicatii si probleme