尼姆博弈

尼姆博弈:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。(源自百度百科:http://baike.baidu.com/view/1946840.htm)

有一次公司组织的拓展活动中,拓展教练和我们玩儿起了这个游戏。当时推断应该有必胜的玩法,不过游戏时间有限,没有完全想明白其中道理。只是推导了几种必胜的局面,不过结局也是我们输多赢少。

在后来的日子里,偶尔也会想到这个问题,只是依旧没能推出来必胜的玩法。直到有一次研究一个位操作的算法时,在大脑中推理解决过程时,这个问题蹦了出来,就想到结合二进制位和之前推导出的几种必胜玩法,问题立刻解决了。回去网上查了下,原来已经有成熟的理论了,也就是开篇提到的尼姆博弈,对比下发现自己想的还是不够全面。

说这个之前,先说说另外一个小游戏。
小的时候学数数的时候,有一个数字游戏,就是两个小伙伴依次数数,每次只能递增数一到两个,谁数到 10(或者 100) 谁赢。当时年幼,没想明白,直到后来的某一天,才完全想明白这个问题。
必胜完法,就是在游戏一开头,通过某种策略,让游戏达到自己完全可控的状态。比如这里,如果你一开始拿走 1 个,这时就剩下 9 个,以后你每次都取到 3 的倍数多 1(也就是你让你们两个在这个一轮数数中的和为 3 ,而 3 这个总数是你一定可以达到的),最后就是必胜,这就是先手优势。
或者也这可这样倒推,如果我要拿到 10,那么我在上轮只要能拿到 7 ,在接下来无论对方说 1 或者 2 我都可以拿到 10,同理,只要我拿到 4 就必可拿到 7,拿到 1 就必可拿到 4 。因为每次的局面都是我必然可控的,第 1 手决定了接下来的操作。
奇怪的时,当时怎么就不会这些推理和归纳的简单的应用呢。
只要你能保证通过某种策略让局面完全在你的掌控之中,你就是先手必胜的。

回到上面的三堆物品上,当时我们的推导是对于像(0,1,1)(还剩两堆都是一个)这种情况是必胜的,继而(0,N,N)也是必胜的。像(1,2,3),(1,4,5)也是必胜的,因为这都可转化为前面的两种情况。
现在可以这样看,把物品的个数用二进制数来表示,这样你每次拿后,都是相应的在二进制中 1 的变化。举个例子,像(1,4,5)这样的,二进制表示就是
001
100
101
202 (这里的 2 表示相应的位上有 2 个 1)
这里只考查 1 的位置,看上面的最后一行 202,这不就是(0,N,N)形么?如此,推广开来,只要上面的二进制中所有的位上的 1 的个数为 2 (0 也可以),就是必胜的局面。也就是三个数异或结果为 0 。
反推的话, 情况也是类似,就是在上面的二进制位里进行 0 1 改变的过程。

在网上查找的时候,发现还有多种其它的类似的博弈游戏,这就是另外的话题了,感兴趣的可能参考维基百科(http://en.wikipedia.org/wiki/Nim)相关内容。

你可能感兴趣的:(尼姆博弈)