NIM博弈证明

版权声明:作为一个蒟蒻,转载时请通知我这个蒟蒻 https://blog.csdn.net/zyszlb2003/article/details/89853613

古代的 Nim \operatorname{Nim} 取石子游戏是由两个人面对若干堆石子进行的游戏。
设有 n 2 n\ge 2 堆石子,各堆分别含有 A 1 A 2 A n A_1、A_2\cdots A_n 个石子。

游戏的目的就是选取最后剩下的石子。游戏规则如下:

  1. 游戏人交替进行游戏
  2. 当轮到每个游戏人取子时,选择这些石子中的一堆,并从所选的堆中取走至少一个石子
    (游戏人也可以取走他所选择的堆中的全部石子,于是留下一个空堆)

当所有的堆都变成空堆时,游戏结束。
最后取子(即能够取走最后一堆中剩下的所有石子)的游戏人,视为游戏的胜利者。

这种游戏称为 NIM \operatorname{NIM} 游戏。

对于这种游戏,只有先手必胜先手必败两种情况。

定理:

NIM \operatorname{NIM} 先手必胜,当且仅当 A 1 xor A 2 xor A 3 xor xor A n A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n 不等于 0 0

证明:

  • 所有物品都被取光是一个必败局面(对手取走最后一件物品,对手已经获得胜利),此时显然有 A 1 xor A 2 xor A 3 xor xor A n = 0 A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n=0
  • 对于任意一个局面,如果 A 1 xor A 2 xor A 3 xor xor A n = x A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n=x 不等于 0 0 ,如果x二进制表示下最高位的1在第k位,那么至少存在一个石子 A i A_i ,它的第 k k 位为1。显然 A i xor x < A i A_i\operatorname{xor}x<A_i 时,我们就能从 A i A_i 堆中取走若干柿子,使其变成 A i xor x A_i\operatorname{xor}x ,从而得到了一个各堆石子数异或起来等于 0 0 的局面。
  • 对面任意一个局面,如果 A 1 xor A 2 xor A 3 xor xor A n = 0 A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n=0 ,那么无论如何取柿子,得到的局面下各堆石子异或起来都不等于 0 0 。用反证法可以证明,假设 A i A_i 被取成了 A i xor x A_i\operatorname{xor}x ,由于 x = 0 x=0 ,所以不满足从所选的堆中取走至少一个石子。
  • 综上所述, NIM \operatorname{NIM} 先手必胜,当且仅当 A 1 xor A 2 xor A 3 xor xor A n A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n 不等于 0 0 ,证毕。

猜你喜欢

转载自blog.csdn.net/zyszlb2003/article/details/89853613