一:智能Agent
智能体是用传感器感知环境,根据感知序列做出决策,并用执行器对环境施加作用的交互系统。Agent 函数是抽象的数学描述,Agent 程序则是具体实现。
核心概念一:什么是理性的 Agent?
Agent 就是能感知环境并采取行动的东西(传感器 + 执行器)。教材在这里引入一个稍微高级点的词:理性(Rationality)。
理性判断必须结合:性能度量、先验知识、感知序列、行动集合
-
考试考点:什么是理性的 Agent?
-
大白话解释: 理性不是指它"全知全能"或者"绝对正确",而是指它在当前有限的信息下,尽最大努力去做能让自己得分最高的事情。
-
学术定义(卷面原话): 对于每一个可能的感知序列,理性的 Agent 应该选择一个期望能使其性能度量(Performance measure)最大化的行动。
-
核心概念二:任务环境的 PEAS 描述
这是设计任何一个 Agent 的第一步。出题老师非常喜欢给你一个场景,让你写出这四个要素。
以咱们的"少儿编程陪伴机器人"为例:
-
P (Performance measure) 性能度量: 怎么算好?(孩子的学习专注度提高、题目答对率上升、机器人耗电量低)。
-
E (Environment) 环境: 它在哪运行?(书桌、家里的光线、孩子的语音指令、桌上的课本)。
-
A (Actuators) 执行器: 它能动什么?(屏幕显示动画、喇叭发声、机械手臂比划)。
-
S (Sensors) 传感器: 它怎么看世界?(摄像头看孩子表情、麦克风听声音、触摸传感器)。
核心概念三:环境的 6 大属性
Agent 聪明与否,很大程度上取决于它所处的环境有多复杂。请务必搞懂以下几组反义词:
-
完全可观察 vs. 部分可观察 (Fully vs. Partially observable):
-
完全:下象棋(棋盘上所有棋子你都看得到)。
-
部分:打扑克(你不知道对手手里是什么牌)。
-
-
确定性 vs. 随机性 (Deterministic vs. Stochastic):
-
确定性:你走一步棋,结果是确定的。
-
随机性:自动驾驶(你不知道旁边的车会不会突然变道)。
-
-
片段式 vs. 延续性 (Episodic vs. Sequential):
-
片段式:流水线挑次品(只看眼前这个零件,看完就扔,下一个是全新的开始,互相不影响)。
-
延续性:下棋(你现在走的一步,会影响十步以后的输赢)。
-
-
静态 vs. 动态 (Static vs. Dynamic):
-
静态:做数独(你思考的时候,题目不会变)。
-
动态:踢足球(你停下来思考,球和对手还在动)。
-
-
离散 vs. 连续 (Discrete vs. Continuous):
-
离散:围棋的落子位置(只有那么多格子)。
-
连续:无人机的飞行轨迹和速度(数值是无限的)。
-
-
单 Agent vs. 多 Agent (Single vs. Multi-agent):
-
单:玩魔方。
-
多:打王者荣耀(有队友有对手)。
-
-
已知vs未知
- 已知:所有行为的后果已知
- 未知:需要学习环境的工作机制,以做出决策。
考场预测: 题目可能会问:"医疗诊断系统所处的环境是什么样的?"
答案套路: 部分可观察(看不到体内所有细胞)、随机性(病情变化不确定)、延续性(今天的药影响明天的病)、动态(病情在发展)、连续(体征数据是连续的)。
核心概念四:Agent 的四种底层结构
这是25年第一道10 分大题的核心。我们要明白它们为什么是一个比一个高级的。
1. 简单反射 Agent (Simple reflex agent)
-
原理: 只有 If-Then 规则(如果...就...)。
-
例子: 测温枪。如果温度 > 37.3,就滴滴报警。
-
致命缺点: 只要传感器被挡住(部分可观察),它就成了傻子,很容易死循环。
2. 基于模型的反射 Agent (Model-based reflex agent)
-
原理: 增加了"内部状态(记忆)"和"世界运转的模型"。
-
进化点: 它能记住刚才发生了什么。如果陪伴机器人看到孩子低头了,虽然没看到脸,但它"记得"刚才孩子在打瞌睡,它推测现在还在打瞌睡。
3. 基于目标的 Agent (Goal-based agent)
-
原理: 增加了"未来预测能力(搜索与规划)"。
-
进化点: 机器人不仅知道现在的状态,还知道最终目标(比如让孩子做完这道题)。它会在脑子里推演:"如果我现在放首歌,孩子是会清醒,还是会分心?"它会选择能达到目标的那个动作。
4. 基于效用的 Agent (Utility-based agent)
-
原理: 增加了"快乐指数(效用函数)"。
-
进化点: 达到目标的方式有很多,有的好,有的烂。比如机器人可以大吼一声叫醒孩子(达到了目标,但体验极差),也可以讲个笑话叫醒孩子。基于效用的 Agent 会评估哪种方式的"综合得分"最高。
5. 学习型 Agent (Learning agent)
- 特点: 这是附加的一个维度。它包含评判元件 (告诉它刚才做得好不好)和学习元件(修改规则)。有了它,Agent 才能在未知的环境里不断进步
五:结合25年考题

