Cím: A nim-játék stratégiájáról, a nyerő stratégia felkutatása
Szerző(k):  Dr. Báron Gyula 
Füzet: 1964/május, 193 - 198. oldal  PDF  |  MathML 
Témakör(ök): Szakmai cikkek

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

A nim-játékot ketten játsszák. Véges számú, meg nem különböztetett elemet (a gyakorlatban gyufákat, gombokat stb.) tetszés szerinti számú halomba osztunk. A játékosok felváltva tesznek egy-egy lépést. Egy lépés abban áll, hogy tetszés szerint választott egyik halomból veszünk el valamennyi elemet, legalább egyet, de elvehetjük az egész halmot is. Az nyer, aki az utolsó elemet veszi el, akár egymagában, akár más, ugyanazon halomhoz tartozó elemekkel együtt.
A játék nyerő stratégiája általánosan ismert. A matematikai irodalomban a játék, úgy látszik, első ízben 1902-ben szerepelt Bouton egy rövid közlésében, ami az Annals of Mathematics c. folyóiratban jelent meg. E közlés leírja a nyerő stratégiát és a stratégia helyességének bizonyítását; nem írja azonban le, hogyan jutott a stratégiához. Úgy tudom, hogy a játékról szóló egyéb közlések sem pótolták e hiányt. Pedig egy probléma megoldása kevésbé tanulságos, ha nem árulja el, hogyan lehet a megoldáshoz jutni. Különösen igaz ez, ha a megoldás ‐ mint a nim-játék esetében ‐ váratlan, úgyszólván hajánál fogva előhúzottnak látszik.
E sorok írója a játékkal 1913-ban ismerkedett meg, mint feladattal: keresd meg a nyerő stratégiát. Ez sikerült is, de csak váratlanul hosszas, kacskaringós keresés után. Az 50 év előtti gondolatmenetek felújítása azt mutatta, hogy a megoldási menet több fázisában olyan módszer szerepelt, amit Pólya György számos közlésében és több könyvében heurisztikusnak nevezett. Ezért talán nem haszontalan a tényleges megoldást, a zsákutcákban végződő kísérletektől megtisztítva, némi részletességgel vázolni.
Minden egyes lépés előtt a játszma helyzetét az egyes halmokban megmaradt elemek számai jellemzik; két halom esetén egy számpár, három esetén egy szám-trió s í. t. Kérdés, lehet-e olyan játékmódot találni, aminek ismeretében a játékos okvetlen nyer, bármilyen lépéseket is tesz ellenfele. A nyerő stratégia lényege, hogy a játékos mindig tudja, milyen helyzetet hagyhat ellenfele számára. Az ilyen helyzetet vesztő állásnak nevezzük, ha pedig egy állás nem ilyen, megnyerhetőnek mondjuk. Miután a feltételezett nyerő stratégiát mindkét játékos ismerheti, a helyes játék is csak akkor biztosítja a nyerést, ha az illető játékos első lépése előtt az állás nem volt vesztő. Az így értelmezett vesztő állásokra nyilvánvaló, hogy
1. egyikből sem lehet egy másikba egyetlen lépéssel eljutni;
2. megnyerhető állásból okvetlen lehet egyetlen lépéssel vesztő állást előállítani.
Nyilvánvalóan vesztő állás az a két halmos helyzet, amelyikben mindkét halom egy tárgyból áll: a soron levő játékos el kell vegye az egyik elemet, társa a másikat veszi és nyer.
A játék állását úgy írjuk le, hogy a halmok elemeinek számait növekvő sorrendben, vesszőkkel elválasztva, zárójelben írjuk fel, pl. (2,5,10), (1,1,2) stb. Egyelőre speciálisan párokra és triókra keresünk stratégiát. (Aki előtt csak egy halom van, az azt elveszi és nyer.)
Számpár esetén néhány próba után könnyen rá lehet jönni, hogy azok a vesztő állások, amelyekben a két szám egyenlő. Valóban, az egyenlőséget bármely lépés megszünteti; ha a két szám nem egyenlő, az egyenlőséget egy lépésben elő lehet állítani; az (1,1) vesztő pár pedig speciális esete a szabálynak. Két halom esetén tehát tényleg van egyszerű stratégia. Hogy áll a dolog, ha három halomról van szó ?
Egy vesztő trió számainak különbözőknek kell lenniük, különben egy lépéssel vesztő párt lehetne előállítani. Minden trió három párt tartalmaz. Két vesztő trió nem tartalmazhatja ugyanazt a párt, különben valamelyikből egy lépéssel lehetne előállítani a másikat. Általánosabban: vesztő triók tetszés szerinti halmazában egy számpár csak egyszer szerepelhet, mint valamelyik trió része.
A legegyszerűbb, különböző számokból álló trió az (1,2,3). Kevés próbálkozás mutatja, hogy ez vesztő hármas, mert bármit elvéve vagy (a,b) vagy (a,a,b) alakú helyzet áll elő, ahol ab. Az (1,3,4) hármas viszont nem vesztő, mert az (1,3) pár az (1,2,3)-nak része.
Következik sorban az (1,4,5) trió. Ennek bármelyik csoportjából vesz is el partnerünk, mi vagy (a,a) alakú párt hozhatunk létre (ha hagyott két egyenlő halmot, vagy ha egyet teljesen elvett), vagy az (1,2,3) helyzetet, és ezekről már tudjuk, hogy vesztő állások, tehát (1,4,5) is az. Ugyanígy jutunk az (1,6,7) vesztő trióhoz. Merésznek látszó (nem teljes !) indukció arra a feltevésre vezet, hogy (1,2n,2n+1) általában vesztő trió. Egy így is van. Bármit lép is a partner, a következő lépéssel vagy egy (1,2k,2k+1) alakú triót lehet előállítani, ahol k<n, vagy egy (k,k) alakú vesztő párt. Ennek igazolását az olvasóra bízzuk. Így általános formulát nyertünk azokra a vesztő triókra, amikben a legkisebb szám 1. Ezen az úton lehetne tovább haladni, de a partner lehetséges lépéseinek száma gyorsan növekszik, és ezzel együtt fokozódnak a közvetlen kipróbálással történő bizonyítás nehézségei. Más eljárást kell keresnünk.
Remélni lehet, hogy vesztő triók egyes sajátságait felismerhetjük, ha nagy számú ilyen triót találunk. Célszerűnek látszik például, ha igyekszünk előállítani az összes vesztő triókat, amikben egy megadott számnál nagyobb nem fordul elő. Miután tudjuk, hogy egy vesztő trió halmazban egy bizonyos számpár csak egyszer fordulhat elő, közelálló gondolat azokból a számpárokból kiindulni, amikben az adott számnál nincs nagyobb. Ezekből triókat úgy kell felépítenünk, hogy minden felhasznált számpárt (egyetlen trió képzésére három számpár szükséges) elhagyunk, és a további triókat a maradó párokból állítjuk össze. Hogy az eljárást egyértelművé tegyük, a számpárokat határozott sorrendben írjuk, és mindig lehetőleg a sorrendben előbb álló számpárokat használjuk fel trió képzésre.
A számpárokat elsősorban a kisebbik szám nagyságrendjében írjuk. Ha a két kisebb szám egyenlő, akkor a sorrendet a két nagyobb szám határozza meg. Tehát (2,6) megelőzi (3,4)-et, és (3,1) megelőzi (3,9)-et. Áttekinthetőség kedvéért azokat a párokat, amiknek kisebb száma ugyanaz, egy sorba írjuk. Ez alá kerül az a (rövidebb) sor, amiben a kisebb szám a megelőzőnél 1-gyel nagyobb. Derékszögű háromszög alakú séma jön így létre, aminek átfogójában azok a párok vannak, amiknek nagyobb száma a megengedett legnagyobb szám. Előnye sémánknak az, hogy ha a megengedett legnagyobb szám helyébe egy nagyobb szám kerülne, a hozzájáruló párokat a nagyobb számok sorrendjében az egymás után következő átfogókba lehet írni anélkül, hogy a kisebb sémán közbeiktatásokkal bármit változtatni kellene. Az átfogókat a párok közös nagyobb száma szerint sorra 2-es, 3-as, 4-es stb. átfogónak fogjuk nevezni. Ha például 6 a megengedett legnagyobb szám, akkor a 15 lehetséges pár így rendeződik el:

