摘要

  • 我用窮盡求解器檢驗了《適情雅趣》(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,我很想知道書上寫的是什麼。