WUZIQI — Gomoku
好看,本身就是理由
← 返回博客

读棋 · 引擎

威胁空间搜索怎样读棋

从 Allis 的威胁空间搜索到今天的五子棋引擎,理解机器为什么先看强迫线,再看普通好点。

威胁空间搜索像一张安静的分岔图:只保留那些必须回答的方向。
威胁空间搜索像一张安静的分岔图:只保留那些必须回答的方向。

你明明看见一个好点,下一手却被对方连续叫杀,整盘棋像被一根线牵走。复盘时更烦:引擎早早标出那条路线,好像它从一开始就知道哪里会塌。威胁空间搜索要解释的,正是这种读棋顺序:先看会逼迫对手回应的线,再回头比较普通好点。

先把棋盘缩小到强迫线

五子棋的难处,表面上是点太多。15 路棋盘开局后,每一步都有几十个候选点;如果每个点都平等展开,搜索树会很快失控。

但实战里,很多点并不平等。一个冲四会要求对手立刻挡;一个三通常会逼出防守;连续的叫杀会让选择变少。这套搜索抓住这个事实:先研究那些带有强制回应的分支。

这种“机器感”有很朴素的来源:把棋盘暂时折叠,只留下“我威胁、你必须处理、我继续威胁”的骨架。普通的形势评估晚一点再做。

威胁空间搜索示意:普通候选点很多,强迫线只保留冲四、活三和连续叫杀的分支
强迫线会先浮出来:冲四、活三、VCF 这类分支会显著缩小要读的棋盘。

Allis 为什么从威胁开始

1990 年代初,Victor Allis 和同事在五子棋求解工作里系统使用这种思路,并配合证明数搜索。相关论文包括 1993 年 AAAI 的 Go-Moku Solved by New Search Techniques,以及 1994 年的 Go-Moku and Threat-Space Search

这里的“solved”要放在当时论文讨论的规则和设定里理解。它不能被读成“所有五子棋变体都已解决”,更不能跳到禁手、Swap2、不同棋盘尺寸都一并盖章。

Allis 的关键观察很朴素:如果一方已经拥有连续威胁,另一方的很多漂亮构想都来不及实现。搜索程序应先问一句:眼前有没有一条能强迫到底的路。

先读强迫线,棋盘会安静很多。

威胁在程序里怎样被写成对象

人说“这里有活三”,程序要把它拆得更细。一个威胁通常包含三个部分:攻击方落子的点,防守方必须回应的点,以及后续还能接上的威胁。

比如黑棋形成一个活三,白棋可能有两个防点。程序会把这两个防点都列入回应集合,然后继续检查黑棋在每个回应后是否还能冲四、做四三,或转到另一侧制造双威胁。

这一步最容易误解。这套方法关心威胁之间能不能串起来,而不急着崇拜“当前最凶的一手”。单个冲四很响,后面接不上,价值会下降。

VCF 是最清楚的一条强迫线

VCF 常被翻成连续冲四胜。它的结构很干净:我冲四,你挡;我再冲四,你再挡;最后出现五连或无法同时防住的局面。

从读棋角度看,VCF 很适合机器。每一步的防守通常被限制在少数点,分支窄,结果明确。你复盘时看到引擎给出一串“唯一防”,多半就是这类线。

但实战不能只盯 VCF。很多胜法从活三、眠三、四三交换开始,前几步还没有连续冲四那么直白。强的搜索会在 VCF 之外保留更宽的威胁类型,代价是计算量变大。

复盘动作:看到引擎推荐一步时,先问它是不是带强迫回应。若对手不挡会立刻输,那是叫杀;若对手有多个挡点,再继续数每个挡点后有没有下一段威胁。

评估函数负责处理没有强迫的局面

棋盘不会永远处在叫杀里。开局天元附近的厚度,中盘边线的潜力,禁手规则下黑棋双三双四的风险,都需要评估函数来判断。

现代五子棋引擎通常会把强迫线搜索和局面评估结合起来。能算清的杀棋先算;算不清或暂时无杀时,再用模式、权重、神经网络评估候选点。2025 年 Rapfi 相关的神经网络蒸馏论文,也是在这个方向上讨论效率和棋力的平衡。

所以你看到的“引擎读棋”,通常不是单一技巧。前端有 VCF、VCT 一类战术搜索,后面有更宽的点评分系统。两者配合,才会显得又快又稳。

人类能借走的部分:先问对手是否被迫

你不必把 Allis 的算法背下来。实战里最有用的借法,是把候选点分层:第一层看冲四和成五,第二层看活三和四三,第三层才看形状是否舒服。

举个局面:你在天元附近有两条斜线苗头,边上还有一个看起来很厚的补强点。先别急着补厚,数一下有没有一步活三能逼对手挡到某个位置,挡完后你能不能在另一条线冲四。

这个顺序会改变很多选择。看起来“漂亮”的厚势,如果不给对手压力,可能只是慢一拍;看起来普通的一手活三,只要能接上下一段威胁,就值得优先计算。

威胁空间搜索的边界也要记住

这种读法擅长处理强制性,却容易被规则细节和防守资源拖住。禁手五子棋里,黑棋的某些双三、双四不能下;一个看似漂亮的杀法,可能在最后一步触发禁手。

它也会漏掉安静的战略手。某些局面没有立刻叫杀,但一步补点能封住对手未来两条线,同时保留自己的反击。纯战术搜索读不到这种长期价值,需要评估来补。

把它当成一种读棋习惯会更稳:先找强迫,再看形势;先验证杀棋,再谈好点。下一局复盘时,挑一个中盘局面,沿着“威胁—防守—再威胁”手动走三层,你会更快看懂引擎为什么落在那里。

能逼回应的手,先进入计算。

读完了?打开 WUZIQI 试一局。