(1)什么是Agent?
Agent(智能体)是人工智能领域的核心概念,经典定义(Russell & Norvig)为:能通过传感器感知环境,并通过执行器作用于环境,自主地为实现目标采取行动的实体。
它的核心特征是自主性、感知性、目标导向性和反应性,能在无持续人工干预的情况下,根据环境反馈动态调整行为,完成复杂任务。
(2)Agent的组成部分
一个典型的Agent系统包含以下4个核心部分:
- 传感器(Sensors):负责感知环境信息(如文本输入、摄像头、麦克风等),为Agent提供外部世界的状态数据。
- 感知/处理模块:对传感器获取的信息进行解析、预处理,提取关键特征,形成对环境的理解。
- 决策/控制模块:Agent的"大脑",基于目标和环境信息,进行推理、规划和决策,生成下一步的行动指令。
- 执行器(Effectors):将决策模块生成的指令转化为实际动作,作用于环境(如文本输出、机械臂、API调用等)。
其核心逻辑闭环为:感知环境 → 处理信息 → 决策行动 → 影响环境 → 接收反馈。
(3)Agent的基本类型及结构
根据智能水平和决策逻辑,可分为以下5种经典类型:
|---------------|-------------------------|-------------------------|---------------------------|
| 类型 | 核心逻辑 | 结构特点 | 适用场景 |
| 简单反射型Agent | 基于当前感知,直接执行预设的"条件-动作规则" | 仅包含感知模块和规则匹配模块,无记忆和规划能力 | 环境完全可观测、规则固定的场景,如自动温控开关 |
| 基于模型的反射型Agent | 维护环境的内部模型,结合当前感知和模型状态决策 | 新增"环境模型"模块,可处理部分不可观测的环境 | 环境动态变化但模型已知的场景,如自动驾驶的基础避障 |
| 目标导向型Agent | 以明确目标为导向,通过规划多步行动达成目标 | 新增"目标/规划"模块,具备前瞻性决策能力 | 需要多步规划的场景,如路径规划、任务调度 |
| 效用型Agent | 以效用函数为评价标准,在多个目标中选择最优方案 | 新增"效用评估"模块,可量化决策的收益与风险 | 存在权衡、不确定性的场景,如投资决策、资源分配 |
| 学习型Agent | 包含学习模块,可通过反馈不断优化自身策略 | 新增"学习/反馈"模块,能自主迭代升级 | 复杂、未知的动态环境,如强化学习机器人、对话系统 |
二:搜索
把所有的"搜索算法"想象成:我们在教一台智能寻线小车,如何在充满岔路口的迷宫里找到出口。
核心概念一:搜索问题的形式化定义(5大要素)
把一个问题交给 AI 去搜索,必须先给它定义好"游戏规则"。任何一个搜索问题都必须包含以下 5 个组成部分:
- 初始状态 (Initial State): 搜索开始的地方(比如:小车在起点)。
- 动作 (Actions): 在某个路口,可以执行哪些操作(比如:左转、右转、直行)。
- 转移模型 (Transition Model): 执行某个动作后,会到达什么样的新状态(比如:直行后到达了十字路口 B)。
- 目标测试 (Goal Test): 判断当前状态是不是我们要找的终点。
- 路径代价 (Path Cost): 衡量一条路径好坏的标准(通常用 g(n) 表示从起点到当前节点的实际代价,比如耗电量、公里数)。
考场预测: 出简答题。题目可能会问:"定义一个搜索问题需要哪几个基本要素?"答案就是这 5 个词。
核心概念二:树搜索 vs. 图搜索的区别
这是搜索算法底层的两种实现方式,核心区别在于"有没有记性":
-
树搜索 (Tree Search): 没记性,不记录走过的节点。
- 致命缺点: 如果迷宫里有环路,树搜索可能会在里面无限打转,导致死循环。
-
图搜索 (Graph Search): 记性好。拥有一个"探索集" (Explored Set / Closed List)。
- 优点: 走过的节点会记下来,下次遇到直接跳过,完美避免死循环。
考场预测: 易考判断题。问你"为了避免在状态空间图中产生死循环,应该采用哪种搜索策略?"答案选:图搜索 / 维护一个 Explored 集合。
核心概念三:无信息搜索 / 盲目搜索 (Uninformed Search)
这类搜索的特点是"完全没有终点在哪里的提示",只能像没头苍蝇一样乱找。考点在于它们的优缺点对比:
- 广度优先搜索 (BFS): 一层一层往下找。
- 优点: 只要有解,一定能找到最浅的那个解。
- 缺点: 极其消耗内存(空间复杂度极高,因为要把每一层的所有节点都存下来)。
- 深度优先搜索 (DFS): 一条路走到黑,撞南墙再回头。
- 优点: 非常省内存(空间复杂度低)。
- 缺点: 不一定能找到最优解,容易掉进无限深度的分支。
- 深度受限搜索(DLS)
- 在深度优先搜索(DFS)基础上加一个深度上限 limit = L;规则:当结点深度 > L 时 不再 扩展(相当于把搜索树"截断"在第 L 层),常见返回结果(三态)
- 一致代价搜索: BFS的升级版。不按层数找,而是按实际累加代价 g(n) 从小到大找,永远优先走最便宜的路。关注的不是"走了几步",而是"走到这里一共花了多少代价
- 迭代加深搜索 (IDS): 结合了 BFS 和 DFS 的优点。每次设定一个深度限制往下搜,找不到就加深限制重新搜。既省内存,又能找到最优解。
考场预测: 选择题常客。比如:"哪种盲目搜索算法在空间复杂度上表现最差?"答:广度优先 (BFS)。
核心概念四:A* 算法的最优性条件(理论难点)
我们知道 A* 算法很好用,但它必须满足一定条件才能保证找到的绝对是"最短路径",这也是老师最爱考的理论拔高题:
- 可采纳性 (Admissibility): 针对树搜索。要求启发函数 h(n) 必须是乐观的 。也就是说,估算代价绝对不能大于实际代价 。
- 大白话: 你的雷达可以显示终点很近(低估),但绝不能显示终点很远(高估)。只要不盲目悲观,A* 就一定能找到最优解。
- 一致性 / 单调性 (Consistency): 针对图搜索。要求满足三角不等式:h(A)≤cost(A→B)+h(B)
考场预测: 简答题:"什么是启发函数的可采纳性?" 答:"启发函数对到达目标的代价估计永远不会超过实际真实代价"。
五:结合 25 年考题(第二大题 )

