【精选】博弈树搜索技术(Minimax算法,ɑ

您所在的位置:网站首页 贪婪洞窟水攻击武器 【精选】博弈树搜索技术(Minimax算法,ɑ

【精选】博弈树搜索技术(Minimax算法,ɑ

2023-11-14 02:17| 来源: 网络整理| 查看: 265

博弈树搜索技术(Minimax算法,ɑ-β 算法) 一、 算法的理解 Minimax算法

概括:算法可以概括为——己方利益最大化,对方利益最小化”。 即一方要在可选的选项中选择将其优势最大化的选择,而另一方则选择令对手优势最小化的方法。 实现方法:它使用了简单的深度递归搜索技术来确定每个节点的值:它从根节点开始,一直前进到叶子节点,然后在递归回溯时,将叶子节点的效用值往上回传——对于MAX 方,计算最大值,对于MIN 方,计算最小值。 def Minimax(node, depth, player):参数分别为(根节点,深度,玩家) if depth == 0 or node is a terminal node: 递归出口:节点没有子节点或者已能判断出胜负的时候 return the heuristic value of node if player == True: bestValue = -∞ 当是标记为true(max方,要bestValue最大)的玩家时,先赋值一个最小值,为取最大值做准备。然后开始取孩子节点中的最大值。 for each child of node: v = Minimax(child, depth-1, False) bestValue = max(bestValue, v)在当前孩子节点 与 当前记录的最大值中取最大值。 return bestValue 返回所有孩子节点中的最大值 else:否则玩家是false方(mini方,要bestValue最小),先赋值一个最大值,为取最大值做准备。然后开始取孩子节点中的最大值。 bestValue = +∞ for each child of node: v = Minimax(child, depth-1, True) bestValue = min(bestValue, v) 在当前孩子节点 与 当前记录的最大值中取最小值。 return bestValue返回所有孩子节点中的最小值  ɑ-β 算法 概括:ɑ-β 算法是在Minmax算法的基础上进行剪枝,从而提高搜索效率。Minimax 算法是基于深度优先的搜索,因此,任何时候只需要考虑树中某条路径上的节点。  剪枝条件: ɑ路径上发现的MAX 方的最佳值;β路径上发现的MIN 方的最佳值;在搜索的过程中,ɑ-β 算法不断地更新MAX 方的_ 值和MIN 方的ɑ值,并且一旦条件成熟时即进行剪枝:MAX 方发现回传值低于自己的当前最佳值,即进行β剪枝;MIN 方发现回传值高于自己的当前最佳值,即进行ɑ剪枝。  ɑ-β 算法是在Minimax算法上进行改进的,算法的关键就在于剪枝。 结合伪代码着重讲一下剪枝 def alpha-beta(node, depth, alpha, beta, player): if depth == 0 or node is a terminal node: return the heuristic value of node if player: 当是标记为true(max方)的玩家时,先赋值一个最小值,为取最大值做准备。然后开始取孩子节点中的最大值。 v = -∞ for each child of node: v = max(v, alpha-beta(child, depth-1, alpha, beta, False)) alpha = max(alpha, v) if beta leafDepth: bestValue = v bestMove = move bestDepth = leafDepth if bestValue v: bestValue = v bestMove = move bestDepth = leafDepth beta = min(beta, bestValue) if beta



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3