您的位置:首页 > 其它

利用反证法证明Nim Game中的定理(结论)

2015-12-23 10:21 155 查看
游戏规则:有N堆物品,每堆有M[i](1 <= i <= N)个物品,两个人轮流从任意一堆上取任意多的物品,最后取光者胜。两人都采取最优策略,问,是先手赢还是后手赢?

定理(结论)说明:如果对于点(状态) (a1, a2, a3, ……, an),有a1 xor a2 xor a3 xor …… xor an == 0,那么这个点就是P(必败)点;如果对于点(状态) (a1, a2, a3, ……, an),有a1 xor a2 xor a3 xor …… xor an != 0,那么这个点就是N(必胜)点。(xor是关于二进制位的抑或操作)

证明:

也许有的同学在此之前并没有了解过博弈,所以我们还需要说明一些东西。

第一个是关于P点和N点的简单说明。P点即是Privious-point,表示先手在这个位置,先手必败;N点即是Next-point,表示先手在这个位置,后手必败。

第二个是关于P点和N点的三个简单却又及其重要的属性。属性一,所有的终结点都是P点;属性二,所有的N点都肯定至少会有一种方法到达P点;属性三,所有的P点都只能到达N点。

看了以上关于P点和N点的叙述,大家可以先仔细思考一下。

那么接下来的证明就比较简单了。

第一,如果P点a1 xor a2 xor …… xor an == 0(式子一),能把其中的一个ai变成ai’使得a1 xor a2 xor …… xor ai’ xor …… xor an == 0(式子二)成立,我们就说这样的点它不是P点,是吧。很明显,我们真的无法找到这样的ai’使得式子二成立。由于这个很容易想清楚,就不再多说了,自己思考吧。

第二,如果N点a1 xor a2 xor …… xor an != 0(式子三),不能够找到一个ai’(ai’ < ai)使得a1 xor a2 xor …… xor ai xor …… xor an == 0(式子四),那么就说明这样的点它不是N点。但是我们确实是能够找到这样的ai’的。两个数的情况就不再赘述了,当有多于三个数的情况,其实我们只用考虑三个点情况就可以了,只需要拿出任意的两个数,其余的数抑或起来成为一个数就行了。在三个数的情况下我们又分为两种情况。第一种情况,其中有两个数或者三个数相等时,比如说(x, x, y)和(x, x, x,)我们都可以通过一步到达(x, x, 0);第二种情况,(x, y, z)三个数互不相等,我们只需要找到其中的某两个数抑或起来小于第三个,然后让第三个数减少成为那两个数抑或起来的结果,那么就到达了P点了。那么任意三个互不相等的数一定会是这样么?我们把它们转换成二进制来看,我们考虑高位是否为1,可以分成以下几类:1. (x)2 = 1a, (y)2 = 1b, (z)2 = 1c,其中任意两个数相抑或高位都会变成0,所以……;2. (x)2 = 1a, (y)2 = 1b, (z)2 = 0c,其中a xor c 必然不等于 b xor c,否则a == b就变成了第一种情况了,那么就会必然有a xor c != b && b xor c != a,如果相等了,那这就是P点而不是N点了,是吧? 那么就必然会有a xor c < b || b xor c < a,为什么呢?你试着在不等式的两边都抑或上一个c,发现了什么么?所以……;3.(x)2 = 1a, (y)2 = 0b, (z)2 = 0c,那么y xor z < x,所以……。综上所述,对于N点所对应的式子三,我们肯定能找到一个ai’(ai’ < ai),使得式子四成立,那就是我们的N点一定能到达一个P点,是吧?

证毕!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 Nim-Game