SG 函数学习笔记(好像还没写完)
SG 函数用于解决公平组合游戏问题。下面游戏默认为公平组合游戏。
对于一个游戏,我们可以记为其所有后继状态的集合 \(G\)。所有必败游戏的集合为 \(P\),必胜游戏集合为 \(N\)。
特别地,单堆 Nim 游戏记为 \(* n=\{* m: m<n\}=\{*0,*1,\dots,*(n-1)\}\)。其中 \(n\in\mathbb{N}\)。
两个游戏的和定义为:
即 \(G+H\) 相当于两个互不干扰的游戏,两个玩家每次可以选择一个游戏走一步,都不能操作时结束游戏。Nim 游戏就是多个单堆 Nim 游戏的和。
单堆 Nim 游戏只有 \(n=0\) 时先手必败,但是两个单堆 Nim 游戏 \(* n + * n'\) 先手必败的条件是 \(n = n'\)。
如果一个游戏是多个游戏的和,那么这个游戏的胜负就可以看作这多个游戏和的胜负。
我们定义两个游戏 \(G_1, G_2\) 等价,当且仅当对于所有游戏 \(H\),\(G_1+H\) 和 \(G_2+H\) 要么都必胜,要么都必败。记为 \(G_1\approx G_2\),这个关系确实是全体公平组合游戏上的等价关系。
引理 1:\(A, B \in P \Rightarrow A + B \in P\)。证明显然。
引理 2:对于游戏 \(G\) 和任何必败游戏 \(A\),有 \(G\approx G+A\)。
[!info]- 证明
只要证 \(\forall H\),\(G + H\) 和 \(G + H + A\) 同时必胜或必败。那么由于引理 1,若 \(G+H \in P\),显然成立,否则先手走一步 \(G+H\) 得到 \((G+H)'\),然后 \((G+H)'+A\in P\),后手必败,先手必胜。
引理 3:\(G\approx G' \iff G+G'\in P\)。
[!info]- 证明
\(G \approx G'\) 得到 \(G + G'\) 和 \(G'+G'\) 同时必胜或必败,而 \(G'+G'\in P\),因为先手在一边怎么操作后手就在另一边同样操作,最后先手先无法操作。所以 \(G+G'\in P\)。\(G+G'\in P\) 则由引理 2 得到 \(G\approx G+(G+G')\approx (G+G)+G'\approx G'\)。
定理:
翻译过来就是所有游戏都等价于一个单堆 Nim 游戏。
[!info]- 证明
考虑归纳,设 \(G = \{G_1, G_2, \dots, G_k\}\),根据归纳假设,存在 \(n_1, n_2,\dots, n_k\),使得 \(G_i \approx * n_i\)。
下面我们证明 \(G'=\{* n_1, * n_2, \dots, * n_k\}\approx *m\),其中 \(m=\text{mex}(n_1, n_2, \dots, n_k)\):
根据引理 3,只要证明 \(G'+* m\in P\),不妨设 \(G'\neq * 0\)。若先手选择 \(*n_i\in*m\),则后手可以选择 \(*n_i\in G'\),\(* n_i+*n_i\in P\),先手必败。若先手选择 \(* n_i \in G',*n_i<m\),同样地后手可以选择 \(* n_i \in * m\),先手必败。最后如果先手选择 \(* n_i \in G', n_i > m\),则后手选择 \(* m\in * n_i\),\(* m+*m\in P\),先手必败。证毕。
然后我们证明 \(G\approx G'\)。根据引理 3 只要证 \(G+G'\in P\)。不妨设 \(G' \neq*0\)。若先手选择 \(G_i\) 则后手可以选择 \(* n_i\),若先手选择 \(* n_i\) 则后手可以选择 \(G_i\),最后局面即 \(G_i + * n_i \in P\),先手必败。证毕。
于是我们可以为每个游戏 \(G\) 分配一个自然数 \(n\),使得 \(G\approx *n\)。这称为 \(G\) 对应的 Nimber 数。将 \(G\) 映射到 \(n\) 的函数称为 SG 函数。
根据上面的证明,我们有 \(SG(x) = \text{mex}(sg(y)\mid y\in x)\)。
\(SG(x) = 0\) 的状态为必败态,\(SG(x) \neq 0\) 的状态为必胜态。这是显然的。
我们有定理:
[!info]- 证明
\(*a_1+*a_2+\dots+*a_n\) 就是 \(n\) 堆石子的 Nim 游戏,由 Nim 游戏的结论知
所以
所以有
令 \(SG(G_i) = a_i\),则
这个定理可以让我们快速地递归计算 SG 函数值。

浙公网安备 33010602011771号