趣味象棋双炮禁双炮局与Nim数学游戏.docx

上传人:b****5 文档编号:5181426 上传时间:2022-12-13 格式:DOCX 页数:32 大小:833.70KB
下载 相关 举报
趣味象棋双炮禁双炮局与Nim数学游戏.docx_第1页
第1页 / 共32页
趣味象棋双炮禁双炮局与Nim数学游戏.docx_第2页
第2页 / 共32页
趣味象棋双炮禁双炮局与Nim数学游戏.docx_第3页
第3页 / 共32页
趣味象棋双炮禁双炮局与Nim数学游戏.docx_第4页
第4页 / 共32页
趣味象棋双炮禁双炮局与Nim数学游戏.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

趣味象棋双炮禁双炮局与Nim数学游戏.docx

《趣味象棋双炮禁双炮局与Nim数学游戏.docx》由会员分享,可在线阅读,更多相关《趣味象棋双炮禁双炮局与Nim数学游戏.docx(32页珍藏版)》请在冰豆网上搜索。

趣味象棋双炮禁双炮局与Nim数学游戏.docx

趣味象棋双炮禁双炮局与Nim数学游戏

趣味象棋双炮禁双炮局与Nim数学游戏的关系

一.「双炮禁双炮」

  获友赠予王如元著的《象棋排局方寸集》(浏览之间,书末续三局都是从《竹香斋象棋谱二集第七十局)所载的古局「双炮禁双炮来的同类棋局,甚是意外、惊诧。

  原来的古局,跟一种「抢三堆」(英文则称Nim)的游戏是同构的,因此,它完全可以用数学里的对策理论来阐释取胜之道。

而王氏的三个改进局,外貌俱与原来的古局很近似,但至少有两个另有机关,真是别有洞天。

笔者在网上略事搜索过,似乎还不见有别的网友全面介绍过王氏的改进局。

这里试作介绍。

如下图,三个局面都是红先。

  甲局,比起原来的古局,是在七路线上多了一兵一卒。

这样,双方各走一步兵或卒,便成僵持形势,可以抛开不管。

也因此,这一局首着红方不能沿用古局的着法走炮三进一,而应该走炮三进二,形成两组炮步数距离相等。

而只要往后继续保持「距离相等」,先手方必胜,因为最后必然是两对兵卒和两对炮都互相顶着,黑方双炮会被逼至退无可退。

  乙局,比起原来的古局,这一局是把三路线上的炮往边线上移,看来没有甚么分別,实际上却多添了一点小变化,它会变成红方的陷阱。

首着,红必须炮一进一,形成抢三堆〔1,4,5〕(再下一个必胜形势是〔1,2,3〕)先手必胜的形势。

下面是双方一种可能的走法:

1.炮一进一 炮9进2

2.炮五进二 炮9进1

3.兵七进一 炮5进1

4.炮一进一 炮9进1

5.炮五进一 炮9平8

6.炮一平二 ……

这一着红方要是贪走炮一进六,黑方炮8退5后,红方反而陷于被动,变成黑胜之局。

  丙局,比起原来的古局,这一局又有新的不同,不但炮往边上移了,九路兵一路卒也改放成三路兵7路卒。

这样一改,却变成和局。

着法:

1.炮一进一 炮9进2

2.炮五进一 炮9进3

3.炮五进二 炮5进1

4.兵三进一 炮9退2

5.炮五退二 ……

正着,如改走炮一进二;则卒7进1,由于红中炮不能吃黑边炮,红必败。

5.……   炮5进1

6.炮一进二 炮5退1

7.炮五进一 炮5进1(和局)

这个丙局取和的关键在于双方边炮的运用以及三路兵和七路卒的挺进,只要边炮立河头,对方即进攻无望。

以上只是依书直说,但笔者感到这个丙局尚有不少微妙变化难以说清,欢迎网友提出疑窦,互相观摩,以丰富它的变化。

附录一、抢三堆的简单判别法则

把三堆物件的数量化为二进制数字,然后把各位数按十进制数相加,要是相加后得到的全是偶数,则这种局势是必胜形势!

