穷尽搜索审校172局象棋排局
摘要
- 我用穷尽求解器检验了《適情雅趣》(1570)、《渊深海阔》(1808)和《烂柯神机》中的172局连将杀排局,问的是书中所印的解法是否唯一。其中45局无瑕。
- 没有一局彻底失败:每一局都是书中所说的一方获胜。毛病都出在唯一性上:第二首着(西方排局术语称为别解)、第二种取胜续着,或比书中所印更快的杀法。
- 有九局棋谱按录入的样子不成立。黑方走一步书中从未给出的应着,红方就再没有连将杀。错在古书还是在转录尚无定论;在第217局中,问题全出在一个黑车上。
- 审校在得出正确结果之前错了三次:搜索时站错了一方,用国际象棋排局的规则评判排局,还把录错的棋谱当成了有缺陷的排局。
问题
一局古典象棋排局附有印好的解法和结论,通常是红先胜。书里没有告诉你的是,这个解法是否是唯一的,而这正是一局排局好坏的全部所在。另一个同样能赢的首着是毛病。藏在变化树里的第二种取胜续着是毛病。比所印解法快两步的杀法也是毛病。
引擎回答不了其中任何一个问题。它只会报告红方占优,而这从来没有疑问;唯一性是关于每一种合法着法的判断,需要的是证明,而不是评估值。
求解器
在本站实际对局所用的同一套规则上做穷尽的 AND/OR 搜索,因此审校中一步棋是否合法,与玩家对局时完全一致:白脸将、塞象眼、蹩马腿,困毙判负。
对连将杀排局而言,「无瑕」同时意味着三件事。书中的首着是唯一能在所记步数内成杀的着法。变化树中没有任何一路让红方有第二种取胜续着。不存在比所印解法更快的杀法。搜索要么证明这三点都成立,要么该局就有毛病。
短局几秒钟就能算完。九到十三步的解法小到可以穷尽;再长,变化树就无法用这种方式搜索了,这就是审校的是172局而不是2,388局的原因。
结果
| 局数 | |
|---|---|
| 审校的排局 | 172 |
| 无瑕:首着唯一,无双解,无更快杀法 | 45 |
| 含双解,即第二种取胜续着 | 58 |
| 含第二首着 | 13 |
| 存在比所印更快的杀法 | 9 |
| 能赢,但比所印更长 | 21 |
| 不成立,根本无胜 | 0 |
一局可能同时有多种毛病,所以各行相加不等于总数。最重要的是最后一行:古书经得起检验。出问题的地方都在唯一性上,而这一评判标准比其中大多数排局晚了几个世纪。那21局更长的胜法,是书中把自己的步数算错了:黑方有一步所印着法从未应对的防守,红方仍能将死,只是比书中说的晚。
每类各举一例,书中着法为主线,毛病作为分支挂在出问题的那一着上。
双解。 《適情雅趣》(1570)中的群鼠争穴。红方第六着书中走 He6+,而 Hc6+ 同样快速成杀。
第二首着。 同一本书中的妙振兵铃。书中首着 Rh10+,六着成杀。Pd10+ 也一样。
更快的杀法。 同样出自《適情雅趣》的争舟走渡。书中印的是七着杀,而 Pxe9+ 六着即可成杀。
另有34局棋谱被标为错谱,而非有毛病,意思是按录入的局面,无法支持旁边印着的结论。其中十局声称连将杀,九局在书中自己的着法之内就被驳倒。最清楚的一例出自《渊深海阔》(1808):棋谱在黑方第四着给出士6进5,而改走车5退8,红方就连一步合法的将军都没有了。
三次错误的审校
走子方。 第一次宽紧杀审校在首着之后的局面上搜索时,把它当成红方连走两步。它报告190局无瑕,我信了一个下午,而这个数字毫无意义。从错误的一方开始的协作搜索或对抗搜索,会完美地回答另一个问题。
题意。 我把每一局都当作 n 步杀。宽紧杀排局并不这样声称。它声称的是红先胜,针对这个题意,第二首着不是毛病,更快的杀法也不是毛病。我数出的毛病有一半其实不是毛病,因为我连同检查它的求解器一起,把国际象棋排局的惯例也搬了过来。
这两次都发生在宽紧杀的审校中,那部分我已经搁置:宽紧杀一局要走二十步以上,能算清九步题的穷尽搜索在那里算不完。上面的172局全部是连将杀,步数本身就是书中结论的一部分。
精确搜索前没有引擎筛查。 穷尽搜索找不到强制杀时,排局本身有缺陷和棋谱录错看起来一模一样,我把其中八局判成了不成立。五局其实没问题:红方能赢,只是比所印着法晚。三局是错谱。在根局面上做一次引擎评估,几秒钟就能区分这两种情况,所以现在引擎筛查放在最前面,尽管这种搜索的全部意义就在于不需要引擎。
还有第四次,在另一条线上,也是同一个错误。我的合作杀出题程序检查的是将死。象棋里没有合法着法的将帅同样判负,所以以困毙结束的一路也是一个解,我发布时标为无瑕的186局中有22局存在出题程序看不到的着法。其中一局有十路。
代价与收获
四个漏洞,每一个都是我非常清楚、却没有带进工具里的规则。求解器每次都是对的。错的是问它的问题。
收获是一个标注了毛病的语料库,九局所印着法不成立的棋谱,以及一个能指出是哪个棋子的修复搜索:在第217局中,对局面的154种单子改动里,能恢复书中解法的四种全都涉及位于 e2 的同一个黑车,如果那格换成一个卒,所印着法就成立了。我把局面和着法用中文发给了维护这些棋谱的人。他的回答是「古谱就有错呀」,所以这个车究竟是古书的错还是转录的错,仍无定论。
完整记录是一个可以逐着演示的研究:无瑕的排局、每一类毛病、三局错谱,以及第217局和驳倒它的那一着。如果你有《渊深海阔》的印本,问题所在的位置是 e2,我很想知道书上写的是什么。