Hacker News 中文摘要

RSS订阅

无可达棋局步数超过218步 -- No reachable chess position with more than 218 moves

文章摘要

国际象棋的可达局面中,白方最多只能有218步合法着法。这一纪录自1964年由棋题大师Nenad Petrović发表以来,虽经多年尝试仍未被超越。作者通过数学方法而非穷举所有可能局面(数量高达8.7×10^45个),最终验证了这一极限的准确性。

文章总结

标题:国际象棋中不存在超过218步的可达局面

内容摘要:

自1964年国际象棋排局大师Nenad Petrović发表218步排局以来,人们一直在寻找更优解。作者通过计算机科学方法验证了这一纪录的极限性。

关键发现: 1. 数学证明:通过优化算法和整数规划模型,确认218步是可达局面的理论上限。经过约23,000秒运算,Gurobi求解器验证了40,000个218步局面的存在性,其中包括Petrović原始排局(如图1所示)。

  1. 优化方法:
  • 剔除无效黑子(仅保留能增加白方走法的黑子)
  • 用弱化子力替代黑方强子(除王外)
  • 排除将军局面(会大幅限制走法数量)
  • 采用"作弊象棋"模型简化计算(允许分数棋子等非常规设定)
  1. 其他验证:
  • 确认无升变局面的144步纪录(匈牙利排局家Jenő Bán于1960年创造)
  • 非法局面的288步上限(如图10)
  • 合法但不可达局面的271步上限(如图11)

技术挑战: - 原始棋局空间达8.7×10^45种,远超计算能力 - 通过建立整数规划模型缩小搜索范围 - 最终方案在普通计算机上完成验证

未来方向: 作者开源了代码库,建议探索: - 最多吃子 - 最多僵局 - 最多将军等衍生问题

(注:保留所有配图编号及关键数据,删减了部分技术细节和幽默表述,总字数控制在原文1/3左右)

评论总结

以下是评论内容的总结:

  1. 关于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)
  2. 数学建模方法的讨论
    有评论赞赏作者使用整数线性规划的方法,并建议补充编码细节。也有人提到动态添加约束条件的"行生成"技术。
    引用:

    • "Would have been neat to see some descriptive text about encoding" (renewiltord)
    • "mixed integer linear programming solvers already support these...called 'row generation'" (eru)
  3. 历史解决方案的疑问
    有用户对1960年代研究者如何找到最优解表示好奇。
    引用:

    • "how Nenad Petrović and Jenő Bán came up with optimal solutions in the 60s" (kryptiskt)
  4. 棋局可达性质疑
    有评论指出示例棋局可能无法通过合法走法达到。
    引用:

    • "the configuration shown initially not actually reachable...black king has no adjacent empty square" (margalabargala)
  5. 编程实现的讨论
    关于是否使用8位变量存储走法的辩论,有观点认为现代编程已不需要过度优化存储。
    引用:

    • "evidence that an 8bit unsigned integer is sufficient" (TZubiri)
    • "nowadays with OOP...have entirely variable length encodings" (TZubiri)
  6. 数据修正
    有用户指出原文对可达棋局数量的估计过高,并提供更准确的数据来源。
    引用:

    • "accurately estimates the number at ~4.8x10^44" (tromp)