这 20 分的核心,就是利用刚才提到的启发式搜索中的两个核心算法。
在做题前,必须先搞懂这道题里的两把尺子:
- g(n): 从起点 A 走到当前节点的实际累加 代价。(图上箭头旁边的数字,注意必须累加!)
- h(n): 从当前节点到终点 I 的预估代价。(也就是试卷下面给的表 1)。
第一问:贪婪最佳优先搜索 (10分)
- 理论知识点: 贪婪搜索是"极其短视"的。它完全不管之前花了多少代价(忽略 g),只看雷达预估的距离(只看 h)。
- 核心公式: f(n) = h(n)
【考题推导】 (注意题目要求:遇到数值一样时,按字典序选)
- 起点 A:查表1,h(A) = 5。
- 站在 A 找下家 :可以去 B(查表h=4)、C(查表h=3)、D(查表h=2)。
- 因为 2 最小,所以优先扩展 D。
- 站在 D 找下家 :D 只能去 E(查表h=5)。
- 现在没走过的死胡同有 B(4)、C(3)、E(5)。因为 3 最小,退回来优先扩展 C。
- 站在 C 找下家 :可以去 G(查表h=2)、H(查表h=1)。
- 现在备选有 B(4)、E(5)、G(2)、H(1)。因为 1 最小,优先扩展 H。
- 站在 H 找下家:只能去 I(终点, h=0)。找到终点!
卷面答题格式: 必须画一棵树。A(5) 连出三根线到 B(4), C(3), D(2)。给 D 画个圈表示选中,D 连出 E(5)。给 C 画个圈表示选中,C 连出 G(2), H(1)。给 H 画圈,H 连出 I(0)。
最终路径:A -> C -> H -> I。
第二问:A* 算法 (10分)
- 理论知识点: A* 算法是"精打细算"的。既看沉没成本 g,也看预估成本 h。
- 核心公式: f(n) = g(n) + h(n)
【考题手撕推导】
- 起点 A:f(A) = 0 + 5 = 5。
- 站在 A 找下家 :
- 去 B:f(B) = (1) + 4 = 5
- 去 C:f(C) = (3) + 3 = 6
- 去 D:f(D) = (3) + 2 = 5
- 备选有 B(5), C(6), D(5)。5 最小,且 B 在 D 前面(字典序),优先扩展 B。
- 站在 B 找下家 :
- 去 F:f(F) = g(A\to B\to F) + h(F) = (1+2) + 5 = 8
- 备选有 D(5), C(6), F(8)。优先扩展 D。
- 站在 D 找下家 :
- 去 E:f(E) = g(A\to D\to E) + h(E) = (3+1) + 5 = 9
- 备选有 C(6), F(8), E(9)。优先扩展 C。
- 站在 C 找下家 :
- 去 G:f(G) = (3+1) + 2 = 6
- 去 H:f(H) = (3+2) + 1 = 6
- 备选有 G(6), H(6), F(8), E(9)。6 最小,G 字典序靠前,优先扩展 G。
- 站在 G 找下家 :
- 去 I:f(I) = (3+1+3) + 0 = 7
- 此时备选有 H(6), I(7), F(8), E(9)。虽然碰到了终点 I,但 H(6) 还没走完且代价更小,必须回头!优先扩展 H。
- 站在 H 找下家 :
- 去 I:f(I) = (3+2+1) + 0 = 6
- 此时备选有 I(6), I(7), F(8), E(9)。选最小的 I(6)!搜索结束!
卷面答题格式: 同样画树状图,但在每个节点旁边须写清楚加法,比如:
B(1+4=5),C(3+3=6),D(3+2=5)。这样证明g的累加和h的查表。
最终路径:A -> C -> H -> I (虽然两条路径长得一样,但 A* 的推导过程更复杂)。
三:有信息搜索(启发式搜索)
如果说上一节的"盲目搜索(BFS/DFS)"是"蒙着眼睛走迷宫,纯靠运气和体力",那么"有信息搜索"就是给你的智能小车装备了一个"能探测终点方向的雷达"。小车不再是瞎走,而是有目的性地朝着目标前进。
核心概念一:什么是"信息"?------ 启发函数 h(n)
所有有信息搜索里,这个"雷达"在数学上被称为启发函数,统一用 h(n) 表示。
- 大白话定义: h(n) 就是雷达给出的预估值 ------从当前你所在的节点 n,走到最终目标,大约还需要花多少代价(比如直线距离有多远)。
- 最经典的例子(必考常识): 在地图寻路问题中,最常用的 h(n)就是"直线距离"(欧几里得距离)或者"曼哈顿距离"。因为它很容易算,而且永远不会比实际绕路走的距离长。
核心概念二:贪婪最佳优先搜索 (Greedy Best-First Search)
这是装备了雷达后的第一代小车。
- 算法性格: "极度贪婪,目光短浅"。它是一个彻底的"唯雷达论者"。
- 核心评价公式: f(n) = h(n)
- 执行逻辑: 在每一个岔路口,它只看雷达上哪个路口离终点"看起来最近"(h值最小),就闷头往哪边钻。它完全不心疼之前已经走了多远的路(不看实际代价 g)。
- 致命缺点: 极容易掉进陷阱或死胡同。比如终点在墙对面,雷达显示向前走最近,它就会一直撞墙,而不知道稍微绕远一点就能过去。所以,贪婪搜索不保证能找到最优解。
核心概念三:A* 搜索 (A* Search) ------ 搜索界的王者
这是装备了雷达的最终进化版小车,也是考试里分值最重的算法。
- 算法性格: "精打细算,顾全大局"。
- 核心评价公式: f(n) = g(n) + h(n)
- g(n):沉没成本(从起点走到当前节点,实际上已经花了多少油钱)。
- h(n):未来预估(雷达测算,走到终点预计还要花多少油钱)。
- f(n):综合打分(这条路走到底,总共大约要花多少钱)。
- 执行逻辑: 每次在备选路线里,挑综合打分 f(n) 最低的节点去探索。
- 绝对优势: 只要雷达的质量过关(满足下面要讲的条件),A* 算法绝对、一定能找到那条真实的最短路径!
核心概念四:A* 找最优解的"防坑指南"
刚才说了,A* 算法能找到最优解的前提是"雷达质量过关"。什么是质量过关?
- 可采纳性 (Admissibility) ------ 针对树搜索:
- 大白话: 雷达可以"盲目乐观"(觉得很近),但绝对不能"过度悲观"(觉得很远)。
- 学术定义: 启发函数 h(n)的估算代价,绝不能大于从节点n到目标的实际真实代价。
- 一致性/单调性 (Consistency) ------ 针对图搜索:
- 大白话: 雷达的探测结果必须符合常理,不能"朝令夕改"。从 A 走到 B,你离终点的预估距离的减少量,不能超过你从 A 走到 B 花掉的实际路程。
- 学术定义: 满足三角不等式:h(n) \\le cost(n \\to n') + h(n')。
考场预测与实战指南
- 判断题: "贪婪最佳优先搜索总是能找到最优解。"
- 对策: 错!因为贪婪只看 h(n),容易绕远路或走进死胡同。
- 选择题: "在 A* 算法中,如果把启发函数 h(n)永远设置为 0,A* 算法会退化成什么?"
- 对策: 选 一致代价搜索 (UCS) 或者 广度优先搜索 (BFS)。因为如果 h=0,公式就变成了 h(n) = g(n),那就等于它把雷达关了,完全靠实际累加的距离去盲搜。
老师马上检讨!你批评得极其对!
我刚才确实有点"急功近利"了,满脑子都是怎么帮你把试卷上那 10 分的计算题先拿下,导致把这节课前半部分大量的理论干货给精简掉了。大学考试最怕这种"偷工减料",万一老师在前半部分出个 10 分的简答题,那就亏大了。
我们现在立刻推翻重来,开启**"地毯式无死角"**精讲模式。请拿出你的小本本,我们把《超越经典搜索算法》这几百页 PPT 的精髓,一字不落地按"神仙笔记"格式给你掰碎了揉烂了!
四:超越经典搜索算法
超越经典搜索有两条路线:空间太大 → 更高效地找较优解;信息不全 → 在不确定状态下继续搜索

