在minimax算法中,第一个玩家最佳玩法,这意味着它想要最大化其得分,第二个玩家试图最小化第一个玩家的获胜机会。这是否意味着第二位玩家也能以最佳方式赢得比赛?试图选择一些路径以最小化第一个玩家的获胜机会也意味着试图获胜?
我实际上是在尝试从TopCoder解决这个任务:EllysCandyGame。我想知道我们是否可以在这里应用minimax算法。如果有一些普遍的想法,那么“无论是发挥最佳效果”的说法都让我感到困惑,我想就如何处理这类问题提出一些建议。
答案 0 :(得分:2)
是的,你可以在这里使用minimax算法。
问题陈述说游戏的胜利者是“在比赛结束时有更多糖果的女孩。”所以你可以使用的一个合理的评分函数是数字的差异由第一和第二位球员持有的糖果。
这是否意味着第二位玩家也能以最佳方式赢得比赛?
是。当您评估MIN级别时,MIN玩家将始终选择MAX玩家得分最低的路径。
注意:如果您从在该轮中进行移动的玩家的角度评估每个节点,并且在级别之间转换分数,则可以使用相同的代码实现MIN和MAX级别。如果得分是糖果数量的差异,你可以简单地在不同水平之间否定它。
试图选择一些路径以最小化第一位玩家获胜的机会也意味着试图获胜?
是。第二位玩家正试图将第一位玩家的得分降至最低。合理的得分功能会让第一位球员的失分低于平局。
我想知道我们是否可以在这里应用minimax算法。
是。如果我已正确阅读问题,级别数将等于框数。如果对盒子数没有限制,你需要使用 n-move lookahead ,将minimax树中的节点评估到最大深度。
答案 1 :(得分:0)
游戏属性:
结果,搜索树由有限数量的叶子组成。你是对的,通过应用Minimax,你可以找到最好的举动。
请注意,您只需要在最终位置评估游戏(当没有更多动作时)。在这一点上,只有三个结果:第一个获胜者,第二个获胜者,或者是平局。
请注意,标准Minimax算法与概率无关。 Minimax算法的结果决定了双方的完美游戏(假设双方都没有犯错)。
顺便说一句,如果您需要改进搜索算法,则应用Alpha Beta pruning进行安全而简单的优化。