【问题标题】:Algorithms to play Game of Go?玩围棋的算法?
【发布时间】:2011-04-05 09:37:05
【问题描述】:

播放game of Go 的最新算法是什么?
哪些文章(描述算法)最适合阅读?

有一个专门讨论 Go 的 StackExachge site,但没有足够的人在那里提出这个问题。

【问题讨论】:

  • 你想写一个会玩围棋的AI吗?您是否搜索过 CiteSeer 或 ACM 档案?
  • 我必须承认,我觉得很神奇的是,一个规则如此简单的游戏可以成为“最后一站”游戏之一,顶级玩家仍然可以轻松击败计算机……当然,棋盘大小肯定在这里有帮助。

标签: algorithm search artificial-intelligence baduk


【解决方案1】:

This是最基础的资源启动,但是我敢说还是挺全的

【讨论】:

    【解决方案2】:

    当前所有顶级机器人都使用基于蒙特卡罗的算法。它们通常非常适合围棋,并且有许多额外的层来支持 MC 算法预测每一步的结果。您可以查看一个开源机器人,例如 Fuego

    【讨论】:

    【解决方案3】:

    我通过使用 alpha-beta 剪枝在 Prolog 中实现了类似的东西。这种方法可以很容易地与 Go 一起使用,因为它是一个完美的信息游戏,其中

    • 每一个可能的动作都是已知的
    • 游戏状态一目了然

    您可以从 Minimax trees 开始,然后深入挖掘 AB-pruning、negmax 等聪明的方法。

    很酷的事情是,您可以首先开发出最佳动作的引擎,然后尝试找到最佳的启发式算法(也可以让您的 AI 与其他 AI 相互竞争,看看哪个更聪明)来决定多少好就是一招。

    当然,找到一个好的启发式是实施的一部分,您必须在其中研究游戏规则并且需要考虑各种策略。所以它是更复杂但也是最有趣的一个。

    【讨论】:

    • 虽然在技术上可以使用带有 AB 剪枝的 minimax,但 Go 的巨大状态空间使其不切实际,即使不是完全没用。据估计,围棋状态比宇宙中的原子还要多。您可以将极小极大树解析到时间的尽头,但仍然无法比人类玩得更好。
    • 这与没有简单启发式的事实相结合。甚至决定谁赢得了一场完整的比赛也绝非易事。
    • 评估位置的难度远比搜索空间的大小重要。在国际象棋中,有一个简单的线性启发式算法,主教的价值是棋子的 3 倍,等等。没有什么类似的东西可以计算来评估一个走位,即使是一个不接近的位置。如果您将国际象棋移到更大的棋盘上,以便有更多可能的位置,则可能需要修改棋子评估,但可能仍然有一个简单的线性评估器可用于识别不平衡的位置。没有这些,AI 就无法引导自己走向合理的游戏。
    【解决方案4】:

    Amirim 项目尝试使用结合 ab-pruning 和分区搜索方法的极小极大方法来让 Go AI 工作。他们似乎取得了一些成功,但我不记得他们通过与人类对手比赛来证明他们的 AI。

    我建议你查找partition search

    不幸的是,我与 Amirim 项目的链接现在已失效 (here)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      相关资源
      最近更新 更多