文章摘要
国际象棋的可达局面中,白方最多只能有218步合法着法。这一纪录自1964年由棋题大师Nenad Petrović发表以来,虽经多年尝试仍未被超越。作者通过数学方法而非穷举所有可能局面(数量高达8.7×10^45个),最终验证了这一极限的准确性。
文章总结
标题:国际象棋中不存在超过218步的可达局面
内容摘要:
自1964年国际象棋排局大师Nenad Petrović发表218步排局以来,人们一直在寻找更优解。作者通过计算机科学方法验证了这一纪录的极限性。
关键发现: 1. 数学证明:通过优化算法和整数规划模型,确认218步是可达局面的理论上限。经过约23,000秒运算,Gurobi求解器验证了40,000个218步局面的存在性,其中包括Petrović原始排局(如图1所示)。
- 优化方法:
- 剔除无效黑子(仅保留能增加白方走法的黑子)
- 用弱化子力替代黑方强子(除王外)
- 排除将军局面(会大幅限制走法数量)
- 采用"作弊象棋"模型简化计算(允许分数棋子等非常规设定)
- 其他验证:
- 确认无升变局面的144步纪录(匈牙利排局家Jenő Bán于1960年创造)
- 非法局面的288步上限(如图10)
- 合法但不可达局面的271步上限(如图11)
技术挑战: - 原始棋局空间达8.7×10^45种,远超计算能力 - 通过建立整数规划模型缩小搜索范围 - 最终方案在普通计算机上完成验证
未来方向: 作者开源了代码库,建议探索: - 最多吃子 - 最多僵局 - 最多将军等衍生问题
(注:保留所有配图编号及关键数据,删减了部分技术细节和幽默表述,总字数控制在原文1/3左右)
评论总结
以下是评论内容的总结:
关于218步限制的澄清
多位评论者指出原文表述不够清晰,应明确是"每个棋局下一步最多有218种合法走法"。
引用:- "no more than 218 possible next moves would be a lot clearer" (tromp)
- "they mean 'from this position the player has 218 possible legal moves'" (codeulike)
数学建模方法的讨论
有评论赞赏作者使用整数线性规划的方法,并建议补充编码细节。也有人提到动态添加约束条件的"行生成"技术。
引用:- "Would have been neat to see some descriptive text about encoding" (renewiltord)
- "mixed integer linear programming solvers already support these...called 'row generation'" (eru)
历史解决方案的疑问
有用户对1960年代研究者如何找到最优解表示好奇。
引用:- "how Nenad Petrović and Jenő Bán came up with optimal solutions in the 60s" (kryptiskt)
棋局可达性质疑
有评论指出示例棋局可能无法通过合法走法达到。
引用:- "the configuration shown initially not actually reachable...black king has no adjacent empty square" (margalabargala)
编程实现的讨论
关于是否使用8位变量存储走法的辩论,有观点认为现代编程已不需要过度优化存储。
引用:- "evidence that an 8bit unsigned integer is sufficient" (TZubiri)
- "nowadays with OOP...have entirely variable length encodings" (TZubiri)
数据修正
有用户指出原文对可达棋局数量的估计过高,并提供更准确的数据来源。
引用:- "accurately estimates the number at ~4.8x10^44" (tromp)