【问题标题】:Does the min player in the minimax algorithm play optimally?极小极大算法中的极小玩家是否发挥最佳?
【发布时间】:2014-09-29 20:45:42
【问题描述】:

在极小极大算法中,第一个玩家玩得最优化,这意味着它想要最大化自己的分数,而第二个玩家试图最小化第一个玩家获胜的机会。这是否意味着第二个玩家也以最佳方式赢得比赛?试图选择一些路径以最小化第一个玩家获胜的机会也意味着试图获胜?

我实际上是在尝试从 TopCoder 解决这个任务:EllysCandyGame。我想知道我们是否可以在这里应用极小极大算法。 “两者都发挥最佳”这句话真的让我感到困惑,如果有一些一般性的想法,我想要一些如何处理这类问题的建议。

【问题讨论】:

    标签: artificial-intelligence minimax


    【解决方案1】:

    是的,你可以在这里使用极小极大算法。

    问题陈述说游戏的赢家是“游戏结束时有更多糖果的女孩。”所以你可以使用的一个合理的评分函数是数字的差异第一个和第二个玩家持有的糖果。

    这是否意味着第二名玩家也以最佳方式赢得比赛?

    是的。在评估 MIN 级别时,MIN 玩家将始终为 MAX 玩家选择得分最低的路径。

    注意:MIN 和 MAX 级别可以使用相同的代码实现,如果您从玩家在该回合中移动的角度评估每个节点,并在级别之间转换分数。如果分数是糖果数量的差异,你可以简单地在关卡之间取反。

    试图选择一些路径以最小化第一个玩家获胜的机会也意味着试图获胜?

    是的。第二个玩家试图最小化第一个玩家的分数。一个合理的计分函数会给第一个玩家输的分数低于平局的分数。

    我想知道我们是否可以在这里应用极小极大算法。

    是的。如果我正确阅读了问题,则级别数将等于框数。如果框的数量没有限制,您将需要使用 n-move lookahead,将极小极大树中的节点评估为最大深度。

    【讨论】:

    • 盒子的数量在 1 到 10 之间。是否有数学证明,如果 MIN 玩家试图最小化 MAX 的分数,他会选择他的最佳策略来获胜?
    • 从问题陈述中可以看出,两个玩家都发挥最佳,获胜者是拥有最多糖果的玩家。如果只有 10 个框,我们可以评估树一直到代表游戏结束的叶节点。如果计分函数是玩家 1 的糖果和玩家 2 的糖果之间的最终差值,则如果差值为负,则玩家 2 获胜。在任何给定的游戏状态下,选择的数量都是有限的,并且它们之间必须有一个最低分数。该最小值是否为负。如果0,第一个玩家将获胜。
    【解决方案2】:

    游戏属性:

    • 在每一点,都有有限的、明确定义的移动次数(选择一个非空框)
    • 游戏在有限的移动次数后结束(当所有盒子都为空时)

    因此,搜索树由有限数量的叶子组成。你是对的,通过应用 Minimax,你可以找到最好的移动。

    请注意,您只需在最终位置(当没有更多移动时)评估游戏。此时,只有三个结果:第一个玩家获胜,第二个玩家获胜,或者是平局。

    请注意,标准的 Minimax 算法与概率无关。 Minimax算法的结果决定了双方的完美打法(假设双方都没有失误)。

    顺便说一句,如果你需要改进搜索算法,一个安全简单的优化是申请Alpha Beta pruning

    【讨论】:

    • 我知道 alpha beta pruning,但我的第一个问题是我是否可以使用 minimax 算法。我还有一个问题:如果第二个玩家在游戏中走最后一步,会有问题吗?因为我们需要第一个玩家做出最后一步(我认为是这样)才能开始从叶节点构建解决方案。
    • @J.M 没有区别,谁最后移动。唯一的假设是每个玩家都必须选择最佳移动。因此,如果游戏从第一个玩家开始,而最后一步是由第二个玩家做出的,那么您的实现必须保证最后一步对第一个玩家来说是最糟糕的一步(换句话说,分数必须被最小化)。
    猜你喜欢
    • 1970-01-01
    • 2016-01-24
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多