nim遊戲和SG函式

2021-06-19 15:06:34 字數 2007 閱讀 7023

1.無法進行任何移動的局面(terminal position)是p-position.(先手必敗)

2.可以移動到p-position的是n-position.(先手必勝)

3.所有可行的移動都導致n-position的是p-position.(先手必敗)

mex(minimal excludant)運算:

對乙個集合進行運算,返回不屬於這個集合的最小非負整數.例如:mex=3;mex(2,3,5)=0;mex{}=0.

更為一般的遊戲:

給定乙個有向無環圖和乙個起始點頂點上的一枚棋子,兩名選手交替的將這枚棋子沿有向邊進行移動,無法移動者判負.這個遊戲是所有impartial combinatorial games的抽象模型.

在這個遊戲的基礎上定義sg函式:

sg(x)=mex.

1.terminal position對應沒有出邊的頂點i,sg(i)=0,對應於p-position,先手必敗.

2.如果乙個頂點i的sg函式值sg(i)=0,則它的所有後繼頂點j都滿足sg(j)!=0,此時的頂點i對應p-position,先手必敗.

3.如果乙個頂點i的sg函式值sg(i)!=0,則它的全部後繼頂點中,至少存在乙個頂點j滿足,sg(j)=0,此時的頂點i對應n-position,先手必勝.

按照這個方法,可以求出圖中每個頂點的sg函式值,不僅可以得到解,還可以得出求解的狀態轉移過程.

但是這種方法還是很複雜的,時間複雜度很高.

遊戲的擴充套件:

有向圖中並不是只有一枚棋子,而是有n枚棋子,每次可以任意選擇一顆進行移動,這時,如何求解?

sg函式與nim遊戲的對應理解:

當g(x)=k時,表明對於任乙個0<=i

如果把這n枚棋子看成n堆石子,第i枚棋子的sg值看成第i堆石子的數量(1<=i

這裡有幾點值得注意:

基本的nim問題terminal position只有乙個,就是所有的石子數量都為0,同時每乙個石頭堆(數量為n),可以拿掉任意數量個石子i(1<=i

所以基本的nim問題對應的有向無環圖也必須相應的滿足以上兩個條件!

比如當只有一堆石頭(數量為3)的時候,這個nim問題對應的有向無環圖為:

為什麼會有異或運算強勢介入:

基本nim遊戲的唯一terminal position為所有石子堆的石子個數為0,此時n堆石子的二進位制表示的異或運算和s為0.也就是p-position狀態下s=0,先手必輸.

當至少有一堆石子的數目不為0,即處於非terminal position時:

如果s=0,則無論如何行動,結果都會導致s!=0,因為t=

s⊕xk⊕

yk,xk和yk不相等.由p-position轉為n-position.

如果s!=0,則一定可以採取適當的策略使得s=0,t =s

⊕xk⊕ (s⊕xk

)適當選取xk,可以保證移動是合法的.由p-position轉為n-position.

異或運算的出現,使得不用一步一步的進行計算(判斷所有可能的情況),而是抓住了某種特徵,一步到位的完成計算(精髓在此).

乙個有向無環圖變成多個:

剛才的問題是在乙個有向無環圖上移動n枚棋子,很容易將其變成在n個完全一樣的有向無環圖上移動一枚棋子.

定義有向圖遊戲的和:

設g1,g2,....gn是n個有向圖遊戲,定義遊戲g是所有遊戲的和.

遊戲g的移動規則是任意選擇乙個子遊戲gi並移動上面的棋子.根據sprague-grundy theorem,可以得出:

sg(g)=sg(g1)^sg(g2).....^sg(gn).也就是說,遊戲的和的sg函式值是它的所有子遊戲的sg函式值的異或.

更加重要的是,當各個子遊戲不同的時候,上面的結論也成立.所以我們完全可以將所有的nim遊戲分解成多個子遊戲,然後分別求出sg值,最後異或求和,得出解.這樣就十分的方便了.

Nim 遊戲 SG 函式 遊戲的和

nim遊戲是組合遊戲 combinatorial games 的一種,準確來說,屬於 impartial combinatorial games 以下簡稱icg 滿足以下條件的遊戲是icg 可能不太嚴謹 1 有兩名選手 2 兩名選手交替對遊戲進行移動 move 每次一步,選手可以在 一般而言 有限的...

組合遊戲(Nim遊戲) SG函式

sg為0的點 必敗點 能到達的肯定都是sg不為0的點 必勝點 sg不為0的點 必勝點 一定能通過某種方式到達sg為0的點 必敗點 組合遊戲典型例題 給定n堆石子以及乙個由k個不同正整數構成的數字集合s。現在有兩位玩家輪流操作,每次操作可以從任意一堆石子中拿取石子,每次拿取的石子數量必須包含於集合s,...

博弈論 Nim遊戲與SG函式

普通nim遊戲 有若干堆石子,兩人輪流從中取石子,取走最後乙個石子的人為勝利者 我們判斷先手必勝還是先手必敗就要判斷先手面對的局面是必勝態還是必敗態 並且普通nim遊戲滿足以下性質 1.無法移動的狀態是必敗態 2.可以移動到必敗態的局面一定是非必敗態 3.在必敗態做所有操作的結果都是非必敗態 這些性...