Nim遊戲與SG函式
阿新 • • 發佈:2021-08-12
博弈論最基礎的兩個知識點 : Nim 遊戲, SG 函式.
Nim 遊戲
結論 : 若
\[a_1\oplus a_2 \oplus a_3 \oplus...\oplus a_n = 0 \]則先手必勝.
證明 :
若
\[a_1\oplus a_2 \oplus a_3 \oplus...\oplus a_n = x \]設 \(x\) 的二進位制表示中的最高位為 \(k\), 那麼 \(a_1,a_2...a_n\) 中必然存在至少一個 \(a_i\) 的第 \(k\) 位是 \(1\), 因為 \(a_i \oplus x < a_i\), 所以可以拿走 \(a_i-(a_i\oplus x)\)
則必然有 :
\[a_1\oplus a_2 \oplus a_3 \oplus...\oplus a_i\oplus x\oplus...\oplus a_n = 0 \]也就是說, 倘若異或和不為 \(0\), 我們一定可以找到一個 \(a_i\) 使其變成 \(a_i \oplus x\) , 使異或和變為 \(0\)
\(SG\) 函式
\(mex\) 函式 : 若 \(S\) 是一個非負整數集合, \(mex(S)\) 為求出未出現在集合中的最小非負整數.
\(SG\) 函式 : 在有向圖遊戲 \(G\) 中, 設當前結點為 \(x\), 後繼結點分別有 \(y_1, y_2,..,y_k\) . 則 \(SG(x)=mex\{SG(y_1),SG(y_2),...SG(y_k)\}\). 起點 \(s\) 的 \(SG\) 值為整個遊戲的 \(SG\) 值, \(SG(s)=SG(G)\)
\(SG\) 函式的求法 : 記憶化搜尋.
Nim 遊戲 : Acwing 891. Nim遊戲, Acwing 892. 臺階-Nim遊戲
\(SG\) 函式 : Acwing 893. 集合-Nim遊戲