比如开始始有三堆小石子,数量是〔3,5,7〕,把对应的二进位数字按位相加:

011

101

+)111

223

其中有一個数字是奇数,所以它不是胜利形势。

此时,先取石子的一方只要从任意的一堆里取走一枚石子,就都是胜利形势。

附录二:

原古局的致胜口诀

棋局研究专家家瞿问秋早于1974年曾发表有关《竹香》棋局「双炮禁双炮」的致胜口诀:

一 兵动则炮齐

二 炮齐则兵动

三 兵不动则〔5,4〕,〔3,2〕,〔1,0〕

用方程法只是揭示象棋古局与数学的关系,增加兴味。

同时也早就说明用传统术语难以表示“双炮禁双炮”的全部必胜着法,而“文字叙述法”则是最清楚的。

——现简文叙述于后:

“曹操逼宫”的红先胜法很简单,一。

边兵已挺时,保持两组炮的距离相同,即成4-4;3-3;2-2;1-1;0-0;二。

边兵未挺时(如图),红方保持两组炮的距离为5-4;3-2;l-0;如此就战无不胜了。

    

版主:

雁点青天

  第1局着法(红先胜)

1.炮三进一炮7进22.炮五进二卒1进1

3.炮三进一炮7退24.炮三进二炮5进1

5.炮三进一炮7进16.炮五进一

  第2局着法(红先胜)

1.炮三进一炮5进12.炮三进三炮5进1

3.兵九进一

  第3局着法(红先胜)

1.炮三进一卒1进12.炮三进一炮5进2

3.炮三进二炮7进14.炮五进一

  “双炮禁双炮”是一盘对称型的单双步红先胜排局,以双炮进逼双炮,使黑方欠行而取胜。

特点如下:

  第一、对头边兵(卒)具有迷惑性,他们之间的距离是1而不是2。

  第二、两对儿炮除可以进外还可以退,同样具有迷惑性。

  第三、三、7路炮不能平中打将。

只能在直线上运动。

近代许多棋手对此提出一些科学方法,但仍没有揭示出最根本的规律性。

笔者从数学角度出发,得出其狭义和广义结论如下,供大家参考。

    设中路两炮的距离为x,三(7)路两炮的距离为y(x、y为自然数)。

  获胜的方程式为x=y+a或y=x+a(a为对头边兵(卒)之间的距离,取值范围为0或1),方程左边为胜方取值。

获胜的方程解为:

  1、当败方进边兵(卒)时,即a=0,则x=y,即胜方保持两对儿炮之间的距离相等(x、y为自然数)。

  2、当败方不进边兵(卒)时,即a=1,则x=y+1或y=x+1,胜方保持方程左边为奇数则胜,偶数则败。

  3、当败方使x=y时,a的取值为0,即胜方进边兵(卒)。

结论:

如上分析,“双炮禁双炮”先走方必胜,且红方获胜的唯一着法为炮三进一。

以后根据黑方的应着,按方程决定我方的应着,直至困毙黑方。

棋局的数学演化:

三堆棋子为1、4、6枚,比赛双方依次任意从任意一堆中取走若干棋子,谁最终取完者获胜。

●   ●●●●   ●●●●●●

按棋局及方程分析,获胜的唯一方法第一步为从第三堆的6枚棋子中先取走一枚,以后根据对方的取量,按方程决定我方的取量,直至胜利。

广义推论:

设有三堆棋子x、y、z枚(x、y、z为任意自然数且x≠y≠z),比赛双方依次任意从任意一堆中取走若干棋子,谁最终取完者获胜。

   x=y+z

获胜方的基本原则是保持两堆之和等于第三堆,即:

y=z+x

z=x+y

除保持上述方程的平衡外,方程简化后还要注意方程左边的奇偶性。

二、「Nim游戏」

Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论Nim游戏是组合游戏(CombinatorialGames)的一种,准确来说,属于“ImpartialCombinatorialGames”(以下简称ICG)。

  满足以下条件的游戏是ICG(可能不太严谨):

