【问题标题】:What is it that I don't understand about the minimax algorithm我对极小极大算法有什么不明白的地方
【发布时间】:2011-05-19 08:49:22
【问题描述】:

我有一个关于极大极小算法的问题。

假设我有以下游戏树,并且我向其中添加了一些随机启发式值。

根据我对极小极大算法的理解,它将选择绿色路径。但是,在这种情况下,这可能不是最好的选择。因为顶部节点的右子节点具有它可以获得的最高值,所以它不是最好的移动......

因为如果其他玩家采取其他行动,我的获胜机会就会少得多......

对不起,我很难表达我在这个问题上的意思。但是我在这里怎么想错了?

【问题讨论】:

  • 谁首发? + 是相对于启动器的吗?
  • 是的,我就是这个意思。对于初学者来说,更高的值意味着更好的结果。
  • 那么,我可能错了,但似乎 - 在最后一个分支 - 第二个玩家不会选择向右走 - 而是向左走并获胜。这将确保他获得更好的结果。
  • 极小极大树有两种节点——一种用于你的移动,另一种用于对手(通常是圆形\方形)。它也适用于零和游戏(如果你获得 10 分,对手将失去 10 分)。也许您可以修改树以使您的问题更清楚?
  • 我认为你在这里犯了一个错误。假设你先走,你想选择价值最高的分支。在交替回合中,您的对手将选择价值最低的分支。这不会发生在你的绿色道路上!

标签: algorithm minimax


【解决方案1】:

解决这个问题的常用方法是从树的较低层向后进行。让我们先检查最下面的四片叶子(10-20-15-20 部分)。如果游戏到达那里,玩家 2 可以从中进行选择,因此 P2 将选择 较小 的,即 10 和 15。然后我们可以修剪树的 10-20-15-20 分支并将它们替换为 10(最左边的两个叶子)和 15(最右边的两个)。类似地,我们可以修剪中间的 -100 - 50 对并用 -100 替换它们(而不是像你所做的那样 50,因为在这个级别轮到玩家 2,他会选择较小的结果), -200 - - 100 对与 -200 以此类推。所以,对我来说,似乎是在每个分支点取最大值,而不是在最大值和最小值之间交替。

【讨论】:

  • Dooooh xD Ofcourse :) 这很有意义 :D 非常感谢!
【解决方案2】:

您应该交替取最小值和最大值。如果要取 50,也就是 30 和 50 中的最大值,那么你应该选择右边低一级的 -100,等等。这就是算法被称为 minimax 的原因。

【讨论】:

    【解决方案3】:

    算法假设你和第二个玩家都想赢,并且总是会选择最好的动作。因此,在问题的树中 - 正如我在评论中所说,最后一步(第二个玩家做出)是左而不是右。这导致整个右子树 - 对于第一个玩家来说不值得,并且 minmax 算法将选择以下路径(而不是问题中描述的):left->left->right->left

    这是真的算法“给你更少的获胜机会”这是因为有一个第二个玩家,他也想获胜!

    看看他的example
    在这里,x 玩家想要避免失败,所以他在第一步中坚持使用“0”。请注意,如果(在示例中)他先向左走,那么第二个玩家再次向左走并获胜!该算法确保了最佳可能性 - 假设第二个玩家的行为也相同(并假设它知道整个游戏树)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 2019-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多