一、对抗搜索概念
- 基础概念:对抗搜索(Adversarial Search)也称为博弈搜索(Game Search)。
- 智能体:智能体(Intelligent Agent)是人工智能领域中的一个基本概念,它指的是一个能够感知其环境并采取行动以实现某种目标的系统。智能体可以是一个软件程序、机器人或者任何能够自主操作的设备。
- 对抗:前提是对抗的环境下,智能体通过竞争实现相反的利益,一方利益最大化,另一方利益最小化,后面会详细说明(比如一方MAX和另一方MIN)
二、对抗搜索的主要方法
- 最小最大搜索(Minimax Search)
- Alpha-Beta剪枝搜索(Pruning Search)
- 蒙特卡洛树搜索(Monte-Carlo Tree Search)
三、最小最大搜索(Minimax Search)
零和博弈:属于博弈论的一个基本概念,属于非合作博弈,一方的收益必然导致另一方的损失,博弈双方的收益损失相加永远为0,即是一个此消彼长的过程。
双赢博弈:利己且不损人的博弈方式,通过谈判合作达到双方共赢的局面。
优点:基于博弈的前提下,双方竭尽全力对抗,可以尽可能的收获最佳结果,同时实现简单。
缺点:以下围棋为例,就是一个典型的黑子白子博弈场景,棋面变化莫测,一共361!种落子,所以游戏搜索树极大,非常耗时。=>使用Alpha-Beta剪枝搜索(Pruning Search)可以进行改进
四、Alpha-Beta剪枝搜索(Pruning Search)
- 概念:在最小最大搜索(Minimax Search)中减少所搜索的搜索树节点数。该算法和最小最大搜索算法所得结论相同,但剪去了不影响最终结果的搜索分枝。
- Alpha值(𝛼):MAX节点目前得到的最高收益
- Beta值(𝛽):MIN节点目前可给对手的最小收益
上图为原图,对下图的剪枝过程进行详细分析:
①可以看到第一个分支里最小值为3,所以MAX会努力获得最大的值,那么MAX后续一定不会获得比3小的值,所以此时𝛼=3,同时MIN下的三个值里最小的也是3,其实这句是废话,因为目前的α和β肯定是一样的,MIN能给的最小的就是MAX此时能有的最大的
②此时到了MIN到了中间的分支,处理2时候,这里的β≤2,所以后面的4和6都需要直接剪枝,原因其实也很简单,因为在第一个分支时MAX已经可以从和MIN的博弈中得到3,所以第二个分支已经出现了比3还小的2,那么后续的已经不需要考虑了,如果小于2肯定不取,大于2也会被MIN忽略
③此时到了最右边的分支,可以看出当处理14时,暂时判断β≤14
④到达5时,更新β≤5
⑤最后一个2时确定了β=2,所以没有剪枝操作
五、剪枝原则
图中只给出了表格里的第一种情况,现在分析第二种情况,之前是MAX在前,然后MIN在后的,如果如下图所示,那么就会出现第二种情况,具体可以根据<四>中的例子改编一下进行分析。
graph TD
MIN --> MAX