无穷下降法·数的按位异或与随机博弈(1)

无穷下降法是著名的业余数学家费马提出的,也正是因为这个方法他才敢在书页边上声称自己已经找到了一个巧妙的方法证明费马猜想(x^n+y^n=z^n在n>2时没有正整数解,x^y表示x的y次方)。意外的是这个方法并没有想象中的那样神奇,它仅仅可以证明对于某些特殊的n才能成立(譬如说4),思路是:假设存在一组解(x0,y0,z0),那么由这一组解可以得到一组新的解(x1,y1,z1),并且满足z0>z1,这个过程可以重复进行,然而这是不可能的,这样必然使得zi“下降”到0,所以原方程没有正整数解。这个方法应该和数学归纳法齐名的,然而它太类似反证法了:上述证明可以写成假设一组解(x0,y0,z0)是所有正整数解中满足z最小的一组解,这时再构造出一组新的解(x1,y1,z1)满足z0>z1,与假设矛盾,所以原方程没有正整数解。也不知道是不是由于这个原因,高中数学书中对这个方法只字未提。
随机博弈指的是这样的一个博弈游戏,目前有任意堆石子,每堆石子个数也是任意的,双方轮流从中取出石子,规则如下:

1〉每一步应取走至少一枚石子;每一步只能从某一堆中取走部分或全部石子;

2〉如果谁取到最后一枚石子就胜。

这种博弈的最终状态是:最后剩下一堆石子,当前取石子的人一次取完剩下的全部石子获胜。当石子剩下两堆,每堆1颗的时候,当前取的人显然必败;再来讨论一种情况,当石子剩下两堆,其中一堆只剩下1颗,另一堆剩下多于1颗石子时,当前取的人只需将多于1颗的那一堆取到剩余1颗,则局面变为刚才提到的必败局面。这个过程就是当前取石子的人如果有必胜策略,那么就迫使局面由必胜局面转化到必败局面,也就是说如果当前的局面是必败局面,那么经过2次取,局面又回到必败局面。无穷下降法不同于反证法之处也在此:在“下降”的过程中,状态一直保持不变(在证明费马猜想n=4的情形时,状态就是该三元组是方程的解);而在随机博弈过程中,状态即局面,下降的是石子数目,由于石子总数目一直在减少,因此最终会“下降”到终极必败状态:最后一颗石子已经被胜者拿走,当前没有石子剩余。现在的问题是:
1〉确定一个方法(或者称之为一个从某一局面映射集合{必胜局面,必败局面}的函数),能够快速判断出当前局面是否为必胜(必败)局面;
2〉是否存在一种满足规则的转化状态方法(或者称之为一个从必胜局面映射到必败局面的函数),满足只要当前不是必败局面,取一次后均可以转化到必败局面。
如果仅仅是两堆石子,那么上述两个问题很好解决:
1〉当两堆石子数目相等的时候,当前局面为必败局面,否则为必胜局面,显然,两堆均为0颗是满足这个方法的;
2〉如果当前局面是必胜局面,那么从石子较多的那一堆里面取,使得两堆石子数相等,这样便转化到了必败局面。
然而,对多于两堆石子,1〉可以照旧,但是这样一来2〉远远没有这么简单,因为不太可能取后使得所有堆数目都一样(除非除了石子最多的一堆之外其它所有堆石子数目都相等)。因此需要找一组更加有效的方法,有个叫张一飞的人作过这个研究,他想到的方法是这样的:
1〉把所有堆的石子数目用二进制数表示出来,当全部这些数按位异或结果为0时当前局面为必败局面,否则为必胜局面;
2〉(定理0)一组自然数中必然存在一个数,它大于等于其它所有数按位异或的结果。因此在必胜局面下,因为所有数按位异或的结果是大于零的,那么通过一次取,将这个(大于其它所有数按位异或的结果的)数下降到其它所有数按位异或的结果,这时局面就变为必败局面了。
数的按位异或是一种信息时代新兴的运算(也用^表示,下文中a^b均表示a与b异或),若干个(二进制)数异或,在这些数中取最大的一个数,其它的数补前零与这个数对齐,如果这些数在某一位上有奇数个1,那么结果在这一位上为1,否则结果的这一位为0,如3^5^7^12:
0011
0101
0111
1100
------
1101
从右往左,第一位上有3个1,第二位上有2个1,第三位上有3个1,第四位上有1个1,所以结果为1101(从左往右)。异或运算满足交换律和结合律,任何数与0异或还是这个数本身,在这些性质的保证下,显然所有石子全被取走后,全部数的异或为0,是必败局面,1〉已经解决,对于2〉只要证明定理0即可。张一飞在他的文章中也给出了证明,有几个地方不是很完整,具体如下:
原命题等价于,设a1^a2^...^an=p,p≠0时,必存在k,使得ak^p<ak(当p=0时,对于任意的k,有ak^p=ak)。
设p的最高位是第q位,则至少存在一个k,使得ak的第q位也是1,而ak^p的第q位为0,所以ak^p<ak
补缀一点,(a^b)^b=a^(b^b)=a^0=a,所以ak^p相当于“其它所有数按位异或的结果”。
这里再给出另一个证明:
从最高位开始,直到第q位上1的个数为奇数个,任选一个在第q位上为1的数a,剩余的所有数异或的结果必然会满足:比第q位高的位上与a相同,第q位为0,因此a大于其它所有数按位异或的结果。当然,还有一个意外,那就是所有数异或结果为0。
其他的思考
张一飞的文章中也提了一些推广,不过都是关于博弈的,而且很奇怪的是貌似都是异或法,不知道是不是想堵了,也许应该有除了异或运算以外的状态转化方法。另外,当前象棋程序(棋类自古以来被称为“弈”)的算法并不是博弈的思想,而是对棋子和格点附加权,计算使得下一步权最大,由于计算机的计算能力当前世界上无人能够匹敌,人与电脑对弈少有胜算。而对于这种算法而言,围棋则显得太过复杂,但是围棋有个特点,除了打劫的情况以外,棋盘上没有被围起的空格点总数目是在下降的,那么将这个作为下降因子,引入一些特定的状态局面(对于围棋而言最终必败/必胜局面太多了,应该试图对其进行泛型化)转化方法,即弈法,也许能够起效。
参考资料
张一飞:《由感性认识到理性认识——透析一类搏弈游戏的解答过程》

