实用算法实现-第 15 篇 对抗搜索

本文介绍了对抗搜索中的极小值极大值策略,用于在两个最优对手之间的博弈中找到最佳决策。接着详细阐述了α-β剪枝的概念,以减少不必要的搜索,提高效率。通过实例分析了如何应用这些策略,并提供了相关问题的输入、输出及解决方案,包括在特定博弈问题中的应用和存储优化方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《人工智能,一种现代方法》对于对抗搜索的介绍非常好。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值