银行 社区服务 每日签到 会员排行 网站地图
  • 9011阅读
  • 35回复

原创绝妙象棋残局的数学解法

楼层直达
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
— 本帖被 棋中论坛 执行置顶操作(2017-06-03) —
  街头闲逛,偶遇象棋残局(图1)。此局并非常见的江湖残局,旁观良久,不得其解,遂记在心中。回家后在电脑上用象棋软件计算,结果竟然发现各种棋软都没法解开这个残局。于是人工加电脑反复演练,才知道这个貌似平淡的残局没有和棋。一般都会走成某一方子力被围困,一动就输掉的棋形(图2)。

  喜爱玩象棋的朋友都明白“先行之利”,尤其是残局,先走一步的优势就更明显了。有趣的是,这个残局的结果竟然是红先黑胜。换黑棋先走结果就是红胜。这是一个注定了谁先走谁输的象棋残局。通过改变炮的初始位置和对头兵的数量,我发现残局的胜负结果也会发生变化。反复研究后,一些似曾相识的规律在我的头脑中越来越清晰,没错!这些规律不但能给出残局正确的解法,也能够指引出决定局面胜负的最深奥义。因为我找到了描述这个棋局的数学原理。
  首先必须建立数学模型,这个说容易也不容易。我先来讲一个简单的游戏。把石子摆成四排,第一排1颗、第二排3颗、第三排5颗、第四排7颗(图3)。规则是这样的,两人轮流来拿石子,每次可以在同一排中拿走任意颗,至少拿走1颗,谁拿到最后一颗石子,谁就赢了。例如:我先来拿,我可以一次拿走第四排的全部7颗;或者在第二排拿走2颗,留下1颗,这都是规则允许的。但是在第二排拿1颗并且在第三排也拿1颗,这种不在同一排内拿石子的方法是违反规则的。因为石子的数量是有限的,每次拿都会造成数量减少,两人轮流拿,最后一个石子总是会被拿走。拿走最后一个石子的就是胜者。也就是说这个游戏一定能分出胜负,不会出现平局。

  下面来说一下这个游戏的求胜方法。首先把每一排的石子数量的十进制数转化成二进制数。我们会得到0001、0011、0101、0111。然后我们对这个数连续进行XOR运算(二进制逻辑异或运算),简单理解为不进位的二进制加法运算。即0001XOR 0011=0010,0010 XOR 0101=0111,0111 XOR 0111=0000。如果初始值为0000就注定谁先拿谁就要输了。
  例如,你先拿了第4排的1颗石子。剩余石子对应的数值分别为,0001、0011、0100、0111,XOR运算的结果为0001;轮到我拿了,我就拿走第1排的1颗石子,此时剩余石子对应的数值为0011、0100、0111,XOR运算的结果为0000;这样依次类推下去,只要你拿完了,XOR运算的结果就不会是0000,我只要再拿掉一些石子,使结果恢复到0000即可。当然,对于不同的局面,使XOR运算结果恢复到0000的方法是不同的,而且也可能同时存在多种恢复方法。反复使用这种过程,就可以保证我在最后一次拿光剩余的石子,也就是我赢了。数学证明略。如果你看懂了,再按照上述方法演示几次,就可以掌握这个游戏的取胜之道了。
  言书归正传,让我们回头来再看前面的象棋残局。把棋盘上一路的兵之间可走的步数看作1,把五路炮之间可走的步数看作4,把九路炮之间可走的步数看作5。转化成对应的二进制为0001、0100、0101,XOR运算结果为0000。这下明白为啥这个象棋残局注定是谁先走谁输了吧!这就是数学的魅力。
  当然,象棋的走法相比于石子游戏更复杂,规则也更多。但是只要抓住它们在逻辑上的共同点,也就可以把这两个看起来毫不相关的游戏当作同一个游戏来玩了。本文到此结束,因为已经“授人以渔”,所以我不会列出破解残局的棋谱,更无必要讲述此局中繁杂的变化。
