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.\) 是先手必胜状态。

posted @ 2024-04-30 13:33  Little_corn  阅读(18)  评论(0编辑  收藏  举报