(1, 2)  (1, 3)  (1, 4)  (1, 5)  (1, 6)(2, 3)  (2, 4)  (2, 5)  (2, 6)(3, 4)  (3, 5)  (3, 6)(4, 5)  (4, 6)(5, 6)  

Az (1,2,3) ismert vesztő trió kizárja az (1,2) (1,3) és (2,3) párokat. Az (1,4,5) vesztő trió pedig az (1,4), (1,5) és (2,5) párokat. A megmaradó párok közül a sorrendben elsőhöz akarunk olyan párt társítani, aminek az elsővel egy közös száma van, de úgy, hogy a keletkező trióban ne legyen egy már kizárt pár. Ha a soron következő pár e megszorítások miatt nem lehet az első partnere, tovább megyünk, de a párt nem zárjuk ki. Addig haladunk sorban előre, míg megfelelő partnerre nem találunk. Ha ez végig nem sikerülne, akkor az első pártól (amihez nem tudtunk másikat társítani) tovább lépünk anélkül, hogy kizárnánk, és a következő megmaradó párhoz keresünk sorban a feltételeknek megfelelő társat. Minden új trió előállítása után az abban foglalt három párt kizárjuk. Az eljárást addig folytatjuk, amíg új trió már nem képezhető.
A fenti sémában az (1,6) pár lenne soron, de ehhez nem lehet párt társítani. A következő (2,4) párhoz nem csatlakozhat a rá következő (2,5) pár, mert a (4,5)-öt már kizártuk. Így jön létre a (2,4,6) trió, és kizárandó a (2,4), (2,6) és (4,6) pár. Hasonló módon jön létre a következő (3,5,6) trió. Az eljárást ezután nem lehet folytatni, és az (1,6), (2,5) és (3,4) párok felhasználatlanul maradnak. Ha azonban sémánkhoz hozzávesszük a 7-es átfogót, akkor az eljárás folytatható, és sorban az (1,6,7), (2,5,7) és (3,4,7) triókat nyerjük. Ezzel a kibővített séma összes párjait felhasználtuk, és a 21 párból összesen 7 trió keletkezett.
Könnyen belátható, hogy a triók előállítására leírt eljárás egyértelmű.
Ami a keletkezett 7 triót illeti, a tapasztalat azt mutatja, hogy ezek vesztő triók. Újabb és újabb átfogókat adva sémánkhoz, egyre több triót nyerünk. Vajon vesztő triók-e ezek ? Játék és kísérletezés ezt látszik mutatni. A vesztő trió első kritériumának tényleg eleget tesznek. De nincs bizonyítékunk arra, hogy egy megnyerhető trióból okvetlen lehet egy lépéssel egy az eljárásunk által előállított triót létrehozni. Akár vesztők, akár nem, mindenesetre egyértelműen meghatározott trió-halmazról van szó, ami az átfogók számainak növekedésével növekszik. Nevezzük az így előállított triókat v-trióknak. A 7-es átfogó után a 15-ös átfogó határol el egy a trióképzéshez teljesen felhasznált párhalmazt. A következő ilyen átfogó a 31-es. Nevezzük az e módon létrejött trió halmazokat teljesnek. Mire a 31-es átfogót érjük el, 155v-trió áll rendelkezésre (lásd a táblázatot). Ez elég nagy számnak látszik ahhoz, hogy megkísérelhessük az eleve tervezett megfigyeléseket. E megfigyelések persze nem vesztő triókon, hanem v-triókon történnek. De játék közben szerzett tapasztalat és kísérletezés azt mutatja, hogy a v-triók ‐ legalábbis a már előállított halmazuk ‐ úgy viselkednek, mintha vesztő triók lennének. Semmiképpen sem sikerül erre ellenpéldát találni. A dolgok ilyen állásával egyelőre megelégszünk.

  1, 2, 3    2, 4, 6    3, 4, 7    4, 8, 12    5, 8, 13    6, 8, 14    7, 8, 15    8, 16, 24  4, 5    5, 7    5, 6    9, 13    9, 12    9, 15    9, 14    17, 25  6, 7    8, 10    8, 11    10, 14    10, 15    10, 12    10, 13    18, 26  8, 9    9, 11    9, 10    11, 15    11, 14    11, 13    11, 12    19, 27  10, 11    12, 14    12, 15    16, 20    16, 21    16, 22    16, 23    20, 28  12, 13    13, 15    13, 14    17, 21    17, 20    17, 23    17, 22    21, 29  14, 15    16, 18    16, 19    18, 22    18, 23    18, 20    18, 21    22, 30  16, 17    17, 19    17, 18    19, 23    19, 22  19, 21    19, 20    23, 31  18, 19    20, 22    20, 23    24, 28    24, 29    24, 30    24, 31  20, 21    21, 23    21, 22    25, 29    25, 28  25, 31    25, 30  22, 23    24, 26    24, 27    26, 30    26, 31    26, 28    26, 29  24, 25    25, 27    25, 26    27, 31    27, 30    27, 29    27, 28  26, 27    28, 30    28, 31  28, 29    29, 31    29, 30  30, 31
 


  9, 16, 25    10, 16, 26    11, 16, 27    12, 16, 28    13, 16, 29    14, 16, 30    15, 16, 31  17, 24    17, 27    17, 26    17, 29    17, 28    17, 31    17, 30  18, 27    18, 24    18, 25    18, 30    18, 31    18, 28    18, 29  19, 26    19, 25    19, 24    19, 31    19, 30    19, 29    19, 28  20, 29    20, 30    20, 31    20, 24    20, 25    20, 26    20, 27  21, 28    21, 31    21, 30    21, 25    21, 24    21, 27    21, 26  22, 31    22, 28    22, 29    22, 26    22, 27    22, 24    22, 25  23, 30    23, 29    23, 28    23, 27    23, 26    23, 25    23, 24  
 

