五子棋里有一句听起来很绝对的话:空盘开局,黑棋可以赢。很多人第一次听见它,会把它理解成一种传说,像老棋手在茶桌边留下的判断。那台程序换了一种写法:它把经验拆成一条可检查的赢法,放进机器能执行的路线里。
先手优势原本只是共识
五子棋规则简单,先连成一线的人赢。也正因为简单,黑棋先下一手这件事被放得很大:它先占中心,先制造威胁,也先逼对手回答。日本职业玩家很早就认为 Go-Moku 是先手胜局,但在计算机证明出现以前,这更多是一种高水平经验。
经验当然有分量。问题是,经验不能替你穷尽所有反击。只要白棋有一条没被看见的防守路线,“黑必胜”就还是一句没有完全落地的话。这台程序的价值,就从这条缝里出现。
程序证明了什么
1993 年,L. Victor Allis、H. J. van den Herik 与 M. P. H. Huntjens 在《Go-Moku Solved by New Search Techniques》中描述了这套程序。论文摘要写得很直接:在横放的 15×15 棋盘上,Go-Moku 对先行一方是已胜游戏。
这里的“证明”,并非在夸程序会下棋,也不只是记录比赛胜率。它更接近一个可复查的结论:当它执黑先行时,面对最优抵抗也能找到必胜路线。换句话说,黑棋的优势从感觉,变成了树上的节点与分支。
它没有粗暴搜索整张棋盘
如果只是把 15×15 的交叉点全展开,搜索会很快爆炸。这套程序的关键不在“算得多”,而在“知道先算哪里”。它使用了两种技术:威胁空间搜索与证明数搜索。前者把攻击方真正有意义的连续威胁挑出来;后者补上需要形式化确认的部分。
Darse Billings 在 1993 年的摘要里提到,Go-Moku 解树包含 138,790 个局面;另一种“长连不胜”的常见变体需要 153,284 个节点。这些数字放在今天看不夸张,但它们提醒我们:好搜索不靠蛮力取胜;它把复杂度放在最该被检查的地方。
好的读法,会先缩小棋盘。
威胁空间为什么适合五子棋
五子棋的进攻常常不是“我下一手赢”,更常见的是“我这一手让你只能答”。活三、冲四、连续逼应,都会把对手的选择压窄。威胁空间搜索正是沿着这种节奏工作:先看攻击线,再把防守方必须回答的点纳入考虑。
这和人类复盘很像。你不会把全盘每个空点都当成同等候选;你会先看哪里有迫使对手回应的手段。区别在于,人会漏,程序要把漏看的风险用另一层搜索补回来。它的美感,恰好在这两者之间。
证明改变了规则讨论的语气
一旦自由五子棋被证明先手可胜,很多规则设计就不再只是“为了好玩”。禁手、开局限制、Swap2 这类机制,都可以被看成对先手优势的不同修正:有的约束黑棋,有的让双方重新选择颜色,有的把开局责任交给摆局者。
这也是连珠与现代比赛规则的底层背景。规则并非给简单游戏加复杂装饰;它是在尽量保留棋感的前提下,把开局的不平衡压到可比赛、可学习、可长期玩的范围里。
对普通玩家有什么用
不必背下那棵解树。它对普通玩家最有用的启发,是把“威胁”看成一串问题,而非单个漂亮落点。每下一手,都问一句:如果对手必须回答,他的回答还剩几种?如果答案很多,这手可能只是好看;如果答案越来越少,计划才开始成形。
程序证明也有边界
这个证明针对的是特定规则下的 Go-Moku,并不等于所有连珠、所有开局规则、所有变体都被一并解决。ICGA 的整理也把 Connect Five、Go-moku、Renju、Pente 等放在同一家族里分别说明,因为细小规则会改变整局的数学形状。
这点很重要。“五子棋被解了”这句话太粗;“某些常见 Go-Moku 规则下,先手胜已被证明”更准确,也更尊重棋本身。一个安静的结论,往往比一句大话更耐用。
把证明留在棋盘背后
今天再打开一张五子棋盘,它不会站在旁边提醒你“黑棋必胜”。它更像一层背景知识:这个游戏之所以需要规则、需要开局设计、需要让人舒服地重来一局,是因为最简单的版本已经被看得足够深。
好的棋盘不必展示证明。它只要让你在落子时感觉清楚:压力从哪里来,选择在哪里缩小,下一手是否真的让局面变得更安静。
证明在背后,棋感在手上。