在极小化-极大化算法中,第一位玩家会以最优的方式进行游戏,这意味着它希望最大化自己的得分,而第二位玩家则试图最小化第一位玩家的获胜机会。这是否意味着第二位玩家也会以最优的方式进行游戏以赢得比赛?试图选择某条路径以最小化第一位玩家的获胜机会,是否也意味着在尝试赢得比赛?
我实际上是在尝试解决TopCoder上的一个任务:EllysCandyGame。我想知道我们是否可以在这里应用极小化-极大化算法。那个“双方都以最优方式进行游戏”的陈述真的让我感到困惑,我希望得到一些建议,如何处理这类问题,如果有普遍适用的想法的话。
回答:
是的,你可以在这里使用极小化-极大化算法。
问题陈述中说,游戏的赢家是“在游戏结束时拥有更多糖果的那个女孩。”所以你可以使用的一个合理评分函数是第一位和第二位玩家持有的糖果数量的差异。
这是否意味着第二位玩家也会以最优的方式进行游戏以赢得比赛?
是的。当你评估一个MIN层级时,MIN玩家总是会选择对MAX玩家得分最低的路径。
注意:如果从每一轮中做出移动的玩家的角度来评估每个节点,并在层级之间转换得分,MIN和MAX层级可以使用相同的代码实现。如果得分是糖果数量的差异,你可以在层级之间简单地取反它。
试图选择某条路径以最小化第一位玩家的获胜机会,是否也意味着在尝试赢得比赛?
是的。第二位玩家试图最小化第一位玩家的得分。一个合理的评分函数会让第一位玩家在输掉比赛时得分低于平局。
我想知道我们是否可以在这里应用极小化-极大化算法。
是的。如果我正确理解了这个问题,层级的数量将等于盒子的数量。如果盒子的数量没有限制,你将需要使用n步预判,在极小化-极大化树中评估节点到最大深度。