本帖最近评分记录: 1 条评分 金币 +5
小小心心 金币 +5 2019-03-25 优秀文章
关键词: 残局 数学 解法
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 一楼  发表于: 2012-10-12
自己坐上沙发,哈哈哈
本帖最近评分记录: 1 条评分 金币 -1
级别: 中尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻1级]乐币数量≥10枚 [棋中粉钻1级]贡献值数量≥1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
689
金币
2164
威望
0
贡献值
4
乐币
24
主题
7
只看该作者 二楼  发表于: 2012-10-12
楼主能肯定这个棋是红先黑胜?
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
438
金币
5
威望
0
贡献值
0
乐币
2
主题
5
只看该作者 三楼  发表于: 2012-10-12
这有何难,红九路炮进多少步,黑中炮就进多少步,红中炮进多少步,黑一路炮就进多少步,最后红总是被困死。
级别: 论坛检查
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻2级]金币数量≥1000枚 [棋中蓝钻2级]乐币数量≥50枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
2200
金币
1321
威望
2
贡献值
5
乐币
93
主题
33

只看该作者 4楼 发表于: 2012-10-13
首着红兵一进一,以静制动。观望黑棋。黑有四种应法:1:进中炮,2:进边炮,3:退边炮,4:平边炮。对于123红坚持一个原则:保持九路和五路红炮和黑炮间距相等即可(黑动五路,则红动九路,反之亦然)。对于4,红亦平炮,继续观望,然后保持等距,均可获胜。一家之见,欢迎探讨。
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
61
金币
9
威望
0
贡献值
0
乐币
0
主题
1
只看该作者 5楼 发表于: 2012-10-13
早就有这个残局了叫盲公顶棍
级别: 少校
[棋中红钻5级]发帖数量≥2000篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻3级]乐币数量≥100枚 [棋中粉钻3级]贡献值数量≥10点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
2569
金币
3442
威望
2
贡献值
10
乐币
427
主题
119

只看该作者 6楼 发表于: 2012-10-13
只要让子力成为平行4边行  就可以了
级别: 司令员
[棋中红钻6级]发帖数量≥5000篇 [棋中黄钻4级]金币数量≥5000枚 [棋中蓝钻3级]乐币数量≥100枚 [棋中粉钻8级]贡献值数量≥1000点 [棋中彩钻5级]精华帖数量≥20篇
发帖
8637
金币
8311
威望
34
贡献值
1594
乐币
182
主题
504
只看该作者 7楼 发表于: 2012-10-13
不过居然有人能 想到用数序模型来解,真的是非常佩服,学到了新东西,感谢!

