Funkce Sprague-Grundy je široce používána v teorii her k nalezení vítězné strategie v kombinatorických hrách, jako je hra Nîmes . Funkce Sprague-Grundy je definována pro hry pro dva hráče, ve kterých prohrává hráč, který není schopen provést další tah.
V případě diskrétních her, někdy nazývaných nimber .
Sprague-Grundyho teorém je obecná dedukce z výsledků, které nezávisle uvedli a dokázali R. Sprague (1935) a P. M. Grandy (1939). Spočívá v tom, že pro jakoukoli nestrannou hru , kde vyhrává hráč, který provedl poslední tah, je pro každou pozici jednoznačně určena hodnota funkce Sprague-Grundy, která určuje vítěznou strategii nebo její absenci.
Sprague-Grundy funkce je funkce F definovaná pro x a nabývající nezáporných hodnot tak, že:
kdeF( x ) je tedy nejmenší nezáporné celé číslo, které nebylo nalezeno mezi hodnotami Sprague-Grundy pro určité x .
Definice 2Funkce F je definována na množině všech herních pozic následovně:
pokud pozice P jednoznačně prohrává (nelze provést žádný tah) v opačném případě,kde je množina nezáporných celých čísel a je množina všech povolených tahů z pozice P .
Jednou z užitečných vlastností funkce Sprague-Grundy je, že je nula pro všechny prohrávající pozice a kladná pro všechny vítězné pozice. To poskytuje metodu pro nalezení vítězné strategie:
Pokud máme hry , pak můžeme uvažovat o kombinaci těchto her, u kterých je hrací pole tvořeno souborem hracích polí pro hry a jedním tahem si hráč může některá vybrat a provést tah na hrací ploše pro hraní . Taková kombinace se nazývá součet her a značí se . Situace na hracím poli hry , kdy je hrací pole hry v pozici , je vhodně označeno jako .
Funkce Sprague-Grundy má překvapivou vlastnost, která vám umožňuje optimálně hrát součet her , přičemž znáte funkci Sprague-Grundy pro všechny pozice každé z her . Je formulován následovně:
kde - exkluzivní "nebo" (aka XOR).
K dispozici je oblast skládající se z 10 buněk. Hrají dva hráči. Jedním tahem je dovoleno rozdělit oblast na dvě nestejné nenulové oblasti tak, aby nebyla narušena jednota každé jednotlivé buňky (tj. buňku nelze rozdělit). Ten, kdo nemůže udělat tah, prohrává. Kdo vyhraje pod podmínkou korektního fair play?
ŘešeníProblém je vyřešen od konce. Zvažte možnosti rozdělení oblasti pro všechny případy od 1 do 10 buněk a najděte pro ně hodnoty funkce Sprague-Grandy. Všimněte si, že pro tuto hru je v důsledku rozdělení oblasti pokaždé na dvě nové oblasti hodnota funkce Sprague-Grundy nalezena pomocí Nim-sumu .
Hodnota Sprague-Grundy pro n = 10 se ukáže jako 0. Hráč, který provede tah jako první, tedy prohrává. V kterémkoli ze svých tahů se druhý hráč přesune na pozice 4 + 4 nebo n = 1/2/7, pro které je hodnota Sprague-Grundy také rovna 0.
OdpovědětVyhrává ten, kdo se posune jako druhý.