基本定理
ICG遊戲
- 遊戲有兩個人蔘與,二者輪流做出決策。且這兩個人的決策都對自己最有利。
- 當有一人無法做出決策時遊戲結束,無法做出決策的人輸。無論二者如何做出決策,遊戲可以在有限步內結束。
- 遊戲中的同一個狀態不可能多次抵達。且遊戲不會有平局出現。任意一個遊戲者在某一確定狀態可以作出的決策集合只與當前的狀態有關,而與遊戲者無關。
滿足上述條件的問題我們稱之爲ICG遊戲,ICG遊戲屬於組合遊戲。最典型的NIM遊戲,就是一種ICG遊戲。
必勝態與必敗態
定義P-position與N-position:
- P-position:必敗態(簡記爲 \(P\)),即 Previous-position,你可以直觀的認爲處於這種狀態的人一定會輸
- N-position:必勝態(簡記爲 \(N\)),即 Next-position,你可以直觀的理解爲處於這種狀態的人一定會贏
這僅僅是最直觀的定義,更嚴謹的定義爲:
- 無法移動的狀態(即terminal-position)爲 \(P\)
- 可以移動到 \(P\) 的局面爲 \(N\)
- 所有移動都會進入 \(N\) 的局面爲 \(P\)
DAG(有向無環圖)中的博弈
在正式研究SG函數之前,我們先來研究一下DAG中的博弈:
給定一張有向無環圖,在起始點有一枚棋子,兩個頂尖聰明的人交替移動這枚棋子,不能移動的人算輸
不要小看這個遊戲,事實上,所有ICG問題都可以抽象爲這種遊戲(即把初始局面看做頂點,把從一個狀態可以到另一個狀態之間連邊)
SG函數
下面我們來正式研究一下SG(Sprague-Grundy)函數
首先定義 \(mex\) 運算,這是一種集合中的運算,它表示 最小的不屬於集合的非負整數
例如:\(mex\{1,2,3\}=0,mex\{0,2\}=1,max\{0,1,2,3\}=4,mex\{\}=0\)
對於給定的 DAG(有向無環圖),定義每個點 \(x\) 的SG函數爲:
然而單單一個這樣的空洞的函數是解決不了問題的,我們需要分析一下它的性質
所有匯點的SG函數爲 \(0\)。
這個性質比較顯然,因爲匯點的所有後繼狀態都是空集
當 \(SG(x)=0\) 時,該節點爲必敗點。
由SG函數的性質知該節點的所有後繼節點SG值均不爲 \(0\),滿足必敗態的定義。
當 \(SG(x) \ne 0\) 時,該節點是必勝點。
由SG函數的定義可知該節點的後繼節點中一定有一個節點的SG值爲 \(0\),滿足必勝態的定義。
神奇!