改变答案的围棋规则
解开一个游戏,意味着知道双方都完美应对时的结局。在围棋棋盘上,这个结局就是一个数值:双方完美对弈时黑棋获胜的目数——4×7棋盘上的28,意味着黑棋占据了全部28个交叉点。西洋跳棋在2007年被解开,小棋盘上的六贯棋(Hex)也是如此。对于围棋,许多不超过30个交叉点的棋盘已有计算机证明,大多来自一个名为MIGOS的程序(2003年和2009年)。
但这里有个问题。这些经典结果对重复局面使用的是一条简化规则:基本的“劫”规则——一方不得立即提回刚刚提掉己方一子的那颗单子,否则同样的两步棋会无休止地重复下去——外加一些特殊约定,例如一次虚着(停一手)会解除劫的禁令,出现重复局面时对局即告终止,等等。这些约定的设计初衷,是让一个局面的价值不取决于它是如何形成的。
人们真正下棋时的规则
成文的中国规则以及计算机围棋,使用的是局面超级劫(positional superko):任何一步棋都不得重现对局中已经出现过的任何全盘局面。在这条规则下求解要困难得多,因为一步棋是否合法,如今取决于对局的全部历史。它破坏了使求解成为可能的三种工具:
- 复用结果:同一局面经由不同路径到达时复用已有结果——两条路径所禁止的着法可能不同;
- 无需搜索就识别安全棋块和实地:这一做法假定其所有者总能吃掉入侵的棋子——而在超级劫规则下,这样的提子可能被禁止;
- 剪枝:剪去那些永远无益的着法,比如填自己的眼——即一个棋块为了活下来所必需的空点之一——在超级劫规则下,这样一步棋可能变得具有决定性。
代价是巨大的:采用某种超级劫变体时,MIGOS解4×4棋盘需要1.1小时,而在基本劫规则下只需3.3秒。2024年首次在超级劫规则下解开5×5,用了六个进程、耗时5.25小时。在5×5之外、至少多出两行的棋盘,此前从未在超级劫规则下被解开。
一条保持可靠的捷径
柏林楚泽研究所(Zuse Institute Berlin)的Sami Kharma和Florian Schintke开发了Sanko。它的核心是一条简单的证明迁移定理:一份已存储的“某方必胜”证明,在一条新路径上仍然有效,除非胜方必须形成的某个局面已经出现过。只有胜方的局面才重要——如果败方不能再重现某个局面,败方只是少了一个选项而已。检查这一点所需的时间与路径长度成正比,而与证明的规模无关。在3×7棋盘上,仅这条捷径就把计算量从6,640亿步减少到1.12亿步。
他们还改进了经典的安全棋块识别方法,使其在超级劫规则下仍然正确;并且只剪去他们试图证明其获胜的那一方的着法,这样一次失败的搜索会被报告为“未知”,而绝不会被当作另一方的胜利。
新的数值
- 5×5:用六个线程15.7分钟解开,比以前快约20倍,部分得益于更好的硬件;单线程下,4×4的求解速度快了58倍。在一台192线程的机器上,5×5大约只需一分半钟。
- 首次给出了另外23个棋盘的超级劫数值;其中11个此前在任何规则下都未被解开。3×10对黑棋而言价值8目——MIGOS只证明了至少6目,而两个月的搜索也没找到上界。
- 在单行棋盘上,从1×9到1×15的数值按0、1、2、2循环——但1×16打破了这一规律,价值为1而不是2。
4×7的意外
在旧规则下,4×7是全盘胜:黑棋吃掉一切,28比0。而在超级劫规则下,它只值12目。作者重放了为MIGOS发表的31手最优路线:每一步都合法,黑棋依然拿下整个棋盘。他们从后往前求解这条路线,发现断点就在第25手之后:在第25手(由黑棋所下)之后的局面中,白棋应下G2(或C1),而不是A2。
接下来是一个奇特的劫。白棋提子;黑棋若提回,就会重现先前的局面——这是被禁止的。黑棋的其他任何着法都会让自己的棋块陷入危险。黑棋只能停一手,白棋也停一手,对局结束时白棋的棋块活着:这就是MIGOS的作者早已称之为**“月光活”**(moonshine life)的情形。而在旧规则下,停一手会解除禁令,黑棋便能提回并赢下全部。在超级劫规则下,黑棋在这条路线上最好的结果是只值3目的双活(seki),因此完美对弈会更早地偏离已发表的路线——而黑棋从空棋盘开始所能确保的最好结果是12目。
两次搜索都没有错。差异来自只在对局最末尾才起作用的规则。作者的建议是:在使重复变得无害的约定下算出的数值,未经检验,不应被当作超级劫围棋的数值来引用。
人人都可检验
每个数值都基于两份独立的证明,求解器通过了数以万计的交叉检验,没有出现任何不一致。与以往对空棋盘围棋的求解不同,这个求解器的源代码以及每个结果背后的具体命令都是公开的;4×7的证明链可在二十秒内重放完毕。这些证明目前还不是外人能够独立验证的证书,而6×6仍然遥不可及——据作者推算,在他们的一台机器上大约需要50天,甚至更久。
