殘局定論,逐局驗證

本頁所有局面、着法與合法性判斷,均由我們開源的規則引擎在構建時逐一校驗。該引擎實現亞洲象棋聯合會(WXF)規則,長將與長捉都判負,不判和;長捉的判定還沒有經過官方判例集的校驗。

直接回答

子力少的殘局,勝和不是看法問題,是可以數清楚的。單車對光將,3834個合法局面全勝;對方雙士齊全,125118個局面依然全勝。馬兵對光將,276390個局面全勝。炮兵不行——勝86.8%,其餘和棋,因為炮要炮架,而守方可以不給。

“驗證過”是什麼意思

棋譜上寫“單車例勝光將”“單炮不勝光將”,寫得很肯定,但從來不給過程。本頁的每一條結論都是本站引擎自己算出來的,過程如下:

  • 窮舉每一個合法局面。攻方子力的每一個落點、雙方將的每一個九宮點、士和象的每一個可站點,再把不合法的剔掉——比如兩將在一條通暢的豎線上照面。
  • 從終局往回倒推。輪到走的一方無着可走,就是這一方負;結論再往外傳:只要有一步能把對方推進負局,這一局就是勝;每一步都把對方送進勝局,這一局就是負;剩下的是和。
  • 六十回合規則最後才算,不在搜索裡算。一盤棋會不會走到六十回合,取決於走的路線而不是局面本身,所以搜索只報“最短多少步成殺”,再拿這個數去比。這件事有實際意義:要走61回合才贏的棋,在實戰裡是和棋。

兩點讓這些結論和國際象棋的直覺不一樣。象棋裡無着可走判負,不是和棋,守方因此少了最重要的一項求和資源。而且沒有升變,兵到底還是兵。

定論

以下均為紅先。“最長勝法”是雙方都走最強時的最坏情況,不是平均值,也不是實戰裡的常見步數。

子力局面數結論最長勝法
單車對光將3,834全勝2回合
單車對單士33,345全勝5回合
單車對雙士125,118全勝12回合
單車對雙象80,328全勝12回合
單車對單士單象228,060全勝9回合
單馬對光將4,590全勝7回合
單馬對單士38,595勝34,964(90.6%);和3,63121回合
雙馬對光將192,465全勝7回合
馬兵對光將276,390全勝7回合
馬炮對光將409,311全勝7回合
單兵對光將3,294勝2,862;和432(全是底兵)10回合
雙兵對光將98,487勝96,921(98.4%);和1,56613回合
炮兵對光將293,823勝255,144(86.8%);和38,67910回合
雙炮對光將217,728勝217,662;僅和667回合
單炮對光將4,914全和—

表裡所有勝局都在六十回合之內,而且餘量很大——最長的一條也只要13回合。

雙士救不了光將

單車這一行值得多看一眼。將把雙士都留着,125118個局面依然全負——而士本身就是原因之一:它們占住了將本來可以挪過去的那兩個九宮點。

下面這個局面,黑方雙士都在,紅先一步成殺,而且只有一步。

楚 河漢 界士將士俥帥

紅先,一步成殺。

雙士都還在盤上,而它們正是問題所在:它們站在將需要的那兩個點上。

Xiangqi position. Red: chariot a0, general d0. Black: advisor d9, general d8, advisor d7. Red to move.

最出人意料的一條

馬兵對光將,276390個局面全勝。換成炮兵,就不是了——勝86.8%,和38679。

原因在炮本身。炮吃子必須隔着不多不少一個子,而對面只有一個光將時,常常無子可隔:只能拿自己的兵當炮架,於是守方只要把將帶離那一條能成立的線,就殺不掉。馬不需要炮架,所以同樣的子力換成馬就是乾淨的全勝。

更極端的版本是雙炮:勝217662,僅和66——近到你把這個殘局下一百遍都碰不上那個例外,卻仍然不是必勝。單士的價值也比看上去大:單馬對光將4590個局面全勝,而對方多一個士,就只勝90.6%了。

這也是炮類殘局的總體形狀,以及單炮對光將4914個局面全和、單馬對光將4590個局面全勝的原因。炮類殘局詳見此頁 →

還沒有驗證的

本頁沒有給出的,恰恰是最有名的那一條:單車對士象全,棋譜稱例和。那個局面集大約有一千一百万個局面,超出本解算器一次能處理的範圍,所以我們沒有算,也不聲稱。

更大的實用殘局同樣如此——車對馬炮、雙車對士象全。它們在計劃裡。在算出來之前,本頁只寫已經數過的部分,這也正是本頁的意義。

相關問題

單車能贏對方雙士嗎?

能,而且是全勝。我們把125118個合法局面全算了一遍,紅方無一例外取勝,最長12回合。雙士救不了將——它們反而占住了將可以逃過去的九宮點。

單炮能殺光將嗎?

不能。4914個合法局面全部和棋。炮吃子要隔着不多不少一個子,而對面只有一個光將時無子可隔。不需要炮架的單馬則相反,4590個局面全勝。

炮兵對光將是必勝嗎?

不是。293823個局面裡勝255144個,也就是說13.2%是和棋。兵得充當炮架,而守方把將帶離那幾個能成立的點,就殺不掉。

這些結論是怎麼算出來的?

把該子力下每一個合法局面都列出來,再從“輪到走的一方無着可走”這種終局往回倒推——在象棋裡那是負,不是和。六十回合規則最後再拿成殺步數去比,因為一盤棋會不會走到那裡取決於路線。

把結論下出來

知道必勝還不夠,得走得出來。免費殘局題與人機對弈。