基本概念
公平组合游戏
nim 游戏
有向图游戏和 SG 函数
SG 函数值相同的游戏等价 —— lingfunny
各种模型
nim 游戏
模型:\(n\) 堆石子,每次可以取一堆中的若干个石子(至少一个),取完胜
结论:异或和 \(\ne 0\) \(\Leftrightarrow\) 必胜
证明:
很好证,一般来说博弈论的证明只需要证三件事
-
游戏结束是必败态,异或和为 \(0\) (这个显然)
-
必胜态可以到必败态,也就是异或和非零可以到异或和为零
(假设目前异或和为 \(k\),一定可以找到一个 \(a_i\) 使 \(a_i \oplus k <a_i\),因为如果 \(k\) 的最高位上 \(a_i\) 也是 \(1\),异或之后一定会变小,而由于 \(k\) 是异或和,所以一定有奇数个 \(a_i\) 满足 \(k\) 的最高位上 \(a_i\) 也是 \(1\))
-
必败态只能到必胜态,也就是异或和为零只能到异或和非零
(假设取的石子原本是 \(a_i\),由异或的性质得取后也是 \(a_i\),显然不合法)
我觉得证明很好证,关键是这个结论怎么想得到啊喂)
阶梯-nim 游戏
模型:\(n\) 堆石子,每次可以取一堆中的若干个石子(至少一个),放到前一堆中,最后一次操作的人胜
结论:奇数位置的异或和 \(\ne0 \Leftrightarrow\) 必胜
证明也是一样套路
这个等价于保证单调不下降的 nim
k-nim 游戏
模型:\(n\) 堆石子,每次可以取最多 \(k\) 堆 (不能不取),最后一次操作的人胜
结论:二进制表示下 \(a_i\) 每一位的和 \(\equiv 0 \left(\bmod (k+1)\right)\)
anti-nim 游戏
模型:跟 nim 一样,最后一次操作的人败
结论:当全部 \(a_i=1\),有偶数堆 \(\Leftrightarrow\) 必胜态
当至少一个 \(a_i>1\) ,异或和 $\ne 0 $ \(\Leftrightarrow\)必胜态
第一点显然,对于第二点,若异或和非 \(0\),一定可以变成 \(0\) ,最终只有一堆的石子数 \(>1\) ,此时,轮到先手,先手一定可以让局面变成只有奇数个 1 ,先手胜
反常游戏
推广上述到任意一个反常游戏(最后一次操作的人败)
结论:\(\forall\ SG(a_i)=1\),\(SG(A)=0\) \(\Leftrightarrow\) 必胜态
\(\exists\ SG(a_i)>1\) ,$SG(A)\ne 0 $ \(\Leftrightarrow\) 必胜态
(其中 \(a_i\) 是子游戏,有 \(SG(A)=\bigoplus SG(a_i)\)
拆分-Nim游戏
集合-Nim游戏
Bash 游戏
模型:\(n\) 个石子,每次取 \(1\sim m\) 个
结论:\((m+1)\nmid n\Leftrightarrow\) 必胜