Nimm’s Game

在几个经典的博弈中,Nimm‘s Game 是最美妙的。

题目要求:有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。

解题思路:

我们用(a,b,c)表示某种局势,如果面对的这种局势会令操作者必败,那么称这种局势为奇异局势。第一种必败态:(0 ,0,0)显然是必败态,无论谁面对(0 ,0 ,0)都是必败的;第二种必败态:(0,n ,n),先手在某堆中取走k(k<=n),后手都可以在另一堆中取相同的操作。最终必然是先手面对(0 ,0 ,0),必败。

(1, 2,3)也是必败态,不论先手怎么拿,后手都能将局势变成(0,n ,n)的情形。

  存在一种运算符号是‘ ^ ’(异或)运算符。这种运算是按照位运算进行的计算的,规则:同为0,异为1。如: 1(化为二进制)=01, 2(化为二进制)=10 ,3(化为二进制)=11, 1^2^3=0;对于任意的奇异局势都有(a1^a2^a3)=0。假如(a1<a2<a3),面对的是非奇异局势,怎么让局势变为奇异局势呢?~只需要让a3变为(a1^a2),即在a3中取走a3-(a1^a2)。a1^a2^(a1^a2)=a1^a1^a2^a2=0^0=0。

NImm's Game可以推广到k堆物品,且各堆物品数为N1,N2,N3...Nk。确定先手胜还是后手胜.

  • 上边已经讨论过两堆物品的情况。那么如果推广到k堆,应该怎么处理呢?首先每个正数都唯一对应一个二进制数,如:57(10) = 111001(2),57(10)=25+24+23+20 。我们可以认为每堆是由2的幂次的更小堆组成。

考虑由k堆物品组成的Nimm's Game,每堆分别为N1,N2,N3...Nk。将其化为二进制为:

N1=as...a1a0;//as,a1,a0要么是1,要么是0。

N2=bs...b1b0;

...

Nk=ms...m1m0;

如果每种更小堆的个数和为偶数,那么称Nim博弈平衡,而对应位相加和为偶数的称为平衡位,否则称为非平衡位,Nim博弈平衡当且仅当:

as+bs+....ms是偶数,即as^bs^...ms=0;

...

a1+b1+...m1是偶数,即a1^b1^...m1=0;

a0+b0+...m0是偶数,即a0^b0^...m1=0;

如果a1^a2^a3^...an=0,即局势为奇异局势。先手必败。

证明:定义P-position为必败态,先手必败,N-position为必胜态,先手必胜,后手必败。即更严谨定义为:(1)无法进行任何移动的局面(terminal position)是P-position。(2)可以移动到P-position的局面是N-position(3)所有移动都导致N-position的局面是P-position。

根据定义,证明一种判断position的性质的方法的正确性,只需证明三个命题: 1、这个判断将所有terminal position判为P-position;2、根据这个判断被判为N-position的局面一定可以移动到某个P-position;3、根据这个判断被判为P-position的局面无法移动到某个P-position。

第一个命题显然,terminal position只有一个,就是全0,异或仍然是0。
第二个命题,对于某个局面(a1,a2,...,an),若a1^a2^...^an!=0,一定存在某个合法的移动,将ai改变成ai'后满足a1^a2^...^ai'^...^an=0。不妨设a1^a2^...^an=k,则一定存在某个ai,它的二进制表示在k的最高位上是1(否则k的最高位那个1是怎么得到的)。这时ai^k<ai一定成立。则我们可以将ai改变成ai'=ai^k,此时a1^a2^...^ai'^...^an=a1^a2^...^an^k=0。
第三个命题,对于某个局面(a1,a2,...,an),若a1^a2^...^an=0,一定不存在某个合法的移动,将ai改变成ai'后满足a1^a2^...^ai'^...^an=0。因为异或运算满足消去率,由a1^a2^...^an=a1^a2^...^ai'^...^an可以得到ai=ai'。所以将ai改变成ai'不是一个合法的移动。

证毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值