【问题标题】:Ideas for simple and useful AI for othello game (aka: reversi)黑白棋游戏(又名:黑白棋)的简单而有用的人工智能的想法
【发布时间】:2026-01-21 19:00:01
【问题描述】:

嗨 我在哪里可以找到有关如何为该游戏实施 AI 的信息。 以前从未做过任何类型的人工智能。

寻找最佳和简单方法的建议 谢谢

【问题讨论】:

    标签: c# artificial-intelligence game-engine


    【解决方案1】:

    就像在几乎所有棋盘游戏中一样,您必须 (a) 评估一个位置的好坏程度,并 (b) 寻找导致对您有利的位置的移动。

    奥赛罗与国际象棋等其他游戏稍有不同之处在于 (a) 有点困难。你不能轻易判断哪些位置是好的,因为桌子可以很快转动。然而,如果你刚刚开始,一个很好的启发式方法是

    • 极具价值的角球场地
    • 在弯道旁边的场地受到高度惩罚
    • 其他边框图块的价值高于剩余图块
    • 尽量减少对手的移动次数

    对于 (b),您可以使用标准博弈树搜索算法,例如 MinimaxAlpha-Beta Pruning。有许多不同的可供选择。

    Michael Buro 编写了 Logistello,这是(以前?)最强的黑白棋游戏之一,他写了几篇关于这个主题的引人入胜的论文。为了判断一个位置有多好,他将棋盘上的模式(每个等级、每个文件、所有对角线形成模式)与程序先前学习的数据库中的模式进行比较。为了搜索理想的结果,他使用了一种称为 Multi-Prob Cut 的搜索算法。

    可能有用的链接:

    【讨论】:

      【解决方案2】:

      Russel/Norvig 的“人工智能 - 一种现代方法”是学习博弈论、人工智能、启发式和相关知识的良好起点。看看这里:http://aima.cs.berkeley.edu/

      【讨论】:

        【解决方案3】:

        嗯,实际上,黑白棋是游戏的一个例子,其中 Minmax/Negamax 不能很好地工作,因为您需要启发式方法来评估中间游戏状态,这在黑白棋中是很困难的。看看蒙特卡洛树搜索(MCTS)。这应该运作良好。实际上,我自己实现了一个非常简单的机制,灵感来自 MCTS,它击败了我迄今为止测试过的所有在线 AI(而 AI 在很短的时间内完成动作:2 秒)。 该机制的工作原理如下: (a) 获取当前玩家的所有可能动作 (b) 随机选择其中之一 (c) 以完全随机(有效)的动作交替进行游戏,直到游戏结束。 (d) 重视比赛结果 (e) 将此值添加到步骤 (b) 中选择的移动的总分中 (f) 将步骤 (b) 中选择的移动的访问次数加 1 (g) 如果还有时间跳到 (b)(我给了算法 2 秒) (h) 以最高平均分(总分/访问次数)移动

        一些优化是非常明显的,比如立即移动,如果只有一个有效的移动,或者除了时间限制之外限制随机模拟的数量(比如每个有效移动 2000 次左右)。

        再说一遍,这不是 MCTS,而只是 MCTS 的最后一部分,但它工作得很好。

        您好, 响尾蛇

        【讨论】:

        • 这只是一个蒙特卡罗模拟算法。这不是 MCTS,因为没有树。 MCTS 更高效。
        【解决方案4】:

        negamax 或 minimax 算法很简单,应该可以正常工作。

        要达到更高的游戏水平,您需要添加一些启发式方法,但简单的两步 negamax 实现起来很简单而且速度很快。

        【讨论】:

        • 实现 Negamax 和 MinMax 哪个更简单?有 C# 中的示例代码吗?
        • 它们非常相似。 Negamax 实现起来更好一些。只需查看他们的*文章。
        • Negamax 搜索是 minimax 搜索的一个稍微变体的公式,它依赖于两人游戏的零和属性。该算法很大程度上依赖于 max(a, b) = -min(-a, -b) 来简化 minimax 算法的实现。
        • @jv42 为什么不呢? Negamax 大概需要 10 行,并且在概念上没有任何困难。然后你需要一个计分函数,在最简单的情况下是黑/白棋子之间的差异。最后,您需要能够枚举所有有效的移动,这也不难。 AI 不会很强大,因为阅读深度很低(在一个幼稚的实现中可能会深入 5 次,然后才会变得太慢)。
        • 好吧,对于初学者来说,评分功能很难实现,那么您需要实施复杂的策略才能获得良好的性能。我同意这是一个相对简单的游戏 AI 算法,但对初学者来说并不容易。
        【解决方案5】:

        Logistello 的源代码可在here 获得,这是十年前镇上最好的游戏。

        【讨论】:

          最近更新 更多