Minimax / Alpha-Beta修剪如何优先考虑较短的路径?

时间:2016-12-07 04:09:35

标签: algorithm artificial-intelligence minimax

我正在处理一个简单的井字游戏问题,我试图理解Minimax算法是如何工作的。

如果我将效用函数1用于X赢,-1用于O赢,0用于正在进行的游戏,那么我不明白该算法如何优先考虑较短的解决方案。 据我所知,它首先进入最深的节点,如果事件不是最短的路径,但它会导致可能的胜利,那么它就会选择它。

让我在例子中解释一下。这是董事会和X转的状态(符号来自https://www.hackerrank.com/challenges/tic-tac-toe):

foreach

如果我们从左上角向右搜索,那么算法会发现如果我们把X放在位置(0,2),导致它导致下一轮不可避免的胜利:

@{ 
   foreach (var doc in Model)
   {
      doc.getTitle();
   }
 }

然而,更聪明的选择是(2,1)和直接获胜位置:

OX_
_X_
__O

我不知道Minimax或Alpha-Beta修剪会如何优先考虑这种行为。

所以我的问题是我是否理解正确,以及如何改进它。

1 个答案:

答案 0 :(得分:1)

Tic Tac Toe的Minimax几乎没有可能的数值估价:赢,输,平。 Minimax算法通过其他玩家的后续动作分配玩家位置最小化的所有方式的最大值。下一步的胜利将被指定为Infinity,这是明智的选择。否则,在Tic Tac Toe中,除了一些特殊情况之外,它将优先考虑平局,例如在下一步中获胜或者能够创建一个分叉(在下一个之后导致移动中的某个胜利)。

Alpha Beta修剪是一种优化方法,可以避免探索搜索树的各个部分,因为可以显示该部分的任何部分会产生比已经找到的部分更糟糕的结果;例如,假设一个完整节点的探测产生了潜在的吸引力而另一个节点的叶子显示出损失;探索后一个节点的其他孩子是没有意义的(除非你认为其他玩家不会总是发挥他们最好的动作)。您可能会发现此链接有用:https://www.ntu.edu.sg/home/ehchua/programming/java/JavaGame_TicTacToe_AI.html