【问题标题】:Can pruning be implemented in the expectiminimax algorithm?可以在expectiminimax算法中实现剪枝吗?
【发布时间】:2013-11-15 05:23:18
【问题描述】:
我目前正在使用 expectiminimax 算法,在我目前的情况下效果很好:
max -> min -> chance -> max -> min -> chance -> (repeat)
我做不到
max/min -> Chance -> (repeat)
由于游戏的运作方式。
如果我继续转换我的算法,我觉得好像 alpha 会不准确。
在我当前的设置下实施修剪(除了地平线效应)是否有任何副作用,还是我只是想多了?
【问题讨论】:
标签:
artificial-intelligence
alpha-beta-pruning
expectiminimax
【解决方案1】:
我不确定您要实现哪个游戏,但听起来确实很有趣。当我们对任何节点的分支因子或游戏如何进行一无所知时,真的很难想出一个好的答案。我认为这真的取决于你的游戏。
我在五子棋游戏中尝试了不同的修剪方法,基于此经验,我真的认为您的搜索算法的结果取决于与最小和最大节点相比,机会节点对游戏期望的影响程度改变期望。
如果机会节点可以极大地改变游戏的预期(每次掷骰子的差异很大)但五六招之间的选择并没有太大的变化,那么我认为你不必太担心.
但是如果相反的话,机会节点基本上只是在推动游戏前进而不影响游戏结果的预期,而游戏的动作(或动作)确实很重要,我认为你可以得到一个很好的收获搜索算法。
还要检查 *-minimax 算法。 (布鲁斯·巴拉德 1983 年)
对于 Expectiminimax 和 *-minimax 的情况与正常的 minimax 相同。首先尝试假设的最佳移动(来自一些启发式)以创建截止点,但您还应该尝试在机会节点中对机会结果进行启发式排序。
当你开始测试它时,这实际上真的很有趣,但获得好的答案的唯一方法是让你的手指弄脏并尝试一下。
祝你好运!
【解决方案2】:
看来在这种环境下修剪仍然有效,我有严重的疑问,但到目前为止一切都已验证。也就是说,非剪枝算法和剪枝算法中的所有测试用例都提供了相同的移动和相同的启发式算法,只是在较少的节点上。
我还发现,在我的情况下,我会将机会节点的控制权交给用户(如果某些事件有的话,他们可以确定可接受的损失)。如果该技能有 95% 的命中率和 5% 的命中率,用户可以认为这 5% 可以忽略不计并忽略命中率,但这并不意味着启发式被视为其值的 100%,它维持其95%。在给定环境的情况下,使用 1 种能力可能会产生 16 种可能的结果,这种情况很少见,我希望在这种情况下具有灵活性。
至于游戏,至少在玩法上会和宝可梦差不多。