>>>>>>>>>>>>>2008.01.02补充<<<<<<<<<<<<<

随机博弈的一个变种版本:其它规则一样,不过谁取到最后一颗石子谁就输了。这个问题貌似跟原来那个大相径庭,不过实际上两者在某些情况下具有相同的解。现在来分析一下这个问题。
首先,怎么样会输?显然正常智力的人不会主动去拿完最后一堆石子,因此,只有当最后一堆只剩下仅有一颗的时候,当前取的这个人才会如此;相反,当最后一堆多于一颗的时候,当前去的这个人可以将这堆取到只剩最后一颗,置对手于死地。从这里可以看来,由多颗到一颗在这个博弈的状态转化中起到了重要并且直接作用,而非标准版本那样让各堆石子数量异或从非零到零。再考虑一种情况:现在剩下两堆石子,两堆数量都大于1(有一堆等于1的话,显然当前取的这个人会获胜),这种情况下局面的转化会跟标准版本相当的类似:当两堆数量不同并且其中之一大于1的时候,那么把局面转化为两堆数量相同,这样便是必胜策略,因为局面最终会被必败者下降到有一堆被取完或者被取到还剩一颗并且另一堆多于一颗的必胜局面(比如3|3 -> 2|3 -> 2|2 -> 2|1 -> 0|1或者2|2 -> 2|0 -> 1|0)。
显然,两个转化方法虽然角度不同,但都是正确的。回想标准随机博弈问题中,胜者最后一取要将所有石子取完,而变种版本里面需要取到剩余1颗,这样就不难理解这两种博弈有相同解:对于一般的情况,当剩余堆中至少有两堆多于1颗,那么就让各堆石子数量异或从非零到零,直到只剩一堆石子数量超过1,剩下的全部是1颗颗的散户,这时将这最后一堆取到1还是取完,稍微开动脑子考虑一下子即可;特殊情况,即剩下的所有石子都是单身,那么听天由命而已,毫无策略可言。
那么这两个貌离神合的问题能否归并成同一个问题?
将剩余的石子堆分成两个部分,A部分是只剩一颗的,剩下的是B部分,并且对这两个部分进行动态的维护。显然,当B部分空了的时候,博弈基本上结束,如果A部分石子总数为奇数,那么好消息是标准版本中当前取的人会胜,坏消息是变种版本中当前取的人会输,偶数则反之。这时,B部分用异或的眼光来看,不就是各堆石子数量异或为0么!那么,当B部分多于一堆的时候,保持B部分各堆石子数量异或为0就是必胜策略;当B部分剩余最后一堆时,拿完还是剩一颗,这是个问题。所以上述问题的回答为:是。

>>>>>>>>>>>>>2008.02.12为了另一篇文章证明:以异或为运算的自然数集是一个二阶循环交换群<<<<<<<<<<<<

1>毋庸置疑的,0是单位元。

2>两个自然数异或的结果,仍是一个自然数,这也是很显然的。

3>对于任意一个数,a的逆元是它自己,这是因为,对这个数本身实施异或,两数在任何一位上都相同,异或的结果会得到0,于是运算的结果便为0。这证明了对于任意数a,其逆元在集合内,并且这个集合内任意元素是二阶循环的。

4>结合律和交换律:由于对于任意多个数的同一位作逻辑异或运算,它们是可以结合与交换的,因此整个运算是可结合和可交换的。事实上,对于任意多个数,它们异或的结果,不仅仅满足结合律和交换律,一般说来,结果的某一位是1,当且仅当参与运算的诸数中有奇数个数在这一位为1。

posted on 2011-05-06 19:47  _Clarence  阅读(835)  评论(0编辑  收藏  举报

导航