转载另外一种方程解法。设中路两炮的距离为x,七(3)路两炮的距离为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    除保持上述方程的平衡外,方程简化后还要注意方程左边的奇偶性。  根据以上公式试举两例变化:1.炮七进一炮3进7 2.炮五进二卒9进1 3.炮五进二以下黑3路炮退多少格红七炮就进多少格黑最终无棋可走红胜。   1.炮七进一炮3进2 2.炮五进三炮3进2 3.炮七进三炮5进1 4.兵一进一红胜
欢迎大家转载和象棋有关的各类文章和视频到论坛获取奖励!
更多象棋软件下载请访问棋软仓库www.xvooo.com
级别: 上等兵
[未点亮棋中红钻]发帖数量<10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
6
金币
16
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 8楼 发表于: 2012-10-14
这盘棋如果红边炮是摆在退开一格的位置,即整盘棋呈上下对称形式,那就是先走的赢,可见这盘棋摆的相当的阴险,分明是引君入瓮,不过一般来讲,棋局是可以自由选择黑红的,这样的话,江湖老就死定了
级别: 上等兵
[未点亮棋中红钻]发帖数量<10篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
6
金币
16
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 9楼 发表于: 2012-10-14
这局期如果不点破估计很多人还是抓破脑袋也想不明白,包括楼上几位已经知道四边形规则的也不知道,
平行四边形规则是适用于两边有卒仔的情况,此局先动兵者必死无疑,因为你一动兵,对方就给你个平行四边形,你只有等死的份。
正确的走法,楼主的数学模式太抽象了,我具体点讲讲,要点是1,3,5,7,9几个奇数,现在红方占据了9点,这个9点的意思是两个炮之间的格数。而关键胜的点数是1点,谁得到1点谁胜,那么怎么得到1点,那就是互相交换,现在红9,再轮到红走的话,红就失去9点了,黑方马上占据9点,然后轮到红走,红只能要7点,(其他偶数点无意义,走走就知道,多试试,玩棋的多少应该有点智商吧),黑5,红3,黑1,所以黑胜。那么当黑9的时候,红能不能直接要5呢,答案是不能,要保持四炮之间的格数一边比一边多一格才有意义,红如果直接要5点,势必照成黑可以直接跳过3点而占据1点,还是黑胜。
还有人问,1点怎么胜啊,这个时候,兵的缓步作用就凸显了,比如黑1点,红向前一步贴近,零点,(造成平行四边形)黑卒进1!,红毙命!反过来,红先走兵,黑向前贴一步炮,平行四边形,还是红毙!所以之前说了,绝对不能无事先走兵!
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 10楼 发表于: 2012-10-14
回 5楼(马大勇) 的帖子
谢谢指点.这个名字头一次听说.上网查了一下,果然类似的残局好多,还有另外一种解法,这局叫“盲公顶棍”,也叫“caocao逼宫”,红先胜法很简单,一。边兵已挺时,保持两组炮的距离相同,即成4-4;3-3;2-2; 1-1;0-0;二。边兵未挺时(如图),红方保持两组炮的距离为 5-4;3-2;l-0;如此就战无不胜了  
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 11楼 发表于: 2012-10-14
回 2楼(无棋居士) 的帖子
十分肯定,这局面就是谁先走谁输.
刚才查了"盲公顶棍",好多类似棋局,我都看了一下.红棋胜,负,和三种情况都有
2列炮之间有1对兵的,可以和棋
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 12楼 发表于: 2012-10-14
回 9楼(棋中期期) 的帖子
这里只有你最明白这个棋局了.
数学模型很牛的,好些人不明白的.再加3对对头兵一样算得来
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 13楼 发表于: 2012-10-14
回 7楼(棋中论坛) 的帖子
司令夸我神枪手,百万军中美名扬
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 14楼 发表于: 2012-10-14
http://wenwen.soso.com/z/q124135463.htm
这个还列出了方程,所有解都对。可惜,并不包含x或y等于零的解。
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [未点亮棋中黄钻]金币数量<100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
438
金币
5
威望
0
贡献值
0
乐币
2
主题
5
只看该作者 15楼 发表于: 2012-10-26
这类残局似乎也是我先发的,不过我发那个是红胜的局面,
级别: 中尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
746
金币
2558
威望
2
贡献值
0
乐币
25
主题
5
只看该作者 16楼 发表于: 2012-11-06
第二个图中双方各填一边兵,结果会大不同,会更复杂10倍
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
348
金币
196
威望
0
贡献值
5
乐币
0
主题
0
只看该作者 17楼 发表于: 2012-11-12
楼主能肯定这个棋是红先黑胜? ?
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
348
金币
196
威望
0
贡献值
5
乐币
0
主题
0
只看该作者 18楼 发表于: 2012-11-12
楼主能肯定这个棋是红先黑胜? ? ?
级别: 四级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
75
金币
150
威望
0
贡献值
0
乐币
0
主题
7
只看该作者 19楼 发表于: 2012-11-24
转载???我就是原创作者,首发于百湖论坛茶馆
快速回复

限56 字节
请不要在回贴只采用字母:“ PP、asdfhjkl、HAO、OK、ddddddd ......”。  请不要在回贴过于简单的内容:“不错、顶、支持、厉害、呵呵、靠、晕........”
 
验证问题: 我们论坛是一个什么棋类为主的论坛?
上一个 下一个