残局定论,逐局验证

本页所有局面、着法与合法性判断,均由我们开源的规则引擎在构建时逐一校验。该引擎实现亚洲象棋联合会(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%是和棋。兵得充当炮架,而守方把将带离那几个能成立的点,就杀不掉。

这些结论是怎么算出来的?

把该子力下每一个合法局面都列出来,再从“轮到走的一方无着可走”这种终局往回倒推——在象棋里那是负,不是和。六十回合规则最后再拿成杀步数去比,因为一盘棋会不会走到那里取决于路线。

把结论下出来

知道必胜还不够,得走得出来。免费残局题与人机对弈。