1、有两名选手;2、两名选手交替对游戏进行移动(move),每次一步,选手可以在(一般而言)有限的合法移动集合中任选一种进行移动;3、对于游戏的任何一种可能的局面,合法的移动集合只取决于这个局面本身,不取决于轮到哪名选手操作、以前的任何操作、骰子的点数或者其它什么因素;4、如果轮到某名选手移动,且这个局面的合法的移动集合为空(也就是说此时无法进行移动),则这名选手负。

根据这个定义,很多日常的游戏并非ICG。

例如象棋就不满足条件3,因为红方只能移动红子,黑方只能移动黑子,合法的移动集合取决于轮到哪名选手操作。

定义

  通常的Nim游戏的定义是这样的:

有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。

这游戏看上去有点复杂,先从简单情况开始研究吧。

如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。

如果剩下两堆不相等的石子,必胜策略是通过取多的一堆的石子将两堆石子变得相等,以后如果对手在某一堆里拿若干颗,你就可以在另一堆中拿同样多的颗数,直至胜利。

如果你面对的是两堆相等的石子,那么此时你是没有任何必胜策略的,反而对手可以遵循上面的策略保证必胜。

如果是三堆石子……好像已经很难分析了,看来我们必须要借助一些其它好用的(最好是程式化的)分析方法了,或者说,我们最好能够设计出一种在有必胜策略时就能找到必胜策略的算法。

定义P-position和N-position,其中P代表Previous,N代表Next。

直观的说,上一次move的人有必胜策略的局面是P-position,也就是“后手可保证必胜”或者“先手必败”,现在轮到move的人有必胜策略的局面是N-position,也就是“先手可保证必胜”。

更严谨的定义是:

1.无法进行任何移动的局面(也就是terminalposition)是P-position;2.可以移动到P-position的局面是N-position;3.所有移动都导致N-position的局面是P-position。

  按照这个定义,如果局面不可能重现,或者说positions的集合可以进行拓扑排序,那么每个position或者是P-position或者是N-position,而且可以通过定义计算出来。

计算

  以Nim游戏为例来进行一下计算。

比如说我刚才说当只有两堆石子且两堆石子数量相等时后手有必胜策略,也就是这是一个P-position,下面我们依靠定义证明一下(3,3)是一个P-position。

首先(3,3)的子局面(也就是通过合法移动可以导致的局面)有(0,3)(1,3)(2,3)(显然交换石子堆的位置不影响其性质,所以把(x,y)和(y,x)看成同一种局面),只需要计算出这三种局面的性质就可以了。

(0,3)的子局面有(0,0)、(0,1)、(0,2),其中(0,0)显然是P-position,所以(0,3)是N-position(只要找到一个是P-position的子局面就能说明是N-position)。

(1,3)的后继中(1,1)是P-position(因为(1,1)的唯一子局面(0,1)是N-position),所以(1,3)也是N-position。

同样可以证明(2,3)是N-position。

所以(3,3)的所有子局面都是N-position,它就是P-position。

通过一点简单的数学归纳,可以严格的证明“有两堆石子时的局面是P-position当且仅当这两堆石子的数目相等”。

根据上面这个过程,可以得到一个递归的算法——对于当前的局面,递归计算它的所有子局面的性质,如果存在某个子局面是P-position,那么向这个子局面的移动就是必胜策略。

当然,可能你已经敏锐地看出有大量的重叠子问题,所以可以用DP或者记忆化搜索的方法以提高效率。

但问题是,利用这个算法,对于某个Nim游戏的局面(a1,a2,...,an)来说,要想判断它的性质以及找出必胜策略,需要计算O(a1*a2*...*an)个局面的性质,不管怎样记忆化都无法降低这个时间复杂度。

所以我们需要更高效的判断Nim游戏的局面的性质的方法。

