← 国际象棋 · 实战对局 / 第 4 课 · 该不该兑子 待审核 5 / 7
兑子 · 简化与复杂

第 4 课 · 该不该兑子

兑子是每一局里出现最频繁的决定,而初学者通常只用一条规则:亏了不兑,不亏就兑。这条规则没错,但它只管账面,不管兑完之后的局面变成了什么。

这一课把「兑完之后对手会变强还是变弱」这件事量出来。

1 · 一个可以量的问题

判断一台引擎在某类局面里「有多拿得准」,不需要更强的引擎当裁判,只需要问它两次:同一个局面,给它 3.5 秒(略宽于最强档 2.5 秒的默认预算)与 14 秒各算一次,看它改不改主意。改得越频繁,说明它离算清楚越远。

按非兵子力总额分四档,每档三十个真实局面(取自引擎自对局):

局面阶段 3.5 秒搜到 14 秒搜到 多想之后改主意 分值变动
开局与中局前段 6 层 6 层 23% 10 厘兵
中局 6 层 6 层 13% 7 厘兵
中残之交 6 层 7 层 13% 10 厘兵
残局 7 层 7 层 10% 4 厘兵

趋势是单调的:子力越多,它越拿不定主意。满盘子力时四倍的思考时间会让它改掉近四分之一的着法;残局里只剩十分之一,而且分值几乎不动。

原因不神秘。搜索树的宽度随子力增长,同样的时间在中局只够看六层,而六层在满盘局面里覆盖不了多少变化;到了残局,六七层往往已经把整条兑换与升变链算穿了。

上表的六层与第 2 课 §2 那张表里的五层不矛盾:这一批是三十个随机取到的自对局局面,其中不少已经兑过子;那张表量的是子力齐全的中局——盘上的子越多,分支因子越大,同样的时间就搜得越浅。局面越满它看得越近,这条本身就是第 3 条判据的来源。

2 · 稳不等于会

但「稳」只说明它不会改主意,不说明它下得对。第 5 课测过同一台引擎的两个基本残局:

残局 引擎自己执攻方五次的结果
车杀单王 将杀 4 次,逼和 1 次
后杀单王 将杀 2 次,逼和 1 次,送掉后变成和棋 2 次

原因在第 5 课讲得更细:把对方的王逼到边角需要十几步的持续挤压,而任何有限深度的搜索都看不到那个终点,只能靠评估函数指方向——它的评估里没有这一项。

于是残局被劈成了性质不同的两半:能算穿的那一半(兵的竞速、兑换链、能被搜索覆盖的杀),它比人强;要靠计划的那一半(长期挤压、兵形运作),它没有方向。

3 · 三条判据

把两件事合起来,兑子的判据就不再是「亏不亏」,而是「兑完之后落到哪一半」:

  1. 均势时不要主动简化。 复杂局面是它最不稳的地方,也是人唯一能等到便宜的地方。每兑掉一对子,都是在替它把出错的机会消掉一个。
  2. 领先子力时照常兑。 这条传统棋理仍然成立——但前提是自己会赢兑出来的那个残局。多一个后却走成和棋,对手不会替人把这一局赢掉。
  3. 落后时更要保持复杂。 落后一方唯一的资本是对手可能出错,而出错的概率随子力减少而下降。

第 3 条与第 3 课相通:落后时最该找的不是兑子,而是一条针对它王的攻击线——那正是它评估里记零分的东西。

4 · 落子之前的两个问题

每次考虑兑子,除了第 0 课那套一格之内的加减法,再多问两句:

  1. 兑完之后,谁的子更活?兑掉自己被堵住的子、留下对方被堵住的子,是账面之外的净赚。
  2. 兑完之后的残局,自己会不会赢?答不上来就先别兑——赢面在这一步之后就交给技术了,而技术是练出来的,不是算出来的。

课程目录 · 0 子力安全 · 1 开局三件事 · 2 五种吃子图形 · 3 攻王 · 4 该不该兑子 · 5 四个必会残局 · 6 名字