《人工智能,一种现代方法》对于对抗搜索的介绍非常好。
15.1 极小值极大值策略
极大值极小值策略是一种最优策略。当对手不犯错误时,最优策略能够导致至少不比其它任何其它策略差的结果。需要注意的是,最优策略针对的是最优化对手:如果使用极大值极小值策略对付非最优化对手,可能没有使用其它策略好,但是使用那些策略对付最优化对手必定要比极大值极小值策略差。
极小值极大值策略是指存在两个最优化的博弈对手MIN和MAX,MIN的目的是使得value最小,而MAX则是使得value最大。由于两个对手都不会犯错误,即采用最优策略,故此有如下公式:
不难发现使用极小值极大值策略实际完成的是对策略空间的一种深度优先搜索。
15.2 α-β剪枝
对于两个使用最优策略的博弈者,一个博弈的value的最终结果总是确定的。而极大值极小值搜索则是通过搜索博弈树,来找出博弈的value的最终结果。极大值极小值搜索进行DFS搜索,一直深入搜索到叶子。如果结点的所有子树已搜索完毕,则该结点回溯到父结点。该搜索从初始状态,经过搜索过程P,达到当前状态S,搜索至当前结点N。可以知道,搜索过程P唯一地决定了当前状态S,而S状态正在考察结点N。
为了减少不必要的搜索,对博弈树的搜索进行α-β剪枝。每个结点N都维持两个变量α和β。α和β表示通过搜索过程P,在搜索进行到当前状态S时,MAX和MIN探索清楚的value值的一些情况。α的意义是:如果博弈过程为P,那么博弈到结点N时,MAX所能保证的value的最小值为α。β的意义是:博弈过程为P,那么博弈到结点N时,MIN所能保证的value的最大值为β。
假设在达到当前状态S时,由N的父结点F发起的搜索刚刚搜索到结点N。结点N将由父结点F得到自己的α和β的初值(博弈树的根结点的α取为-∞,β取为+∞),因为结点的α和β的初值总是由状态的S的先序状态决定的,而在状态的S的上一个状态中,F正在发起到结点N的搜索。在搜索到N结点之后,对N的子树的搜索继续进行。当N的某棵子树搜索完成之后,需要根据最优选择的结果来更新自己的α和β:如果结点N是MAX,那么只有有可能(存在一个子树,返回的vlaue的值v比α大),它会不断地抬高α;如果结点N是MIN,那么只有有可能(存在一个子树,返回的vlaue的值v比β小),它会不断地压低β。
在维护α和β的之后,可以发现有一些情况可以不必再搜索子树而直接回溯到父结点。当搜索到结点N时,双方已经博弈到第n步。
1. 如果结点N是MAX,且发现N的某子树返回的vlaue的值v比β还大,它可以断定在第n-1步MIN做决定的时候不会让MAX有这种机会。因为在第n-1步,MIN就知道存在着一个策略D,使得value值为β;如果v比β大,MIN会毫不犹豫地采用D策略。
2. 如果结点N是MIN,且发现N的某子树返回的vlaue的值v比α还小,它可以断定在第n-1步MAX做决定的时候不会让MIN有这种机会。因为在第n-1步,MAX就知道存在着一个策略D,使得value值为α;如果v比α小,MAX会毫不犹豫地采用D策略。
上述结论对于第n = 1步也是成立的,因为此时α取为取为-∞,β取为+∞,α-β剪枝的条件不可能满足。
15.2.1 实例
PKU JudgeOnline, 1085, Triangle War.
15.2.2 问题描述
如上图,A、B进行博弈。如果某人连接两点之后完成一个三角形,则得一分,且再需走一步。得分多的人获胜。
先给定一些已经走好的步骤,求最后谁胜。
15.2.3 输入
4
6
24
45
59
36
25
35