NIM博弈证明

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

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

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

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

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

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

定理:

NIM ⁡ \operatorname{NIM} 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 A1xorA2xorA3xorxorAn不等于 0 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 A1xorA2xorA3xorxorAn=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 A1xorA2xorA3xorxorAn=x不等于 0 0 0,如果x二进制表示下最高位的1在第k位,那么至少存在一个石子 A i A_i Ai,它的第 k k k位为1。显然 A i xor ⁡ x &lt; A i A_i\operatorname{xor}x&lt;A_i Aixorx<Ai时,我们就能从 A i A_i Ai堆中取走若干柿子,使其变成 A i xor ⁡ x A_i\operatorname{xor}x Aixorx,从而得到了一个各堆石子数异或起来等于 0 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 A1xorA2xorA3xorxorAn=0,那么无论如何取柿子,得到的局面下各堆石子异或起来都不等于 0 0 0。用反证法可以证明,假设 A i A_i Ai被取成了 A i xor ⁡ x A_i\operatorname{xor}x Aixorx,由于 x = 0 x=0 x=0,所以不满足从所选的堆中取走至少一个石子。
  • 综上所述, NIM ⁡ \operatorname{NIM} 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 A1xorA2xorA3xorxorAn不等于 0 0 0,证毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值