一个中国象棋局面设计难题
本帖最后由 毒酒滴冻鸭 于 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)
为方便整理,下面我会另开楼层把这些结果逐一列举。现在先放一个棋盘例图:
(很抱歉我目前能用的界面只可以输入英文字母,所以不能用大家常用的中文字把棋子表示出来。:L )
这里红方棋子用白色圆形代表,黑方棋子用灰色圆形代表,棋子的字母则根据国际标准如下:
帅/将=General=G
车=Rook=R
马=Horse=H
炮=Cannon=C
仕/士=Advisor=A
相/象=Elephant=E
兵/卒=Soldier=S
上图是把每颗棋子的走法总数标注出来的版本。相加之后可以看出r=b=44,所以这是一个价值(44,44)的局面,也就是中国象棋的标准开局局面。 首先发一个最基本的(110,6)局面,也是开始研究这问题的一个不错的起点:
http://imgsrc.baidu.com/forum/pic/item/4f8d3bcad1c8a786f97a1b6b6809c93d71cf5091.jpg 这是一个比较标准的(107,3)的局面,基本上可以很容易修改为(108,4)或(109,5):
http://imgsrc.baidu.com/forum/pic/item/91601c119313b07e16d5016d03d7912396dd8cfa.jpg 这个(109,5)是gyundq的创作,基本设计套路还是跟上面两图差不多:
http://imgsrc.baidu.com/forum/pic/item/ff587fc8a786c9174e53035cc63d70cf3ac75791.jpg 这个(108,4)也是gyundq的大作,这里开始有了一招突破性的新套路:“小兵坐龙庭,炮打自家将”:
http://imgsrc.baidu.com/forum/pic/item/3f691cfb43166d22e11244f1492309f79152d285.jpg 这是gyundq的另一大作(106,2),这里的突破性新招是把黑将提到宫顶,同时让兵炮同列牺牲两着:
http://imgsrc.baidu.com/forum/pic/item/d38066fcc3cec3fdbd8df610d988d43f869427b2.jpg 收到上两图启发,我才能在当时发现(108,3)的局面:
http://imgsrc.baidu.com/forum/pic/item/2d821712c8fcc3ce837398569d45d688d53f20b2.jpg 上面这些套路之后就没有什么突破了,又过了一阵子才让gyundq另辟蹊径创作出这个(105,1):
http://imgsrc.baidu.com/forum/pic/item/a26e6dcec3fdfc03d0cbb2dddb3f8794a5c226b2.jpg 而伴随着这个思路gyundq也创造出了这个(102,0),也是一个突破性发展(当时大家在(100,0)这个关口卡了很久):
http://imgsrc.baidu.com/forum/pic/item/ba30a2f431adcbef9fa82f63a3af2edda2cc9f4e.jpg 然后最后两个新思路就是我想出来的,首先是第一次把双马放到大后方的(103,0):
http://imgsrc.baidu.com/forum/pic/item/dc9294f33a87e950e1eba2091f385343faf2b46e.jpg
页:
[1]
2