领先不到十分,跟掷硬币一样
棋下到一半,你想知道的是手上多出来的子力有没有意义。答案取决于差距多大,而跟下到第几回合的关系,比你以为的小得多。
多一颗卒或一匹马等于没有。领先不到十分的一方,第 10 回合赢 52%,第 40 回合赢 59%:就是掷硬币,握多久都不会变好。领先一颗中等的子,也就是十到十九分,早盘大约 70%,后盘 81%。要到四十分,一个将,或一车加两颗中等的子,棋才真的结束:第 20 回合 95%,而第 30 回合领先到这个幅度的 56 盘,一盘都没输。所以第 30 回合领先两颗卒不算领先,你只是平盘多了几颗子。
五回合就定了,不然就是五十回合都定不了
每一盘棋都有一个时刻,是子力领先最后一次易手。在那之前,两边还在互换;在那之后,一方领先并且一路领先下去。下面这张图就是这个时刻落在 168 盘分出胜负的对局的第几回合。
它不是绕着第 16 回合中位数的正态分布。有 43 盘,最后一次易手发生在前五回合以内:有人赢下一次早期的交换,然后再也没被追上。另有 36 盘发生在第 46 回合之后,一场长仗的尾声。中间落下的不多,而全部 200 盘里有五分之一从头到尾没换过领先方。要担心的是早的那一群。第 5 回合时大半棋盘还盖着,所以那些棋是被前面几次翻子、以及棋手怎么处理它们决定的。照国际象棋那套复盘,这会被算成实力。完局复盘把每一次翻子拆成决定和棋子,就是为了这件事。
先失将,就输了这盘棋
200 盘里有 188 盘有将倒下,中位数的对局在第 24 回合。有将被吃且分出胜负的 167 盘里,先失将的一方输了 146 盘:87%,上下三个百分点。原因是一步棋就有三十分易手。
示例对局,这批棋的第 1183 号种子:72 回合,领先就在这里最后一次易手。
没有别的子能让分数这样一次翻过去,而将也是唯一没办法靠大小顺序保护的子。棋盘上最小的那颗子吃得掉它。
先翻没有价值
先手在 168 盘分出胜负的对局里赢了 89 盘,53%,上下四个百分点;把和棋算半分则是 52.5%。第一翻给的颜色没有差别(拿红 80 盘赢 45,拿黑 88 盘赢 44),第一颗子的大小也一样,至少 200 盘看不出来:切成七种之后每种只剩十几二十盘,误差范围把差异都吞掉了。200 盘能排除先手有大优势,排除不了小优势,所以对棋桌上那个最老的争论,答案是:先翻就算有用,也比这个幅度更小。
一般的预期刚好相反。先翻的那一下,把一颗子摊给对手看、让他来应,在你对棋盘一无所知的时候就定死你的颜色,还把你自己的一颗子丢在外面没人保护。这 200 盘看不出这个代价,而它们也是最不适合用来找这个代价的地方:每一颗盖着的子都是一个概率节点,第一手就有三十二颗,所以引擎的搜索正好在问题所在的地方最浅。人,或是学出来的评估函数,可以不用穷举就想清楚那一袋子大概长什么样。如果先翻真的是吃亏,这会是我预期强的开局棋手最先推翻的一个数字。
每六盘有一盘和棋
32 盘和棋,其中 31 盘是 40 步无进展计数判和,一盘下到 150 回合被中止。没有一盘重复同一局面三次。先把这 16% 当成关于 MistyBanqi 的事实:其中 17 盘曾经走到一方领先四十分的局面,也就是上面那张表说已经稳了的幅度,而那正是这个引擎出了名的盲点,因为它的评估函数里没有任何一项奖励把赢棋收官、而不是守着手上的子力。和棋也都是长棋,88 回合对 71 回合。能把这个引擎磨掉的优势兑现的棋手,和棋会更少。
引擎对局没说的事
一个引擎自我对弈 200 盘,量到的是这个引擎,不是公园里的暗棋。先手和第一颗子的数字来自发子和规则,应该可以照搬;其余的没那么能照搬。人会被一千万节点的搜索不会踩的陷阱吃掉将,人会把这个引擎磨掉的赢棋收下来,实力不对等的两个人也比同一个程式的两份复本更早分出胜负。同一个引擎在本站跟人下过五十二盘,人这边 14 胜 33 负 5 和。公园规则也会改变这些数字:连吃、车直冲、炮翻山跳到空格,每一条都会动到上面的结果,而本站一条都不采用。
同一批棋里的二十盘之一,存成一份研究。用箭头一步步看;没人翻过的子保持盖着。
常见问题
- 暗棋领先多少才算安全?
- 比大多数人下棋时以为的要多。200 盘引擎对局里,用引擎的分值算(将 30、车 14、炮 12、士和象 10、马 8、卒 4),第 30 回合领先不到十分的一方赢 59%,领先十到十九分赢 81%,而第 30 回合领先四十分以上的,一盘都没输。
- 暗棋一盘棋什么时候就定了?
- 同时有两种答案。168 盘分出胜负的引擎对局里,有 43 盘赢家在第 5 回合就取得不再改变的领先;另外 36 盘,领先到第 46 回合之后还在易手。中位数是 71 回合对局里的第 16 回合。
- 将在暗棋里有多重要?
- 200 盘引擎对局里有 94% 有将被吃,而先失将的一方在分出胜负的对局中输了 87%。引擎给将 30 分,给下一级的车 14 分,而卒,棋盘上最小的子,是少数吃得掉它的其中一个。
- 暗棋先手有优势吗?
- 没有大到 200 盘引擎对局量得出来的优势。先手在分出胜负的对局赢了 53%,离掷硬币不到四个百分点,而第一翻给的颜色没有差别。
- 暗棋多常和棋?
- 这个引擎自我对弈是每六盘一盘,而且全部来自 40 步无进展的规则,不是重复局面。这个比率讲的既是这个引擎不擅长把赢棋收下来,也是这个游戏本身;人的对局和棋应该会更少。
来下暗棋
这些对局里的引擎,你一打开棋盘它就坐到对面;每一盘下完的棋都有一份复盘,把你的决定和你翻到的子分开。