面对状态空间太大,我们有了局部搜索算法:从单个当前结点出发,通常只移动到它的邻近状态而不保留搜索路径
前面学的 A* 算法,好比是在迷宫里找一条"从起点到终点的最短路径"。
而这节课学的"局部搜索(Local Search)",好比是把你蒙上眼睛扔到喜马拉雅山脉,你的目标只有一个:找到地球上的最高点(全局最优解)。你不需要记住你是怎么爬上来的(不需要保留搜索树),你只需要关心脚下这一步往哪迈能变得更高。。
核心概念一:状态空间景观图
在局部搜索中,我们用"景观图(Landscape)"来描述问题。横轴是所有的状态,纵轴是该状态的目标函数(越高越好)或代价函数(越低越好)。
算法在爬山的过程中:
- 局部最大值 (Local Maxima): 这是一个比周围所有邻居都高的山头,但它不是整座山脉的最高峰。算法一旦爬到这里,看四周都比自己低,就会误以为已经登顶,从而停止搜索(死局)。
- 山脊 (Ridges): 想象一下屋顶的脊线。算法只能沿着东南西北四个方向走,但山脊是斜着的。算法每走一步都会掉下去,导致它只能在山脊两侧反复横跳(Z字形前进),效率极其低下。
- 高原 (Plateaus): 分为"平坦的局部最大值"(四周都是悬崖)和"山肩"(四周平坦,但某处有向上的斜坡)。在高原上,算法就像在平原上瞎逛,因为没有高度差,它不知道该往哪走。
考场预测(简答题): 问"局部搜索算法面临的主要困难是什么?"
核心概念二:爬山法及其 3 大变体
是一种局部择优的人工智能算法,采用启发式方法, 是对深度优先搜索的一种改进,算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到达到一个局部最优解。
爬山法被称为"健忘的贪婪算法"------它没有记忆,只顾眼前,只要相邻的节点比现在高,就往上走。
为了解决前面说的"容易卡在局部最大值"的问题,前辈们发明了 3 个升级版:
- 随机爬山法 (Stochastic Hill-Climbing):
- 原理: 它不是无脑选最高的那一步,而是在所有向上的那几步里随机挑一个。虽然坡度陡的被选中的概率大,但有时它也会选个缓坡。
- 优点: 收敛速度慢一点,但在某些复杂地形中反而能找到更好的解。
- 首选爬山法 (First-Choice Hill-Climbing):
- 原理: 随机生成邻居,只要生成的第一个邻居比现在高,立刻走!不看其他邻居了。
- 应用: 当邻居有成千上万个(比如连续空间)的时候,这个方法极其节省算力。
- 随机重启爬山法 (Random-Restart Hill-Climbing):
- 原理: "如果一开始你没成功,那就跳伞换个地方重来"。算法自带一个"重置按钮",卡死了就随机在地图上生成一个新起点重新爬。
- 只要重启的次数足够多,它以概率 1 找到全局最优解。
核心概念三:模拟退火算法 (Simulated Annealing) ------ 顶级重点
这个算法是物理学和计算机的完美结合。爬山法是"死活不肯往下走",所以容易卡死。模拟退火的精髓在于:它允许偶尔往下走(接受差的解),以此来跳出局部最大值的坑。
模拟退火算法能跳出局部最优,是因为它在温度较高时允许以一定概率接受比当前解更差的解,从而可以跳出当前局部最优区域,继续搜索更优解;随着温度降低,这种概率减小,算法逐渐收敛。
- 大白话解释: 想象一个凹凸不平的坑里有个乒乓球。如果你用力摇晃这个坑(高温),球就能跳出小坑,掉进最深的大坑;随着坑慢慢平稳(降温),球就稳定在坑底了。
- 当算法遇到一个比当前更差的解时,它不会直接拒绝,而是以一个概率p来接受它:
-
- 是当前解和新解之间的差值(差得越离谱,接受的概率越小)。
- T是温度参数。(考点:T 的作用) 开始时 T大(高温),p接近 1,算法到处乱跑探索;随着时间推移T 逐渐变小(降温),p接近 0,算法变得像爬山法一样保守。
核心概念四:局部束搜索 (Local Beam Search)
- 原理: 算法一开始随机生成k 个状态(相当于派 k个伞兵同时跳伞)。每一步,这 k个伞兵把他们能看到的所有下一步汇报给总部。总部从中挑出最优秀的k个点,让伞兵们瞬移过去继续爬。
- 与"随机重启爬山法"的本质区别: 随机重启爬山法的每次重启是独立 的,互不通信。而局部束搜索的 k个点是共享信息的!总部会抛弃那些走入死胡同的伞兵,把资源全部集中在发现好路线的伞兵身上。
- 变体:随机束搜索 (Stochastic Beam Search): 总部不是严格挑最好的k个,而是像轮盘赌一样,好的点被挑中的概率大,但也给差的点留一线生机(保持种群多样性)。
核心概念五:连续空间中的局部搜索(简单了解)
前面的问题都是离散的(比如放几个皇后),如果是连续的数值(比如调机器人的速度和转弯角度),我们就用高等数学的武器:
- 梯度下降法 (Gradient Descent): 顺着导数(斜率)的负方向走,就能最快到达谷底。
- 牛顿-拉夫逊法 (Newton-Raphson): 用二阶导数(海森矩阵)来加速寻找谷底。
(这部分在导论课里通常只考名词解释,不用深究数学推导)
考试大题回归(第一大题第(2)问:遗传算法 10分)
我们再次回到遗传算法 (GA)。有了前面的基础,明白遗传算法其实就是"随机束搜索的究极进化版"。它不仅挑出好状态,还让好状态之间在一起。

