残局定论,逐局验证
本页所有局面、着法与合法性判断,均由我们开源的规则引擎在构建时逐一校验。该引擎实现亚洲象棋联合会(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,631 | 21回合 |
| 双马对光将 | 192,465 | 全胜 | 7回合 |
| 马兵对光将 | 276,390 | 全胜 | 7回合 |
| 马炮对光将 | 409,311 | 全胜 | 7回合 |
| 单兵对光将 | 3,294 | 胜2,862;和432(全是底兵) | 10回合 |
| 双兵对光将 | 98,487 | 胜96,921(98.4%);和1,566 | 13回合 |
| 炮兵对光将 | 293,823 | 胜255,144(86.8%);和38,679 | 10回合 |
| 双炮对光将 | 217,728 | 胜217,662;仅和66 | 7回合 |
| 单炮对光将 | 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%是和棋。兵得充当炮架,而守方把将带离那几个能成立的点,就杀不掉。
这些结论是怎么算出来的?
把该子力下每一个合法局面都列出来,再从“轮到走的一方无着可走”这种终局往回倒推——在象棋里那是负,不是和。六十回合规则最后再拿成杀步数去比,因为一盘棋会不会走到那里取决于路线。