我想请教一下大家关于这个问题。我查看了最小-最大理论,但仍然不知道如何将这个概念应用到下面的问题中。
下面的树表示了一种竞技游戏中的可能移动,显示玩家X目前可以选择A移动或B移动。玩家X移动后,玩家Y可以选择一个移动,然后玩家X可以选择游戏的最后一个移动。树的叶节点标记为W、L或T,分别表示该结局对玩家X来说是赢、输或平局。
使用最小-最大搜索来确定玩家X应该选择A还是B,以获得X可以预期的最佳结果。
要复习最小-最大搜索,请参阅http://www.nada.kth.se/kurser/kth/2D1350/progp02/lecture2.pdf
玩家X应该选择A。
玩家X应该选择B。
回答:
我为节点添加了编号,并高亮了“最大”行。未高亮的行是“最小”行(即,玩家希望最小化结果)。显然,L是最低值,W是最高值。我们通常将赢分配为1,输分配为-1,平局分配为0。玩家Y希望将数字尽可能降低(如果玩家X得到L,他们就赢了)。玩家X希望将数字尽可能提高(他想要一个W)。
如果游戏进行到节点4,无论如何玩家X都会赢。因此,4被标记为W(或1)。如果游戏进行到节点5,他会输,所以标记为L。6也是如此(标记为W)。
要分配给节点2,我们注意到2在“最小”行上(轮到玩家Y)。4、5、6分别有W、L、W。玩家Y可以通过选择节点5来最小化这个结果,因此赢了。因此,玩家X知道如果玩家Y足够聪明,选择A他就会输。
我们可以对另一侧做同样的事情,以显示如果玩家X选择B,他将平局。因此,玩家X应该选择B。
当编写最小-最大算法的代码时,代码执行后序树遍历,并通过查看后代为节点分配值。