A triók oszlopokba vannak rendezve legkisebb számuk szerint. Az oszlopokon belül a triók egymás alatt a középső szám szerint következnek.
 


──────────────────────────────────-
 

Ezen a 155-ös trió halmazon számos szabályosságot figyelhetünk meg, mint pl. a következők:
A triók három számának összege páros. A legkisebb szám kétszerese kisebb a legnagyobb számnál. Ha mind a három szám páros, akkor az ezeknek a számoknak a feléből képezett trió szintén v-trió, és minden trió számainak a kétszereseiből alkotott trió szerepel táblázatban, ha ezek a számok 31 alatt maradnak. Ha két szám a három közül páratlan, akkor ezekből 1-et-1-et kivonva újra v-trió keletkezik, és megfordítva is: egy csupa páros számokból álló trió két számát 1-gyel-1-gyel növelve újra v-trió keletkezik. A teljes trió-halmazok olyan pársémákból erednek, amiket sorban a 3-as, 7-es, 15-ös, 31-es átfogók határolnak. Ha a trió legkisebb száma kisebb, mint 2, 4, illetve 8, akkor az utóbbi számok bármelyikét a másik két trió-taghoz adva v-trió jön létre; például a (6,11,13) trióból a (6,19,21).
Még egy lépéssel tovább menve, heurisztikus általánosítással e megfigyeléseket a 155-ös trió halmazról kiterjesztjük az összes v-triókra. Így a következő sejtésekhez jutunk. Ha (a,b,c) v-trió (abc), akkor
1. a+b+c páros;
2. ha a=1, akkor b páros, és c=b+1;
3. 2a<c;
4. ha (2a,2b,2c) v-trió, akkor (a,b,c) is az, és megfordítva is;
5. ha (2a,2b+1,2c+1) vagy (2a+1,2b,2c+1) vagy (2a+1,2b+1,2c) v-trió; akkor (2a,2b,2c) is az, és megfordítva, ha az utolsó trió v-trió, akkor az előző 3 is (ebben az esetben (a,b,c) is v-trió);
6. A teljes trió-halmazokra vezető pár-sémákat a 2n-1-es átfogók határolják;
7. ha a<2k (k1), és (a,b,c) v-trió, akkor (a,b+2k,c+2k) is az.
Az 1., 2., 4. és 5. sejtésekre olyan eljárást lehet alapítani, aminek segítségével egy adott trióból kisebb számokból álló triót állítunk elő úgy, hogy vagy mind a két trió v-trió, vagy egyik sem az. Az eljárás a következő.
Ha a kérdéses trió számainak összege páratlan, akkor az nem v-trió. Ha mind a három szám páros, akkor a triót a fele akkora számokból álló trióval helyettesítjük. Ha két szám páratlan, ezek mindegyikéből 1-et kivonunk, és a létrejövő három páros szám felét vesszük. Az eljárást a kapott trióra újra és újra alkalmazzuk. Ez mindaddig folytatható, amíg az eredmény-triók számainak összege páros. Ha ez végig így van, akkor egy (1,a,b) alakú trióra jutunk, amelyben a és b közül az egyik páros, a másik páratlan. Ha itt a=2n páros, b=2n+1, akkor v-trióra jutottunk, s így a kiinduló trió is az volt, különben nem. (Az ilyen trióra is alkalmazható az eljárás, és az előbbi esetben két egyenlő, különben két különböző számból álló párra vezet, ami vesztő, ill. megnyerhető állást ad.
Ha bármelyik műveletnél a keletkezett trió számainak összege páratlan, akkor a kiindulási trió nem v-trió. Az eljárást a következő két példa szemlélteti; az egymás után következő eredmény-triók egymás alatt vannak.
(25,43,50)(16,39,47)(12,21,25)(08,19,23)(06,10,12)(04,09,11)(03,05,06)(02,04,05)(01,02,03)
A bal oldali példa (25,43,50)-et v-triónak mutatja. A másik példa szerint a (16,39,47) nem v-trió. Az eljárásban csak két aritmetikai művelet szerepel: 2-vel osztás és 1-gyel kisebbítés. Hogy e műveletek melyikét kell melyik számon végezni, az lényegében azon múlik, hogy mind a három szám páros-e vagy sem. 2-vel osztás és páratlan szám kisebbítése 1-gyel különösen egyszerű a kettes számrendszerben; ez a körülmény, továbbá az, hogy 2 és hatványai a felsorolt sejtések legtöbbjében lényegesen szerepelnek, arra a gondolatra vezetett, hogy a triók számait kettes rendszerben írjuk. Manapság, amikor talán több számolás folyik kettes rendszerben, mint tízesben, ez nem lehet nagyon váratlan ötlet. 50 évvel ezelőtt sem tűnt ez egyébnek, mint a probléma egyszerűbb kifejezésére alkalmas átalakításnak. Meglepő volt azonban az átalakítás hatása az eljárásra, az ezzel egyszerűen feleslegessé vált. Írjuk le újra a fenti két példát, a számokat 2-es számrendszerben írva fel:
(11 001    101 011,    110 010)  (100 00,    100 111,    101 111)(1100,    10 101,    11 001)  (1000,    10 011,    10 111)(110,    1010,    1100)  (100,    1001,    1011)(11,    101,    110)  (10,    100,    101)(1,    10,    11)

Látható, hogy az eljárás egy-egy lépése minden esetben a kettes rendszerben írt három szám utolsó jegyeinek elhagyásában áll, ha a három jegy összege páros (0 vagy 2). Ha ez nincs így, az eljárás nem alkalmazható, és a kérdéses trió nem v-trió. Az eljárás egy lépése a három utolsó jegy elhagyásán kívül a kettes rendszerben írt számok többi jegyeit változatlanul hagyja. Ebből következik, hogy a három szám bármelyik három egyenlő helyi értékű jegye összegének párosnak kell lennie, hogy a trió v-trió lehessen. Hogy ez így van-e vagy sem, azt a kérdéses trió kettes rendszerben írt számait megnézve az eljárás lépéseinek ismétlése nélkül meg lehet állapítani. Az eljárás bemutatására használt két példában:
25=01100143=10101150=11001050=22202216=01000039=10011147=10111147=211222

A jegyösszegek a (25,43,50) trió esetén mind párosak, a másik triónál két, páratlan összeg van.
Ilyenformán a v-triók egy egyszerű jellemzéséhez jutottunk. Ennek segítségével nem nehéz bizonyítani, hogy a v-triók vesztő triók. Valóban, ha egy v-trió valamelyik számát kisebbítjük, akkor a szám 2-es számrendszerbeli alakjában bizonyos jegyek ‐ legalább egy ‐ 1-ről 0-ra vagy 0-ról 1-re változnak; így a megfelelő helyi értékű jegyek összege 1-gyel változik, tehát párosból páratlanná válik. Így a keletkező trió nem v-trió.
Ha viszont egy trió nem v-trió, akkor bizonyos helyi értékű helyeken álló jegyek összege páratlan, s így ilyen helyeken áll legalább egy 1-es. Vegyük a legnagyobb ilyen helyi értéket és egy olyan számot, amelyben ezen a helyen 1-es jegy áll. Változtassuk ezt (0-ra és mindegyik jegyét, amelyik páratlan jegy-összegben szerepel, változtassuk, ha 1 volt, 0-ra, ha 0 volt, 1-re. Ezzel a számot csökkentettük, mert a legnagyobb helyi értékű megváltozott jegy 1-ről változott 0-ra; az új számot téve a trióba, minden helyi érték jegyeiből páros jegyösszeg adódik (hiszen a páratlan jegyösszegeket változtattuk meg 1-gyel, 1-gyel). Így v-triót kaptunk.
Ezzel beláttuk, hogy a v-triók eleget tesznek a vesztő triókra megállapított 1. és 2. tulajdonságoknak, ha tehát egyszer v-triót hoztunk létre, mindig folytathatjuk a játékot úgy, hogy partnerünknek v-triót hagyjunk hátra, vagy egy olyan párt, amelyben az egyenlő helyi értékű jegyek összege páros, tehát 0 vagy 2; ez azonban azt jelenti, hogy a pár két egyenlő számból áll, tehát, amint azt korábban megállapítottuk, vesztő pár. A számok állandó csökkentése során előbb-utóbb valamelyiknek 0-ra kell csökkennie, tehát a v-triókból kiindulva egy vesztő állást hozunk létre, s így a v-triók vesztő triók. Ezek meg is adják az összes vesztő triót, hiszen minden más trióból egy lépésben egy ilyet hozhatunk létre.
A bizonyítás menetében nem használtuk ki lényegesen, hogy számhármasokról volt szó, nyilvánvaló, hogy a vesztő állások jellemzése tetszés szerinti számú halom esetén lényegében ugyanaz, mint triók esetében: azok a vesztő állások, amelyekben a számokat 2-es számrendszerben felírva az egyenlő helyi értékű jegyek összege mindig páros. A bizonyítás részletezését az olvasóra bízzuk.
 
 Dr. Báron Gyula (Iowa City, Iowa, USA)