Nim 游戏及其变形
Nim:
\(n\) 堆物品,第 \(i\) 堆 \(a_i\) 个,两个玩家轮流取走任意一堆的任意个物品,但不能不取,不能操作者输。
结论:若 \(\oplus_{i=1}^n a_i \ne 0\),先手必胜,反之后手必胜。
证明: 显然终局满足情况。
那么当 \(\oplus_{i=1}^n a_i = k(k \ne 0)\) 时,我们只要令含有 \(k\) 最大位的 \(a_i \gets a_i \oplus k\) 即可出现 \(k = 0\) 的情况,后手必然会使得 \(k \ne 0\)。交替进行则后手必然输。
K-Nim:
\(n\) 堆物品,第 \(i\) 堆 \(a_i\) 个,两个玩家轮流取走任意 \(k\) 堆的任意个物品,但不能不取,不能操作者输。
结论:若 \(\sum_{bit = 1}^{val}\sum_{i = 1}^n ((a_i)_{bit}\mod(k + 1)) \ne 0\),先手必胜,否则后手必胜。
证明:可以类比 \(\rm Nim\) 的证明方法。
阶梯 Nim:
\(n\) 堆物品,第 \(i\) 堆 \(a_i\) 个,两个玩家轮流选择第 \(i\) 堆的任意个物品移动到 \(i - 1\) 堆,但不能不取,不能操作者输。(第 0 堆是垃圾桶)
结论:若 \(\oplus _{i = 1} ^ na_i[i \mod2 = 1] \ne 0\),先手必胜,否则后手必胜。
证明: 后手遇到先手必胜的情况,如果将偶数堆的物品丢到了奇数堆,先手可以把它再丢进偶数堆。
Anti Nim:
\(n\) 堆物品,第 \(i\) 堆 \(a_i\) 个,两个玩家轮流取走任意一堆的任意个物品,但不能不取,取到最后一个物品者输。
结论:一个状态是必胜态,当且仅当一下两种情况:
-
最大堆物品数量为 \(1\),且有偶数堆物品。
-
最大堆物品数量大于 \(1\),且 \(\oplus_{i=1}^na_i \ne 0\)。
证明:
\((1)\) 最大堆物品数量为 \(1\):
-
\(a.\) 物品堆数为偶数:先手必胜。
-
\(b.\) 物品堆数为奇数:先手必败。
\((2)\) 仅有一堆物品数量大于 \(1\):
此时显然有 \(\oplus_{i = 1}^n a_i\ne 0\)。
-
\(a.\) 有奇数堆物品:此时先手可以全部将最大堆的物品全部取光,转成 \((1)a.\) 了,先手必胜。
-
\(b.\) 有偶数堆物品:此时先手可以将最大堆的物品取得只剩一个,还是变为 \((1)a.\),先手必胜。
于是,在 \((2)\) 的情况下先手必胜。
\((3)\) 有两堆及以上的物品数量大于 \(1\):
-
\(a.\) \(\oplus_{i=1}^n a_i = 0\) 时:可能转化为 \((3)b.\) 或者 \((2)\)。
-
\(b.\) \(\oplus_{i=1}^n a_i \ne 0:\) 一定可以转化为 \((3)a.\)。
通过观察可以发现,若先手拿到的是 \((3)b.\) 的情况,则先手总是可以转化为 \((3)a.\) 的情况,使得后手最后只能将 \((2)\) 的局势交给先手。进一步可以推出 \((3)a.\) 为先手必败状态而 \((3)b.\) 是先手必胜状态。
Fib Nim
有 \(n\) 个石子,每次可以取出 \(\ge 1\) 的石子且取出的石子的个数小于等于上一次的两倍,先手不能全部取走,不能取的输。
Lemma:齐肯多夫定理
任意正整数都可以被若干个 不连续的 斐波那契数表示出来。
-
Proof:
设该正整数为 \(n\),若 \(n\) 为斐波那契数自然满足条件。
否则,我们找到最大的 \(i\) 满足 \(fib_i < n < fib_{i + 1}\),并令 \(n \gets n - fib_i\),重复该过程直到 \(n = 0\)。此时我们只需要说明连续两次操作不会选择到相邻的 \(fib_{i - 1}, fib_i\),考虑反证法。若连续取到 \(fib_i, fib_{i - 1}\),则第一次操作应当取到 \(fib_{i + 1}\),矛盾。
Narration
结论:先手必败当且仅当 \(n\) 为斐波那契数。
考虑 \(n = 1, 2\) 的情况,显然先手败。考虑归纳:
-
\(n\) 是斐波那契数:设 \(n = fib_i = fib_{i - 1} + fib_{i - 2}\),考虑先手取的数 \(x\):
-
\(x \ge fib_{i - 2}\):则后手直接一次取完。
-
\(x < fib_{i - 2}\):则留给后手的数显然是非斐波那契数,根据归纳假设先手必败。
-
-
\(n\) 不是斐波那契数:直接取成斐波那契数即可留给后手必败。
Extent
思考:第一个人 最小 取多少可以让后手必败?
我们考虑对 \(n\) 斐波那契分解,则我们取分解后的最小值。则后手每次取 \(x\) 时,我们就补全至第三大的数即可。是否可以更小?显然不可以,否则后手可以补成最小值获得一样的必胜态。

浙公网安备 33010602011771号