遗传算法是模拟达尔文生物进化论的自然选择的进化准则和生物的遗传学原理的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。
是以"适者生存"的生物进化理论为基础的一种智能优化算法。 核心思想:最适合自然环境的群体往往产生了更大的后代群体。 通过选择、交叉和变异这三种操作实现种群进化的计算模式。
(1) 首先,计算初始群体中所有个体的适应度总和sum f
sum f = 10 + 4 + 5 + 8 + 3 + 7 + 2 + 1 = 40
(2) 根据轮盘赌选择法的原理,个体被选中的概率Pi等于其自身的适应度 f除以总适应度 sum。计算如下:
- 个体 1 (f=10) 的选中概率:P_1 = 10 / 40 = 25.0%
- 个体 2 (f=4) 的选中概率:P_2 = 4 / 40 = 10.0%
- 个体 3 (f=5) 的选中概率:P_3 = 5 / 40 = 12.5%
- 个体 4 (f=8) 的选中概率:P_4 = 8 / 40 = 20.0%
- 个体 5 (f=3) 的选中概率:P_5 = 3 / 40 = 7.5%
- 个体 6 (f=7) 的选中概率:P_6 = 7 / 40 = 17.5%
- 个体 7 (f=2) 的选中概率:P_7 = 2 / 40 = 5.0%
- 个体 8 (f=1) 的选中概率:P_8 = 1 / 40 = 2.5%
(3) 答:进化过程中每个个体被选中的概率分别为 25.0%, 10.0%, 12.5%, 20.0%, 7.5%, 17.5%, 5.0%, 2.5%。
五:对抗搜索与博弈树(零和博弈)
前面两节课的搜索,都是 AI 一个人在迷宫里找路,环境是死的。但这节课,环境是活的------有个对手在跟你对着干(比如下象棋、井字棋)。
你的目标是赢(得分最高),对手的目标是让你输(让你得分最低)。这就叫"零和博弈"。
核心概念一:MINIMAX 算法(极小极大值算法)
这是博弈论的祖师爷算法,必须牢记两个角色的名字:
- MAX(你): 目标是让最终得分最大化 。在博弈树中通常用向上的三角形表示。
- MIN(对手): 目标是让你的得分最小化 。在博弈树中通常用向下的三角形表示。
算法运作逻辑(自底向上计算):
- 一直推演到棋局结束(叶子节点),得出最后的分数。
- 如果是 MIN 走步,他一定会挑所有选项里分数最低的那个给你。
- 如果是 MAX 走步,你一定会挑所有选项里分数最高的那个给自己。
- 就这样一层一层从底下把分数往上递,最后根节点的分数,就是你在双方都不犯错的情况下,必定能保底拿到的分数。
核心概念二:alpha-beta 剪枝
MINIMAX 算法有个致命缺点:如果往下推演几步,树会爆炸式增长(指数级)。为了省时间,前辈们发明了剪枝。
大白话理解剪枝:
假设你要买二手车(MAX),你想挑一辆最好(价值最高)的。
你让小弟(MIN)去三个车库看车,小弟因为嫉妒你,总是会在每个车库里挑一辆最破的车给你。
- 车库 A: 小弟看了一圈,给你挑了辆价值 5 万的车。你心里有了个保底预期
- 车库 B: 小弟进去看了第一辆车,发现是辆报废车,价值只有 2 万。
- 剪枝时刻: 你在门外喊:"小弟,车库 B 别看了,直接出来吧!"
- 为什么? 因为小弟在车库 B 只要发现了一辆 2 万的车,他最后给你挑的车绝不可能超过 2 万(他只会挑更烂的)。既然车库 B 最好也就 2 万,而你已经有车库 A 的 5 万保底了,车库 B 剩下的车根本没必要看了!这就是剪枝。
学术定义:
- (Alpha): 到目前为止,MAX(你)在路径上发现的最高保底得分。
- (Beta): 到目前为止,MIN(对手)在路径上发现的最低压制得分。
-
α,β\] α:MAX 目前已知能保证的最好下界(Max 最终结果至少不会低于这个值) β:MIN 目前已知能保证的最好上界(MAX 最终结果至多不会超过这个值)
五:结合 25 年考题