结论

  (Bouton'sTheorem)对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示异或(xor)运算。

怎么样,是不是很神奇?

我看到它的时候也觉得很神奇,完全没有道理的和异或运算扯上了关系。

但这个定理的证明却也不复杂,基本上就是按照两种position的证明来的。

证明

根据定义,证明一种判断position的性质的方法的正确性,只需证明三个命题:

1、这个判断将所有terminalposition判为P-position;2、根据这个判断被判为N-position的局面一定可以移动到某个P-position;3、根据这个判断被判为P-position的局面无法移动到某个P-position。

第一个命题显然,terminalposition只有一个,就是全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^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'不是一个合法的移动。

证毕。

根据这个定理,我们可以在O(n)的时间内判断一个Nim的局面的性质,且如果它是N-position,也可以在O(n)的时间内找到所有的必胜策略,Nim问题就这样基本上完美的解决了。

本世纪初,哈佛大学数学系副教授查理士.理昂纳德.包顿(ChalesLeonardBouton)提出一篇极详尽的分析和证明,利用数的二进位表示法,解答了这个游戏的一般法则:

对任意列数的铜板,每列有任意枚数,如何取得致胜之道?

在包顿的术语中,拿过后剩下的残局不是安全(safe)就是不安全(unsafe)的局面。

在所有安全的情况下,不管对方如何拿总是到一不安全的情况,你可以再取适当枚数的铜板(在适当的某一列),达到另一安全的情况,这样一直到拿光铜板为止,当然最后一次拿光铜板的一定是你。

反之,你如果留下不安全的情况,对方必有方法在适当的某一列,取走适当枚数的铜板,达到他的安全情况,也就是说你输定了。

包顿的方法很简单。

首先,将各列铜板的枚数化成二进位数,相加,但不进位,然后再看和的各个位数。

如果和的各个位数都是偶数,则表示一安全残局;否则,如果有一位是奇数,则为不安全残局。

例如「三、四、五」游戏,一开始就是不安全残局,先拿的人可以适当取二枚而造成他的安全残局。

为什麼安全残局和不安全残局可以利用上述的方法判定呢?

这个道理其实很简单。

首先,如果将各列铜板数化为二进位表示法,相加,但不进位,得到的各个位数都是偶数的话,不论对方取那一列,多少枚铜板,则那一列铜板数所对应的二进位表示法中,必有某一位或数位由0变成1或者由1变成0,其相加的和也相对的有某一位或数位由偶数变成奇数

相反的,如果和的某一位或数位是奇数,则我们有办法在某一列取走适当枚数的铜板,使得新的和的各个位数都是偶数。

首先,选取和中所有为奇数的各个位数;其次看这些位数中那一个是最左边一位;找某一列,使其二进位表示法在此位上刚好是1;然后将此列的铜板数所对应的二进位数中,凡是第ai位,都改变其数值,亦即若为0则变为1,若为1则变为0,如列铜板此得到一新数,我们只要在此取走适当的数目,使达到这新的枚数,即可以使新的和的各个位数都是偶数;

我个人都觉得我解释得很好,但是你居然不理解

你想赢,那就这样。

你把各行的数先变成二进纸,然后相加,但是不进位

得到的结果只要全是偶数,就是安全残局。

得到的结果有一个或者多个是奇数,就是不安全残局。

所以每次轮到你,你都要拿走某一行,使它是安全残局。

这个时候对方再拿,肯定就是不安全残局。

你再让它变成安全残局,就行了。

这样下去你肯定赢。

如果你还是不懂,就请说清楚,

你是不懂什么样的情况才是安全残局,还是不懂怎么拿。

从抢30到NIM游戏的取胜策略

(一)倒推法

抢30是我国民间的一个两人游戏,具有很强的对抗性和娱乐性。

抢30游戏通常有两种玩法。

(1)两人从1开始轮流报数,每人每次可报一个数或两个连续的数,谁先报到30,谁就为胜方。

(2)两人从1开始轮流报数,每人每次可报一个数或两个连续的数,同时把两个人报出的所有数累加,谁先使这个累加数最先达到30,谁就为胜方。

解决最个问题的一般策略是用倒推法。

(1)为例,要抢到30,必须抢到27;要抢到27,必须抢到24。

如此倒推回去,可得到一系列关键数30、27、24、21、18、……9、6、3。

根据以上分析,抢30游戏本身并不是一个公平的游戏,初始数和先后顺序已经决定了最后的结果,因为只有后报数者才能抢到3的倍数,后报数者有必胜策略。

(二)关键因子

所有这些关键数都是3的倍数。

3是两个报数者年内能够报出的最大数与最小数的和。

在类似游戏中,我们把游戏者所能用到的最大数和最小数之和称之为关键因子k,关键数就是k的倍数.。

在抢30的游戏中,关键因子k等于3。

又例如,抢100报数游戏中,如果每人可报数为1至9个连续的自然数,谁先报到100谁就是胜利者。

这里的关键因子k就是可报最大数9和可报最小数1的和,即k=10。

报数获胜的策略就是:

(1)让对方先报数;

(2)每次报数为关键因子减去对方所报数。

这样自己每次所报数都是关键数。

如果对方一定要先报,你只能期待对方不懂策略或者大意出错了。

(三)不平衡因子

在上述的抢30或者抢100的游戏中,最后数30是关键因子3的整数倍,最后数100是关键因子10的整数倍。

我们可以把这样的游戏称为平衡游戏,也就是最后报数与关键因子相除余数为0。

如果最后报数与关键因子相除有余数,这个游戏就可以称为不平衡游戏,其余数就是不平衡因子。

抢数不平衡游戏也是不公平的游戏,先报数者有必胜策略。

先报数者的获胜策略就是先消除不平衡因子,使其变成一个平衡游戏,先报数者随后就成为平衡游戏的后报数者。

例如,在抢30游戏中,两人从1开始轮流报数,每人每次可报1到3个连续的数,谁先报到30,谁就为胜方。

在这里,关键因子是4,不平衡因子是2。

又例如,抢100报数游戏中,如果每人可报数为1至10个连续的自然数,谁先报到100谁就是胜利者。

在这里,关键因子是11,不平衡因子是1。

在不平衡游戏中,如果先报数者不懂得游戏策略,懂得这个策略的后报数者需要不断计算不平衡因子,以便最后获胜。

(四)更多例子

报数游戏里的最后数都是些比较小的数,因此用倒推法比较容易得到策略。

当我们把数变得大一些的时候,就变成了小学奥赛题。

如果掌握上述讨论中的关键因子和不平衡因子的计算,奥数题也变得迎刃而解了。

下面就是两个奥数例题。

(1)2008个空格子排成一排,第一格放有一个棋子。

两人做游戏,轮流移动这枚棋子。

每个人每次可前移1到5个格子,谁先把棋子移到最后一格,谁就是获胜者。

问怎样的策略才能保证获胜。

(2)桌上放着一堆火柴,共有5000根。

两个人轮流从中取火柴,每人每次取的火柴根数为1到8根,谁取了最后一根谁就输。

问怎样的策略才能保证获胜。

(五)进一步扩展到NIM游戏

抢30的游戏是中国NIM游戏(也叫筹码游戏)的一种特例。

NIM游戏的一种经典表述为:

有n堆火柴,每堆各有若干根。

两人轮流取出火柴,每次取出的根数不限但至少取1根,每次也只能从1堆里取火柴。

谁最后把火柴取完,谁就是获胜者。

问如何才能保证获胜。

获胜策略已由美国数学家C.L.Bouton分析完成,用到的是二进制和平衡状态概念。

其结论是:

如果一开始火柴的总根数转化成二进制后各位数上的数字和都是偶数时,则是平衡状态,后取者必胜。

最简单的平衡态是(1,1),即2堆火柴,每堆各1根。

如果开始时火柴的状态处于不平衡状态,先取者必胜,其策略是取完后使火柴根数保持为平衡状态。

最简单的不平衡态是

(1),即1根火柴。

例如,2堆火柴数都为2根,二进制记为(10,10),各位数之和为20,这是一个平衡态,则后取者必胜。

3堆火柴数分别为1根、2根、1根,二进制记为(1,10,1),各位数之和为12,这不是一个平衡态。

先取者先取掉中间一堆2根火柴,变成平衡状态(1,1),则先取者必胜。

下面的一道例题,可以用来练习NIM游戏的上述策略:

有3堆火柴,根数分别为12、9、6.。

甲乙两人轮番从其中一堆中取出1根或几根火柴,取到最后一根者获胜。

先取者还是后取者有必胜策略,如何取胜?

NIm游戏

三堆火柴分别有2001根、2002根、2003根。

甲、乙两人轮流从中取火柴。

规则是:

每人每次只能从其中的一堆取,最少要取一根,最多可以全部取走,可以任意选择,谁取完最后一堆的最后一根就获胜。

如果甲先取,要保证获胜,他应该制定怎样的策略。

甲先把2001取剩下1个.乙把另两堆之一取剩下A个,如A是偶数,甲将第3堆取剩下A+1:

如A是奇数,甲将第3堆取剩下A-1:

最后留给乙1,2,3甲必赢.

如果乙操作失误,使其中两堆相等或只剩下两堆,甲会赢的更轻松!

cutmiss

小豆给出了一个策略,我下面补充一些更详细些的内容。

没有证明,证明是容易的,如果哪位有兴趣,希望能自己试试。

我觉得重要的是想法~~~~~

我小小时候,玩过这个游戏,是3,5,7根火柴。

当时也不知道其原理,也根本不知道啥叫2进制,只是就数论数,找出过取胜策略。

现在回头看看,觉得当时的想法很幼稚。

这个游戏,国外叫nim,我们一般翻译为“尼姆”,也有翻译为“拈”,似乎后者更为贴切;据说是从中国流传出去的(这叫我想起围棋和四大发明了~~~)。

原始的提法是:

n堆棋子,每堆分别为m

(1),m

(2),...,m(n)个棋子,甲乙轮流取子,轮到者不能不取,每次只能在一堆中取,且可取某堆中任意多子;取最后子者胜;问先手有必胜策略的条件是什么?

在该条件满足时如何获胜?

后来还有很多的变种,例如限制取子个数、改为取最后子者负等等,似乎很多。

1堆2堆的情形是平凡的,这题目给出的是一个3堆的情形。

这个古老的游戏的理论上的解决,是哈佛的ChalesLeonardBouton用不进位的2进制数加法来给出的一个详尽的解法。

大意如下:

我们把每堆火柴数用2进制描述

2001=11111010001

2002=11111010010

2003=11111010011

不进位相加,和为33333030022

这里需要两个概念,安全(safe)状态:

不论对方如何拿,我都有必胜策略;不安全(unsafe)状态:

不是安全状态。

我们需要的是,在我拿每次过之后的状态是安全状态。

那么,怎么判断是安全状态还是不安全状态?

安全状态下拿子后,就一定不是安全状态吗?

从不安全状态拿子后,一定可以变成安全状态吗?

一个简单的原则是:

如果我们按上述方式得到的2进制不进位的加法和各个数字都是偶数,那么就是一安全状态,若有奇数,就是不安全状态。

如果一开始的状态是安全的,那么,无论如何拿,先手总是将不安全状态留给后手;如果一开始的状态是不安全的,那么,先手总是有策略将安全状态留给后手。

因为最后的状态(无子可拿)是安全的,所以第一种情况下,后手有必胜策略;而第二种情况下,先手有必胜策略。

就本题而论,开始的状态是不安全的(有奇数3),所以,先手有必胜策略。

最直观的想法是从某堆中取走11111010000(2进制)个,即10进制中的2000个。

这样那个和就变成22222020022,从而获得安全状态。

那么,无论后手如何拿,总是获得不安全状态,而先手总是能把不安全状态变成安全状态(为什么呢?

用2进制是最聪明的办法

cutmiss

一个简单的原则是:

如果我们按上述方式得到的2进制不进位的加法和各个数字都是偶数,那么就是一安全状态,若有奇数,就是不安全状态。

可以这么考虑上述原则:

我们将“2进制不进位的加法和各个数字都是偶数”的状态记为状态S;将“2进制不进位的加法和各个数字包含奇数”的状态记为状态T;那么每一状态都必定是这两种不同的状态之一。

我们可以证明下面的事实:

1、有确定的策略将状态T变为状态S(可从棋子最多的堆中拿子,规则是:

设2进制的各位和的第i位为i(j),按位定义一个新的2进制数n,若i(j)为奇数,则n的第i位为1,若i(j)为偶数,则n的第i位为0,n计算出来后,就从最多那堆拿掉n个子);

2、S状态下,无论如何

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1