我对minimax算法有疑问。
假设我有以下游戏树,并且我添加了一些随机启发式值。
正如我所理解的minimax算法,它将选择绿色路径。但是,在这种情况下,这可能不是最好的选择。因为顶级节点的正确子节点具有它可以获得的最高值,所以它不是最佳移动...
因为如果另一个玩家做了另一个动作,我的胜利机会就会少得多......
对不起,我很难在这个问题上表达我的意思。但我怎么在这里想错了?
答案 0 :(得分:2)
解决此问题的通常方法是从树的较低层向后进行。让我们先检查最下面的四片叶子(10-20-15-20部分)。如果游戏到达那里,玩家2可以从这些中进行选择,因此P2将选择较小的,即10和15.我们可以修剪树的10-20-15-20个分支并用10(最左边两片叶子)和15(最右边两片)替换它们。同样地,我们可以在中间修剪-100-50对并用-100替换它们(不像你那样替换50,因为在这个级别它是玩家2的轮到他将选择较小的结果),-200 - - 100对200,依此类推。所以,对我来说,似乎是你在每个分支点取最大值而不是在最大值和最小值之间交替。
答案 1 :(得分:1)
您应该在采用最小值和最大值之间进行切换。如果你想取50,即30和50的最大值,那么你应该在右侧选择-100低一级,等等。这就是为什么算法被称为minimax。
答案 2 :(得分:1)
该算法假定您和第二位玩家都希望获胜,并始终选择最佳动作。因此,在问题的树中 - 正如我在评论中所说的那样,最后一步(第二个玩家制造)是左,而不是正确。这导致制作完整的右子树 - 对于第一个玩家来说不值得,并且minmax算法将选择以下路径(而不是问题中描述的):left->left->right->left
这是正确的算法“给你减少赢的机会”这是因为有第二个玩家,谁也想赢!
看看他的example。
在这里,x玩家想要避免失败,所以他在第一步中坚持'0'。请注意,如果(在示例中)他会先左转,那么第二个玩家再次左转并获胜!该算法确保最佳可能性 - 假设第二个玩家行为相同(假设它知道整个游戏树)