找回密码
 欢迎注册
查看: 38261|回复: 20

[原创] 一个中国象棋局面设计难题

[复制链接]
发表于 2019-12-7 21:29:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
本帖最后由 毒酒滴冻鸭 于 2019-12-7 21:37 编辑

这个问题是八、九年前(2011年4月)本人在象棋吧发起研究的,当时热闹了一阵子,后来大家各有各忙就慢慢淡下来了。近年百度让很多旧帖子都不能访问了,但是这个帖子侥幸被保留了下来,所以希望把这个问题搬到这边,求取这里的高手大神们的宝贵意见。(只不知这边对中国象棋有兴趣的高手大神们多不多?)

原帖地址在这里:【象棋数学谜题系列】象棋局面设计新挑战

(我也不知这严格来说应否算是数学题,当时大家都是用人脑推敲的,每次把一个新局面推敲出来都很有满足感。当然如果能用电脑编程暴搜就能产生板上钉钉的结果了,但是估计这对编程技术要求很高,而且编程者必须对象棋规则有一定的认识,虽然跟棋力无关。2011年那时的计算机速度估计也不能达到能成功暴搜的效果,只不知现在是否有这条件?)

先把题目在这里重新定义一下:

在一个棋盘上摆满红黑双方的全部32颗棋子(双方各一帅/将、两车、两马、两炮、两仕/士、两相/象、五兵/卒),设计出一个轮到红方走、合乎规则的局面(所以这时红方下一步不能直接吃掉黑将,否则黑方上一步已经犯规)。

然后把每颗棋子的所有可能走法的总数计算出来(注意这里走法包括一般移动和吃子),设红方的16颗棋子走法总数为r,黑方的16颗棋子走法总数为b(即使不是轮到黑方走),用(r,b)代表该局面的价值。

我们当时的研究方向是:把r尽量最大化,同时把b尽量最小化。

一开始本人很天真的以为r最大只可能是109,当然这很快被象棋吧的一位大神gyundq(孤云独去)彻底打脸了,因为实际上r的最大值为110,而这也是一方16颗棋子都在时的理论上限(如果红方可以少一颗仕的话能达到111,但这跟本题目无关)。这位gyundq大神后来也在这问题上作了很多突破上的贡献,基本上之后的最优结果大部分都是我们两人合作搞出来的。当然这是后话,如果有兴趣的不妨细阅一下原帖子,只有七页的内容,可以见证当时我们一步步把各个结果优化的过程。我也会把该帖子所有的最优结果直接在下面列举出来,方便大家查看。

在此总结一下当时所有的最优结果:

r最大值为110,在此条件下b的最小值为6。也就是我们可以产生一个(110,6)的局面。

之后基本上r每次减1,b的最小值也会随着减1,所以可以随着产生(109,5)、(108,4)、(107,3)、(106,2)、(105,1)、(104,0)的这些局面。

而104也是在b=0(即黑方16子都完全不能移动)下r的最大值,当时我找到合乎这价值的局面只有独一无二唯一的一个,所以是一个非常特别的结果,在原帖的最后第七页可以找到,而我待会也会列举在下面。

基本上r和b的最大差距一般只能是104,唯一的例外是我当时也找到了一个(108,3)的结果,这是r-b>104的唯一例子,在原帖的第六页可以找到。

所以基本上当时最关键的结果就是下面这几个价值:
(110,6)
(109,5)
(108,4)
(108,3)
(107,3)
(106,2)
(105,1)
(104,0)

为方便整理,下面我会另开楼层把这些结果逐一列举。现在先放一个棋盘例图:

象棋棋盘例图1

象棋棋盘例图1


(很抱歉我目前能用的界面只可以输入英文字母,所以不能用大家常用的中文字把棋子表示出来。

这里红方棋子用白色圆形代表,黑方棋子用灰色圆形代表,棋子的字母则根据国际标准如下:

帅/将=General=G
车=Rook=R
马=Horse=H
炮=Cannon=C
仕/士=Advisor=A
相/象=Elephant=E
兵/卒=Soldier=S

象棋棋盘例图2

象棋棋盘例图2


上图是把每颗棋子的走法总数标注出来的版本。相加之后可以看出r=b=44,所以这是一个价值(44,44)的局面,也就是中国象棋的标准开局局面。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:13:59 | 显示全部楼层
首先发一个最基本的(110,6)局面,也是开始研究这问题的一个不错的起点:

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:16:56 | 显示全部楼层
这是一个比较标准的(107,3)的局面,基本上可以很容易修改为(108,4)或(109,5):

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:20:11 | 显示全部楼层
这个(109,5)是gyundq的创作,基本设计套路还是跟上面两图差不多:

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:23:36 | 显示全部楼层
这个(108,4)也是gyundq的大作,这里开始有了一招突破性的新套路:“小兵坐龙庭,炮打自家将”:

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:31:58 | 显示全部楼层
这是gyundq的另一大作(106,2),这里的突破性新招是把黑将提到宫顶,同时让兵炮同列牺牲两着:

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:34:14 | 显示全部楼层
收到上两图启发,我才能在当时发现(108,3)的局面:

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:42:03 | 显示全部楼层
上面这些套路之后就没有什么突破了,又过了一阵子才让gyundq另辟蹊径创作出这个(105,1):

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:44:34 | 显示全部楼层
而伴随着这个思路gyundq也创造出了这个(102,0),也是一个突破性发展(当时大家在(100,0)这个关口卡了很久):

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2019-12-7 22:47:36 | 显示全部楼层
然后最后两个新思路就是我想出来的,首先是第一次把双马放到大后方的(103,0):

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-28 12:55 , Processed in 0.072803 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表