博弈論:公平組合遊戲(Nim 遊戲 & SG 定理)學習筆記

dengchengyu發表於2024-11-20

博弈論:公平組合遊戲(Nim 遊戲 & SG 定理)學習筆記

公平組合遊戲

定義:

  1. 兩人輪流以最優方式操作,兩人的操作方式相同。
  2. 每次操作遊戲狀態必須改變,不能操作者輸,另一人贏。
  3. 每個遊戲狀態不能重複到達。

我們把每個狀態看作一個點,每個狀態的點向它後繼狀態的點連有向邊,可以生成一張 DAG(有向無環圖)。

所以公平組合遊戲也叫做有向圖遊戲

必勝狀態 & 必負狀態

定義:

  1. 沒有後繼狀態的狀態為必負狀態。
  2. 至少有一個後繼狀態為必負狀態的狀態為必勝狀態。
  3. 所有後繼狀態都為必勝狀態的狀態為必負狀態。
  4. 所有狀態為必勝狀態或必負狀態。

\(n,m\) 為遊戲生成的有向圖的點數和邊數。
則我們可以根據必勝狀態和必負狀態在 \(O(n+m)\) 的時間用記憶化搜尋解決遊戲的勝負。

Nim 遊戲

\(n\) 堆石子,每堆石子有 \(a_i\) 個,兩個人輪流取正整數個石子,不能取者輸。

Nim 和

設一個狀態 Nim 和為 \(S=a_1\oplus a_2\oplus\cdots\oplus a_n\)

性質:Nim 和為 0 的狀態為必負狀態,Nim 和不為 0 的狀態為必勝狀態

證明

根據必勝狀態和必負狀態的定義,我們只需證明:

  1. 沒有後繼狀態的狀態,滿足 \(S=0\)
  2. 對於 \(S\ne0\) 的狀態,至少有一種操作使得後繼狀態 \(S=0\)
  3. 對於 \(S=0\) 的狀態,沒有一種操作使得後繼狀態 \(S\ne 0\)

證明如下:

  1. 沒有後繼狀態的狀態,\(a_1=a_2=\cdots=a_n=0\),則 \(S=0\)
  2. 對於 \(S\ne 0\) 的狀態,考慮操作 \(a_i\) 變為 \(a_i'\) 可以滿足條件。則 \(S\oplus a_i\oplus a_i'=0\),即 \(a_i'=a_i\oplus S\)
    由於 \(S\ne 0\),因此考慮 \(S\) 的最高位的一位 1,根據異或的定義,有奇數個 \(a\) 這一位為 1,對於這一位為 1 的 \(a_j\),一定有 \(a_j\oplus S<a_j\),則操作 \(j\) 可以使 \(S'\) 為 0。
  3. 對於 \(S=0\) 的狀態,根據異或的定義,其中一個 \(a\) 改變則 \(S\) 也會改變。

SG 函式

定義

  1. 對於沒有後繼狀態的狀態 \(x\)\(SG(x)=0\)
  2. 對於狀態 \(x\) 和它的所有後繼狀態 \(y\)\(SG(x)=mex(\{SG(y)\})\)

其中 \(mex(S)\) 表示集合 \(S\) 中最小沒出現過的非負整數

性質\(SG(x)=0\) 時,\(x\) 為必敗狀態;\(SG(x)\ne 0\)\(x\) 為必勝狀態。

證明

根據必勝狀態和必敗狀態的定義,我們只需證明:

  1. 沒有後繼狀態的狀態滿足 \(SG=0\)
  2. 對於後繼狀態存在 \(SG=0\) 的狀態,它的 \(SG\ne 0\)
  3. 對於後繼狀態沒有 \(SG=0\) 的狀態,它的 \(SG=0\)

根據 \(SG\) 的定義,這三點都是顯然的。

SG 定理

對於由 \(n\) 個有向圖遊戲組成的遊戲,這個遊戲每次操作可以選擇一張圖操作一次。

若當前每張圖的狀態為 \(s_i\)當且僅當 \(SG(s_1)\oplus SG(s_2)\oplus\cdots SG(s_n)\ne 0\) 時,先手必勝

證明

我們可以把第 \(i\) 堆石子有 \(SG(s_i)\) 個,由於 \(SG(x)=mex(\{SG(y)\})\),則 \(SG(s_i)=x\) 可以轉移到所有的 \(SG(s_i')=y,0\le y<x\),這符合 Nim 遊戲的要求,於是可以用 Nim 和來解釋。

相關文章