项目 · AI 课程项目

Gomoku Lab(五子棋实验室)

一个 15 × 15 五子棋课程项目,涵盖启发式搜索、Minimax、MCTS 与 AlphaZero 风格的实验,并带有经过回归测试的 VCF 算杀。

代码仓库 ↗

gomoku-lab 是一个较早的课程项目。它重新变得有用,是因为其中一些原本被当作"已完成"的搜索逻辑其实并不正确。

2026 年的一次维护复现了一个 VCF(连续冲四取胜)缺陷:原代码可能把"不存在真正的成五点"误判为强制手,错误处理双重威胁,并忽略可选的禁手合法性。修正后的搜索会统计合法的立即成五点,把两个成五点视为无法防守的双重威胁,只沿唯一的强制防守递归,优先考虑行棋方的立即胜利,并对状态恢复做回归测试。

现在有七个确定性的 VCF 测试覆盖这些语义。

平台包含什么

项目由规则引擎、Tkinter 界面和一组对外暴露同一 get_best_move 接口的引擎梯队组成:

  • 贪心基线:能赢就赢,该堵就堵,否则落在邻近位置;
  • 迭代加深的 Minimax,带 Alpha-Beta 剪枝、杀手着法与历史启发、Zobrist 置换表,以及基于棋形(成五、活四、双重威胁、活三)的评估函数;
  • 蒙特卡洛树搜索,使用 UCB1、RAVE 与渐进展宽;
  • AlphaZero 风格的残差网络配合 PUCT 搜索与自我对弈训练管线;未安装 PyTorch 时退化为随机落子。

规则引擎支持黑棋的标准禁手判定(长连、三三、四四),界面支持人人对战、人机对战、机器互搏与棋谱回放。