Claude 破解 Knuth 的哈密顿环难题
当计算机科学泰斗 Donald Knuth 在 2026 年 3 月的笔记中写道「Shock! Shock!」,他得知自己研究数周的开放性问题已被 Claude Opus 4.6 解决时,整个计算机科学界为之震动。这位《计算机程序设计艺术》的作者、以严谨著称的斯坦福教授,竟会用「Shock」来形容一个 AI 模型的成果。Anthropic 的 Claude Opus 4.6 解决该问题的过程记录在《Claude’s Cycles》这篇论文中——问题是在 m³ 顶点的有向图中将弧分解为三个 Hamiltonian cycle(哈密顿环),适用于所有奇数 m > 2。
什么是 Hamiltonian cycle 问题
在图论中,Hamiltonian cycle 指访问图中每个顶点恰好一次的环。Knuth 的问题涉及一种特殊结构的有向图:顶点表示为 ijk(0 ≤ i, j, k < m),每个顶点有三条出弧,分别指向 i⁺jk、ij⁺k 和 ijk⁺(其中 i⁺ = (i + 1) mod m)。这个结构称为 Cayley 图,常用于描述群论中的对称性。问题要求将所有弧分解为三个不相交的 Hamiltonian cycle,覆盖整个图。Knuth 曾解决 m = 3 的情况,但无法推广到一般情形,直到 Claude 介入。
Claude 的 31 次探索之旅
Claude 的解决过程并非一帆风顺。Filip Stappers(Knuth 的朋友)作为引导者,要求 Claude 每次探索后必须立即更新 plan.md 文件记录进展。Claude 从简单假设开始:尝试将问题转化为 fiber 坐标系下的置换选择,即根据 s = (i + j + k) mod m 的值决定移动方向。但线性或二次函数 g(v) 的尝试均失败。随后 Claude 尝试深度优先搜索(DFS),却因搜索空间过大(m = 3 时有 6²⁷ 种可能)而受阻。
在第 15 次探索中,Claude 引入 fiber 分解:将问题映射到 s = i + j + k mod m 的层上,这成为关键转折点。第 20 次探索中,模拟退火算法为 m = 4 找到解;第 30 次探索时,Claude 发现解决方案的模式仅依赖于 i、j 和 s 是否为 0 或 m - 1。最终在第 31 次探索,Claude 生成一个 Python 程序,能为 m = 3、5、7、9、11 生成有效分解。Filip 测试了 m = 3 到 101 的所有奇数,全部成功。
人机协作的微妙平衡
Claude 的进展并非自动完成。Knuth 在论文中写道:「Filip 告诉我,上述探索尽管最终成功,但过程并不顺畅。他不得不在 Claude 随机出错时多次重启,导致部分搜索结果丢失。每运行两三个测试程序后,他就要反复提醒 Claude 必须仔细记录进展。」这揭示了 AI 与人类协作的真实图景:AI 需要人类引导,但能完成人类难以穷尽的探索。
Hacker News 上有用户指出:「它本身并不智能,但这不是因为参数不够」。另一人评论:「大语言模型缺乏根基、经验和上下文,除了我们提供的内容外别无他物。想让 LLM 有效工作,要么构建这些,要么成为这些」。但 Knuth 本人的评价更积极:「看来我得修订对『生成式 AI』的看法了。得知我的猜想有优美解法,又能庆祝自动推理与创造性问题求解的戏剧性进步,何等喜悦」。
技术核心:如何用几行代码解决复杂问题
Claude 的解决方案核心在于动态决定移动方向。以下是简化后的 C 语言代码片段:
int c, i, j, k, m, s, t;
char *d;
for(c = 0; c < 3; c++) {
for(t = i = j = k = 0; ; t++) {
printf("%x%x%x ", i, j, k);
if(t == m*m*m) break;
s = (i+j+k) % m;
if(s == 0) d = (j == m-1 ? "012" : "210");
else if(s == m-1) d = (i == 0 ? "210" : "120");
else d = (i == m-1 ? "201" : "102");
switch(d[c]) {
case '0': i = (i+1) % m; break;
case '1': j = (j+1) % m; break;
case '2': k = (k+1) % m; break;
}
}
printf("\n");
}
这段代码的精妙之处在于:当 s = 0 时,若 j = m - 1 则移动 i,否则移动 k;当 0 < s < m - 1 时,若 i = m - 1 则移动 k,否则移动 j;当 s = m - 1 时,若 i > 0 则移动 j,否则移动 k。Knuth 随后证明该方案对所有奇数 m 有效。这种基于边界条件的动态决策避免了穷举搜索,体现了 AI 对问题本质的洞察。
偶数 m 问题:AI 的「卡壳」时刻
尽管 Claude 成功解决奇数 m 的情况,但在偶数 m 问题上却「卡住」了。Knuth 写道:「过了一阵子它似乎陷入困境,最后甚至无法正确编写和运行探索程序,非常怪异。于是我停止了搜索」。这种「context pollution」(上下文污染)是 AI 的常见问题:处理长序列时,模型会丢失关键细节,导致输出质量下降。
故事并未结束。2026 年 3 月 4 日,新加坡的 Ho Boon Suan 用 GPT-5.3-codex 生成的even closed form.c解决了 m ≥ 8 的偶数问题。该程序结合 Google 的ORTools CP-SAT求解器(带 AddCircuit 约束),能在几秒内找到 m = 8 到 2000 的解。m = 2000 时图有 80 亿顶点,这展示了 AI 在大规模问题上的潜力。
AI 是否真正「智能」?
Hacker News 上关于 AI 本质的争论激烈。有人认为:「不可能在不具备智能的情况下准确模仿智能行为」。反对者则回应:「你的大脑不过是让原子互相碰撞,偶尔有些黏在一起,这怎么算真正的思考?」有人用「anterograde amnesia」(顺行性遗忘)类比 AI:它们无法更新记忆,但仍能完成复杂推理。
更深刻的讨论聚焦于「智能」的定义。有用户说:「模型的本质是将 token 作为输入并输出 token 概率,这本身并无『预测性』……」这揭示了 AI 的本质:它并非在「思考」,而是在统计模式中寻找最优路径。但正如 Knuth 案例所示,这种「统计路径」足以解决人类专家数周未解的问题。
科学突破的加速器
AI 正在改变科学研究范式。Aletheia 模型仅解决 700 个 Erdős 问题中的 13 个,但 Claude 在 Knuth 问题上的表现表明,AI 在特定领域已超越人类。Hacker News 上有人问:「还要多久我们才能把『连接广义相对论与量子物理』的问题交给 AI,给它 6 个月和几座数据中心,让它弹出解决方案?」尽管物理学家认为「我们的部分限制在于实验」,但 AI 能优化实验设计、发现隐藏关联。
更现实的是,AI 已成为科研助手。一位用户分享:「我让 Claude 解 pentominoes 谜题,它很挣扎,直到我告知自己如何用 64 位无符号整数解决,它才快速创建出 C# 程序」。这种人机协作模式正在普及:人类设定方向,AI 执行探索。正如 Knuth 案例所示,AI 的「智能」不在于独立思考,而在于高效执行人类引导的复杂任务。
更多推荐


所有评论(0)