博弈論之SG函數 學習筆記

在許多地方曾經行過這樣一個小遊戲,擺出三堆硬幣。分別包含3枚、5枚、7枚。兩人輪流行動每次可以任選一堆,從中取走任意多枚硬幣,可把一堆取完,但不能不取。取走最後一枚硬幣者獲得勝利。

這類遊戲可以推廣爲更加一般的形式:

給定 \(n\) 堆物品,第 \(i\) 堆物品有 \(A_i\) 個。兩名玩家輪流行動,每次可以任選一堆,取走任意多個物品,可把一堆取光,但不能不取。取走最後一件物品者獲勝。兩人都採取最優策略,問先手能否必勝。

我們把這種遊戲稱爲 NIM 博弈。把遊戲過程中面臨的狀態稱爲 局面。整局遊戲第一個行動的稱爲 先手,第二個行動的稱爲 後手。若在某一局面下無論採取何種行動,都會輸掉遊戲,則稱該局面 必敗。所謂採取最優策略是指,若在某一局面下存在某種行動,使得行動後對手面臨必敗局面,則優先採取該行動。同時,這樣的局面被稱爲 必勝。我們討論的博弈問題一般都只考慮理想情況,即兩人均無失誤,都採取最優策略行動時遊戲的結果。NIM 博弈不存在平局,只有 先手必勝先手必敗 兩種情況。

定理

NIM博弈先手必勝,當且僅當 \(A_1 \oplus A_2 \oplus \ldots \oplus A_n \neq 0\)

這裏,\(\oplus\) 表示異或符號。

證明:

所有物品都被取光是一個必敗局面(對手取走最後一件物品,已經獲得勝利),此時顯然有 \(A_1 \oplus A_2 \oplus \ldots \oplus A_n = 0\)

對於任意一個局面,如果 \(A_1 \oplus A_2 \oplus \ldots \oplus A_n = x \neq 0\),設 \(x\) 的二進制表示最高位的 \(1\) 在第 \(k\) 位,那麼至少存在一堆石子 \(A_i\),它的第 \(k\) 位是 \(1\)。顯然 \(A_i \oplus x \lt A_i\),我們就從 \(A_i\) 中取走若干石子,使其變爲 \(A_i \oplus x\),就得到了一個各堆石子數異或起來等於 \(0\) 的局面。

對於任意一個局面,如果 \(A_1 \oplus A_2 \oplus \ldots \oplus A_n = 0\),那麼無論如何取石子,到的局面下各堆石子異或起來都不等於 \(0\)。可用反證法證明,假設 \(A_i\) 被取成了 \(A_i'\),並且 \(A_1 \oplus A_2 \oplus A_i' \oplus A_n = 0\)。由異或運算的消去律得 \(A_i' = A_i\),與”不能不取石子”的規則矛盾。

綜上所述,再由數學歸納法可知,\(A_1 \oplus A_2 \oplus \ldots \oplus A_n \neq 0\) 爲必勝局面,一定存在一種行動讓對手面臨“各堆石子異或起來等於 \(0\)”。\(A_1 \oplus A_2 \oplus \ldots \oplus A_n = 0\) 爲必敗局面,無論如何行動,都會讓對手面臨一個“各堆石子異或起來不等於 \(0\)”的必勝局面。

證畢。

公平組合遊戲ICG

若一個遊戲滿足:

  1. 由兩名玩家交替行動;
  2. 在遊戲進程的任意時刻,可以執行的合法行動與輪到哪名玩家無關;
  3. 不能行動的玩家判負。

則稱該遊戲爲一個公平組合遊戲。

NIM 博弈屬於公平組合遊戲,但常見的棋類遊戲,比如圍棋,就不是公平組合遊戲。因爲圍棋交戰雙方分別只能落黑子和白子,勝負判定也比較複雜,不滿足條件 2 和條件 3。

有向圖遊戲

給定一個有向無環圖,圖中有一個唯一的起點,在起點上放有一枚棋子。兩名玩家交替地把這枚棋子沿有向邊進行移動,每次可以移動一步,無法移動者判負。該遊戲被稱爲 有向圖遊戲

任何一個公平組合遊戲都可以轉化爲有向圖遊戲。具體方法是,把每個局面看成圖中的一個節點,並且從每個局面向沿着合法行動能夠到達的下一個局面連有向邊。

Mex運算

\(S\) 表示一個非負整數集合。定義 \(mex(S)\) 爲求出不屬於集合 \(S\) 的最小非負整數的運算,即:

\[mex(S) = \min\limits_{x \in \mathbb{N}, x \notin S} \{ x \} \]

SG函數

在有向圖遊戲中,對於每個節點 \(x\),設從 \(x\) 出發共有 \(k\) 條有向邊,分別到達節點 \(y_1, y_2, \ldots, y_k\),定義 \(SG(x)\)\(x\) 的後繼節點 \(y_1, y_2, \ldots, y_k\) 的 SG 函值構成的集合再執行 \(mex\) 運算的結果,即:

\[SG(x) = mex(\{ SG(y_1), SG(y_2), \ldots, SG(y_k) \}) \]

特別地,整個有向圖遊戲 \(G\) 的 SG 函數值被定義爲有向圖遊戲起點 \(s\) 的 SG 函數值,即 \(SG(G) = SG(s)\)

有向圖遊戲的和

\(G_1, G_2, \ldots, G_m\)\(m\) 個有向圖遊戲,定義有向圖遊戲 \(G\),它的行動規則是任選某個有向圖遊戲 \(G_i\),並在 \(G_i\) 上行動一步。\(G\) 被稱爲優先圖遊戲 \(G_1, G_2, \ldots, G_m\) 的和。

有向圖遊戲的和的 SG 函數值等於它包含的各個子游戲 SG 函數值的異或和,即:

\[SG(G) = SG(G_1) \oplus SG(G_2) \oplus \ldots \oplus SG(G_m) \]

上述性質被稱爲 SG定義。SG定理的證明

定理

有向圖遊戲的某個局面必勝,當且僅當該局面對應節點的 SG 函數值大於 \(0\)

有向圖遊戲的某個局面必敗,當且僅當該局面對應節點的 SG 函數值等於 \(0\)

我們不再詳細證明該定理。讀者可以這樣理解:

在一個沒有出邊的節點上,棋子不能移動,它的 SG 值爲 \(0\),對應必敗局面。

若一個節點的某個後繼節點 SG 值爲 \(0\),在 mex 運算後,該節點的SG值大於 \(0\)。這等價於,若一個局面的後繼局面中存在必敗局面,則當前局面爲必勝局面。

若一個節點的後繼節點 SG 值均不爲 \(0\),在 mex 運算後,該節點的 SG 值爲 \(0\)。這等價於,若一個局面的後繼局面全部爲必勝局面,則當前局面爲必敗局面。

對於若干個有向圖遊戲的和,其證明方法與 NIM 博弈類似。(即上面 SG定理的證明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章