一、核心概念与定义(填空/选择题高频)
1. 对抗搜索(博弈搜索)
定义:在竞争环境中,多个智能体通过竞争实现相反利益的过程
典型场景:两人对决、零和博弈
常见算法:
最小最大搜索(Minimax Search)
Alpha-Beta 剪枝搜索
蒙特卡洛树搜索(MCTS)
2. 零和博弈
一方收益 = 另一方损失,总和为0
不存在合作可能
与“非零和博弈”对比
3. 博弈树
用于表示博弈过程中所有可能状态的树结构
节点表示游戏状态,边表示玩家的动作
深度优先遍历常用
二、算法原理与流程(计算题与简答题重点)
1. 最小最大搜索(Minimax)
基本思想:
MAX玩家希望最大化自身利益
MIN玩家希望最小化MAX的利益
交替进行,递归计算每个节点的“效用值”
算法流程:
从当前状态出发,深度优先遍历博弈树
在MAX层选择子节点中最大值
在MIN层选择子节点中最小值
叶子节点使用评价函数(如胜负、得分)
2. Alpha-Beta 剪枝
目的:减少Minimax搜索的节点数,提高效率
剪枝条件:
α剪枝(在MIN节点):若父节点(MAX)的α值 ≥ 当前节点β值,剪枝
β剪枝(在MAX节点):若父节点(MIN)的β值 ≤ 当前节点α值,剪枝
α与β的含义:
α:当前路径上MAX玩家的最佳选择(下界)
β:当前路径上MIN玩家的最佳选择(上界)
效果:不影响最终结果,显著减少搜索节点
三、典型例题与考点(对应回忆卷题型)
1. 计算题示例(类似回忆卷三.3)
题目会给出一棵博弈树,叶节点有评价值,要求:
(1)写出Minimax搜索后各中间节点的值
(2)在图上标出Alpha-Beta剪枝的位置(用“×”表示)
2. 简答题示例
解释Minimax和Alpha-Beta剪枝的关系
Alpha-Beta剪枝是对Minimax算法的优化,通过剪去不影响最终决策的分支,减少搜索空间,但得到的结果与Minimax一致。为什么Alpha-Beta剪枝能提高搜索效率?
通过维护α和β值,提前判断某些分支不会影响最终决策,从而避免展开这些分支,减少节点访问次数。什么是博弈树?为什么对抗搜索常用深度优先?
博弈树是表示博弈过程中所有可能状态的树结构。深度优先节省内存,适合递归实现,便于进行Alpha-Beta剪枝。
四、与试卷中其他章节的关联
与启发式搜索对比:
启发式搜索用于单智能体寻优
对抗搜索用于多智能体竞争
与蒙特卡洛树搜索(MCTS)关联:
MCTS也常用于博弈,通过采样代替穷举
在非完全信息博弈中更常用
与虚拟遗憾值最小化算法关联:
后者用于非完全信息博弈,对抗搜索常用于完全信息博弈
五、复习建议
掌握算法流程:
能手动模拟Minimax计算过程
能画出Alpha-Beta剪枝过程图
理解剪枝原理:
明确α、β值的传递与更新规则
能判断何时剪枝、剪哪一侧分支
联系实际应用:
如井字棋、象棋、围棋等游戏的AI实现思路
注意概念辨析:
零和 vs 非零和
完全信息 vs 非完全信息
Minimax vs MCTS
对抗搜索 · 模拟练习题
一、填空题(每空1分)
对抗搜索也称为________搜索,适用于________博弈环境。
在最小最大搜索中,MAX玩家希望________效用值,MIN玩家希望________效用值。
Alpha-Beta剪枝中,α表示________玩家的最佳选择(下界),β表示________玩家的最佳选择(上界)。
若在MIN节点处发现父节点的α值 ≥ 当前节点的β值,则进行________剪枝。
在完全信息、零和、两人轮流行动的博弈中,常用________算法求解最优策略。
博弈树中,叶子节点常用________函数评估状态优劣。
若博弈树分支因子为b,深度为d,Minimax算法的时间复杂度为________。
Alpha-Beta剪枝最优情况下时间复杂度可降至________。
二、选择题(每题2分)
下列哪种情况一定会触发Alpha-Beta剪枝?
A) α < β
B) α > β
C) α = β
D) α ≤ β在Minimax搜索中,某一层为MAX层,其子节点返回值分别为[3, 5, 1],则该层节点的值为:
A) 1
B) 3
C) 5
D) 9关于零和博弈的描述,错误的是:
A) 一方收益等于另一方损失
B) 总收益和为0
C) 双方可能合作
D) 常用于对抗搜索建模以下哪种算法通过随机采样代替穷举搜索?
A) Minimax
B) Alpha-Beta剪枝
C) 蒙特卡洛树搜索
D) A*搜索在Alpha-Beta剪枝中,α和β的初始值通常设为:
A) α=+∞, β=-∞
B) α=-∞, β=+∞
C) α=0, β=1
D) α=1, β=0
三、计算与画图题(10分)
给定如下博弈树,叶节点为评价值,MAX先手:
text
A(MAX) / | \ B C D(MIN) / \ / \ / \ 3 5 2 9 1 8
使用Minimax算法计算节点A、B、C、D的值。
使用Alpha-Beta剪枝从A开始搜索,在图上标出被剪枝的分支(用“×”表示),并写出α、β值更新过程。
四、简答题(每题5分)
简述Minimax算法的基本思想及其局限性。
为什么Alpha-Beta剪枝能显著提升搜索效率?剪枝是否会影响最终结果?
对抗搜索与启发式搜索(如A*)的主要区别是什么?
参考答案
一、填空题
博弈,零和
最大化,最小化
MAX,MIN
α剪枝
Minimax(或Alpha-Beta剪枝)
评价(或效用)
O(bd)O(bd)
O(bd/2)O(bd/2)
二、选择题
B
C
C
C
B
三、计算与画图题
Minimax计算:
B = max(3,5) = 5
C = max(2,9) = 9
D = min(1,8) = 1
A = min(5, 9, 1) = 1
Alpha-Beta剪枝过程:
A: α=-∞, β=+∞
扩展B → 得值5,A: α=5
扩展C → 第一个子节点2,C: α=2,继续第二个子节点9,C: α=9,返回9
A: β=min(+∞,5,9)=5
扩展D → 第一个子节点1,D: β=1,此时α=5 ≥ β=1,触发剪枝,不再扩展第二个子节点
D返回值1
A最终值 = min(5,9,1) = 1
剪枝位置:D节点的第二个子节点(值为8)被剪枝。
四、简答题
Minimax思想:MAX玩家最大化收益,MIN玩家最小化MAX收益,递归计算。
局限性:搜索空间大,需遍历整棵树,时间复杂度高。剪枝提升效率:通过α、β值提前排除不影响最终决策的分支,减少搜索节点。
不影响结果:剪枝仅去掉不会改变根节点值的分支,结果与Minimax一致。主要区别:
对抗搜索:多智能体竞争,考虑对手行为(如Minimax)
启发式搜索:单智能体寻优,利用启发函数(如A*)
一、零和 vs 非零和
| 维度 | 零和博弈 | 非零和博弈 |
|---|---|---|
| 定义 | 一方收益等于另一方损失,总和为0 | 各方收益与损失之和不等于0,可能存在共赢或共损 |
| 关系 | 严格竞争,对立 | 可能存在竞争、合作或混合 |
| 合作可能 | 不存在 | 可能存在合作 |
| 典型例子 | 棋类游戏(象棋、围棋) | 囚徒困境、资源分配谈判 |
| 对抗搜索适用性 | 常用(如Minimax) | 一般不用标准对抗搜索,常用博弈论或谈判模型 |
二、完全信息 vs 非完全信息
| 维度 | 完全信息博弈 | 非完全信息博弈 |
|---|---|---|
| 信息状态 | 所有玩家均知道游戏全部历史与当前状态 | 部分信息不公开(如手牌、隐藏状态) |
| 决策依据 | 基于完整状态树 | 需考虑信息集、概率推断 |
| 常用算法 | Minimax、Alpha-Beta、MCTS(确定性版本) | 虚拟遗憾最小化、贝叶斯博弈、部分可观测MCTS |
| 典型例子 | 象棋、围棋、井字棋 | 扑克、麻将、星际争霸(部分信息) |
| 搜索树结构 | 确定性树,每个状态唯一 | 信息集树,多个状态归属同一信息集 |
三、Minimax vs MCTS(蒙特卡洛树搜索)
| 维度 | Minimax(含Alpha-Beta剪枝) | MCTS |
|---|---|---|
| 搜索方式 | 穷举或剪枝后的确定性搜索 | 随机采样 + 逐步构建搜索树 |
| 适用场景 | 完全信息、零和、状态空间较小 | 完全信息或部分信息、状态空间大、分支多 |
| 是否需评价函数 | 是(叶节点需静态评价) | 否(通过模拟对局结果评估) |
| 时间效率 | 随深度指数增长 | 可通过模拟次数控制时间 |
| 内存使用 | 需保存整棵树或部分路径 | 仅保存构建的部分树结构 |
| 最优性保证 | 在完全搜索下最优 | 渐进收敛至最优(需足够模拟) |
| 典型应用 | 象棋、跳棋 | 围棋(AlphaGo)、即时战略游戏 |
四、辨析小结(可用于简答题)
零和博弈一定是完全信息吗?
不一定。例如扑克是零和但非完全信息。Minimax能用于非完全信息博弈吗?
不能直接使用,因为Minimax依赖完整状态树。非完全信息需扩展为信息集或使用随机化策略。MCTS在哪些方面比Minimax更灵活?
无需静态评价函数
适合大规模状态空间
可用于部分可观测环境
支持实时决策(可随时中断)
完全信息博弈是否一定可用Minimax求解?
理论上是,但实际受状态空间限制。围棋等游戏状态数太多,需结合剪枝、启发式或MCTS。