2021-02-02

Nim游戏

最普遍的定义:有若干堆石子,每堆石子的数量都是有限的,每次每人进行一次移动。合法的移动要求:“选择一堆石子并拿走若干颗,且不能不拿”。当轮到某个人时所有的石子堆都已经被拿空了,则判为此人负,因为他此刻无法进行任何合法的移动。

为了方便阐述,以下列模型为例

用(a, b, c)表示这三堆物品各自的数目。

(1) 显然(0, 0, 0)是P局势,即为必败态,此时先手无可取的物品,必败。

(2) 而对于(n, n, 0)的局势,只要后手拿走和先手一样多的物品,最后必会形成局势(1):(0, 0, 0)。即先手必败的P局势。故此也为P局势。

(3) 对于(n, m, 0)的局势,先手可以先拿走一些物品,使剩下的两堆物品相同即构成局势(2):(n, n, 0)。

最终该模型的规律为:(a, b, c)为必败态当且仅当a xor b xor c =0a xor b xor c =0
证明
设p(a, b, c) = a xor b xor c
1)任何以p(a,b,c)=0p(a,b,c)=0出发的局面(a, b, c)一定有p(a,b,c′)≠0p(a,b,c′)≠0,否则可以得到c = c’
2)任何p(a,b,c)≠0p(a,b,c)≠0的局面都可以走向p(a,b,c)=0p(a,b,c)=0的局面

对所有p(a,b,c)=0p(a,b,c)=0的局面,不管先手如何走,一定会到达p(a,b,c′)≠0p(a,b,c′)≠0的局面。而后手一定可以通过选择一些物品走向p(a′,b′,c′′)p(a′,b′,c″)的局面,最终一定会走向a=b=ca=b=c的P局势,因此对于p(a,b,c)=0p(a,b,c)=0的局势,一定是P局势。

例如:p(4, 10, 14)=0

4=(0100)2=0+4+0+04=(0100)2=0+4+0+0
10=(1010)2=8+0+2+010=(1010)2=8+0+2+0
14=(1110)2=8+4+2+014=(1110)2=8+4+2+0
分解成二进制后,非零项成对出现。

所以有以下情况:

  1. 先手拿掉1414里的88和22,后手可以拿1010里的88和22。最终剩下44和44,显然先手必输。
  2. 先手拿掉1414里的44,后手可以拿44里的44。则剩下1010和1010,显然先手必输。
  3. 先手拿掉1414里的55个,剩下99,即为8+18+1,则可以通过构造其他物品取走的数目满足成对出现。当前为(4,10,9)(4,10,9):

4=(0100)2=0+4+0+04=(0100)2=0+4+0+0
10=(1010)2=8+0+2+010=(1010)2=8+0+2+0
9=(1001)2=8+0+0+19=(1001)2=8+0+0+1
则,44中取走11个,为(3,10,9)(3,10,9):

3=(0011)2=0+0+2+13=(0011)2=0+0+2+1
10=(1010)2=8+0+2+010=(1010)2=8+0+2+0
9=(1001)2=8+0+0+19=(1001)2=8+0+0+1
如此,构造即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值