数学逻辑游戏05:NIM游戏(解答3)
(2009-08-19 23:07:58)
标签:
幽魂之家数学逻辑游戏文化 |
分类: 休闲娱乐类 |
现在考虑一般的NIM游戏(参见《数学逻辑游戏05:NIM游戏》,《数学逻辑游戏05:NIM游戏(解答1)》,《数学逻辑游戏05:NIM游戏(解答2)》
将的表示为二进制,如<3, 5, 7>就表示为<11, 101,
1111>。对于二进制表示有一种按位加的运算,就是在标准的加法中取掉进位,如:
11
101
1111
———————
1011
一个数位上的最后的值实际上只要看相应数位上1的个数,1的个数是偶数,结果是0,1的个数是奇数,结果是1。
使用二进制可以很简单的表示必输状况:按位加都是0的状况就是必输状态。
必输状态有两个重要的特征:
1. 随便怎么拿,得到的一定不是必输状态。
2. 在非必输状态,一定存在一种拿法,使得得到必输状态。
这样,我们就能使对方一直处于必输状态,直至<0, …,
0>,从而获得胜利。所以,如果开始的状态是非必输状态,则先游戏者一定有获胜策略;如果开始的状态是必输状态,则后游戏者一定有获胜策略。
最后,我们来证明按位加都是0的状况是必输状态。
我们在一堆小棍中拿掉一些小棍,则二进制表达式中至少有一位数字发生了变化,而且只在一堆中拿,所以其它推的二进制表达式没有变化,所以按位加至少有一位是1,一定不是必输状态。
如果处于非必输状态,则按位加至少有一位是1。取按位加是1的数位最高的的那个数位,必有一个数在这个数位是1。就这个1改为0,使得这个数位的按位加是0。其它比它小的数位作必要的调整,使得每个数位的按位加都是0。这样调整后的数一定比原数小,它们的差就是我们在这堆中拿走的小棍数。
(完)