文章目录
- 对抗搜索
- 最大最小搜索(MinMax搜索)
- minmax搜索评价
- Alpha-Beta剪枝搜索(Pruning Search)
对抗搜索
对抗搜索也称为博弈搜索
在一个竞争的环境中,智能体(agents)之间通过竞争实现相反的利益,一方最大化这个利益,另一方最小化。
对抗搜索的方法主要有三个:
最小最大搜索(Minmax Search)
Alpha-Beta剪枝搜索(Pruning Search)
蒙塔卡洛树搜索(Monte-Caelo Tree Search)
最大最小搜索为对抗搜索中最基本的搜索方法;剪枝搜索是一种对最大最小搜索进行改进的算法,即在搜索过程中可以减去无需搜索的分支节点,且不影响搜索结果。蒙特卡洛树搜索通过采样而非穷举方法来实现搜索。
最大最小搜索(MinMax搜索)
我们采用一个例题来对这类问题进行说明,后面的搜索方法也是基于此例题
一个3*3的矩阵,A和B对矩阵轮流操作,A先操作,每次操作选择一个2×2的矩阵,统计矩阵元素和加在总分数上,然后将这个2×2矩阵逆时针旋转90度,一共进行k轮,也就是2k次操作,A的目标是使得总分数最大,B的目标是使得总分数最小,计算两人在最优策略下最后获得的总分数。
参考例题【题目记录】——ICPC南宁2017I题
对于每一个人,对于当前的矩阵状态都无法直接选出使得最终结果最优的操作方法,我们需要对于每个人的每种情况进行模拟,每个人有4种操作方法,这样最终会形成一个
4
2
k
4^{2k}
42k的决策树。
从上往下,单数层是A的行动,偶数层是B的行动,单数层要使最终结果最大,偶数层要使最终结果最小。
上面的层我们无法直接确定哪一个是最优值,但是最后一层是B的操作,我们可以直接确定一个最小值返回,返回之后再根据这个值在上一层选择一个最大值,然后依次类推,直到顶层。
minmax搜索评价
优点
算法是一种简单有效的对抗手段
在对手也“尽力而为”的前提下,算法可返回最优结果
缺点
如果搜索树极大,则无法在有效时间内返回结果
Alpha-Beta剪枝搜索(Pruning Search)
计算过程
用于Min-Max的剪枝,一些搜索是没有必要的,故此可以剪除(cut-off)那些没有必要搜索,即对搜索进行剪枝(prune)。Alpha-Beta算法是一种有效而常用的剪枝算法.
Alpha-Beta算法是在Min-Max方法基础上的一个改进.它维护一个搜索窗口(search window):[α, β].
详细的计算过程参考文章《人工智能》(二): Alpha-Beta算法