NIM博弈证明

博客介绍了古代Nim取石子游戏,该游戏由两人面对若干堆石子进行,规则是游戏人交替取子,最后取子者获胜。对于此游戏只有先手必胜和先手必败两种情况,还给出先手必胜的定理及证明,即当各堆石子数异或结果不为0时先手必胜。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

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

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

定理:

NIM⁡\operatorname{NIM}NIM先手必胜,当且仅当A1xor⁡A2xor⁡A3xor⁡⋯xor⁡AnA_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_nA1xorA2xorA3xorxorAn不等于000

证明:

  • 所有物品都被取光是一个必败局面(对手取走最后一件物品,对手已经获得胜利),此时显然有A1xor⁡A2xor⁡A3xor⁡⋯xor⁡An=0A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n=0A1xorA2xorA3xorxorAn=0
  • 对于任意一个局面,如果A1xor⁡A2xor⁡A3xor⁡⋯xor⁡An=xA_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n=xA1xorA2xorA3xorxorAn=x不等于000,如果x二进制表示下最高位的1在第k位,那么至少存在一个石子AiA_iAi,它的第kkk位为1。显然Aixor⁡x&lt;AiA_i\operatorname{xor}x&lt;A_iAixorx<Ai时,我们就能从AiA_iAi堆中取走若干柿子,使其变成Aixor⁡xA_i\operatorname{xor}xAixorx,从而得到了一个各堆石子数异或起来等于000的局面。
  • 对面任意一个局面,如果A1xor⁡A2xor⁡A3xor⁡⋯xor⁡An=0A_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_n=0A1xorA2xorA3xorxorAn=0,那么无论如何取柿子,得到的局面下各堆石子异或起来都不等于000。用反证法可以证明,假设AiA_iAi被取成了Aixor⁡xA_i\operatorname{xor}xAixorx,由于x=0x=0x=0,所以不满足从所选的堆中取走至少一个石子。
  • 综上所述,NIM⁡\operatorname{NIM}NIM先手必胜,当且仅当A1xor⁡A2xor⁡A3xor⁡⋯xor⁡AnA_1\operatorname{xor}A_2\operatorname{xor}A_3\operatorname{xor}\cdots\operatorname{xor}A_nA1xorA2xorA3xorxorAn不等于000,证毕。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值