第(1)问:计算图中每个节点的值 (11分)
- 解题逻辑: 纯体力活,从最底下的方块(叶子节点)往上推。遇到向下的三角(MIN)挑最小的,遇到向上的三角(MAX)挑最大的。
- 推导过程(你需要在卷子上的节点里填数字):
- 最底层 MIN(倒三角,挑最小):
第一组: min(2,3)=2; min(1,10)=1; min(2,5)=2; min(7,8)=7
第二组: min(-5,10)=-5; min(5,-6)=-6; min(-1,-2)=-2; min(1,-2)=-2
第三组: min(5,6)=5; min(3,6)=3; min(-4,4)=-4; min(-3,4)=-3
-
- 倒数第二层 MAX(正三角,挑最大):
第一组: max(2, 1) = 2; max(2, 7) = 7
第二组: max(-5, -6) = -5; max(-2, -2) = -2
第三组: max(5, 3) = 5; max(-4, -3) = -3
-
- 倒数第三层 MIN(倒三角,挑最小):
第一组: min(2, 7) = 2
第二组: min(-5, -2) = -5
第三组: min(5, -3) = -3
-
- 最顶层根节点 MAX(正三角,挑最大):
最终根节点 = max(2, -5, -3) = 2
第(2)问:写出 alpha-\beta剪枝的条件 (4分)
- 答案:
- **alpha剪枝(针对 MIN 节点):**若当前 MIN 节点的某个子节点的值 v≤α(α 为其 MAX 祖先节点当前的最高下界),则该 MIN 节点不再评估其他子节点,直接返回 v。(通俗理解:对手发现一条极差的路径,差过我方的保底收益,剩余分支无需再搜索。)
- beta剪枝(针对 MAX 节点): 若当前 MAX 节点的某个子节点的值
v≥β(β)为其 MIN 祖先节点当前的最低上界),则该 MAX 节点不再评估其他子节点,直接返回 v(通俗理解:我方发现一条极好的路径,好过对手能接受的上限,剩余分支无需再搜索。)
第(3)问:本题给出的博弈树是否有剪枝可能性?标出并给出理由 (5分)
- 答案: 有
- 如何在图上标叉(按从左到右搜索的顺序):
- 左边大分支里: 走到倒数第二层最左侧 MAX 节点,左子树结果为 2。计算其右子树 MIN (1, 10) 时,第一个叶子节点值为 1。因 1≤2,触发 α 剪枝,叶子节点 10 直接剪掉(画叉)。
- **中间大分支里:**根节点当前下界 α=2。中间分支顶端 MIN 节点的左侧 MAX 子树结果为 -5。因 −5≤α(2),MIN 节点可将分数压制在 -5 及以下,MAX 必不选此分支,触发 α 剪枝。中间分支右侧所有节点(包含值为 -1、-2、1、-2 的整棵子树)全部剪掉(画叉)。
- 右边大分支里: 根节点下界仍为 α=2。搜索时只要遇到值 ≤2 的叶子节点,其后兄弟节点均可剪掉。例:叶子 -4 后的 4、叶子 -3 后的 4 均可剪掉(画叉)。