极小极大算法 (The Minimax Algorithm)

极小极大算法 (The Minimax Algorithm)

[说明]  本文基于<>, 本文中的图片均来源于此笔记。

极小极大算法常用于二人博弈游戏,目的是寻找最优的方案使得自己能够利益最大化。基本思想就是假设自己(A)足够聪明,总是能选择最有利于自己的方案,而对手(B)同样足够聪明,总会选择最不利A的方案。

下面举个例子进行说明:
设:正方形代表自己(A),圆代表对手(B),节点的每个孩子节点代表一个候选方案。

上图中显示了所有候选方案。让我们如下分析:(注意:图中的所有数字都是A的利益值,越大越有利于A)

假设A选择第一个方案,B有两个候选方案,B为了使得A利益最小化,所有在7和3中选择了3,所以A只能获得3。

假设A选择第二个方案,B只有一个选择,A最终可以获得15。

假设A选择第三个方案,B有4个可选方案,为了使得A利益最小,B选择第一个方案,则A只能获得利益1。

A为了使得自己利益最大,所以A会选择第二个方案,即获得利益15。

从上图可以看出,B总是选择候选方案中的最小值,而A总是选择候选方案中的最大值,极小极大的名字也就源于此。

该算法使用深度优先搜索(Depth First Search)遍历决策树来填充树中间节点的利益值,叶子节点的利益值通常是通过一个利益评估函数算得。

通常决策树的分支呈指数增长,所以基本不可能遍历整棵决策树,所以实际应用中通常会控制决策树深度,从而减少计算量。正因为无法遍历完整的决策树,所以该算法有可能造成误导,即选取的方案可能是局部最优而不是全局最优的。

有时候为了得到较好的效果不得不增加搜索树的深度,这样就增加了大量的计算。为了加快计算速度,减少计算量,可以使用Alpha-Beta剪枝算法(Alpha Beta Pruning)对搜索树进行剪枝。因为搜索树中有很多分支不需要遍历。



你可能感兴趣的:(Algorithm,algorithm,遍历,搜索,极小极大,alpha-beta)