FIT5047 Foundation of Artificial Intelligence

课程简介

评估总结

课程理解

Week 1

Week 1 我没有听。

Week 2

标题为Solving problems with search algorithms

核心内容为:

老师的PPT用Romania作为例子,假设你在Romania的Arad度假。

那么你需要先 Formulate Goal(制定目标),比如说be in Bucharest。然后Formulate Problem(制定问题): states(状态):various cities(各种城市),actions(动作):drive between cities

最后find solution: sequence of cities, e.g., Arad → Sibiu → Rimnicu Vilcea → Bucharest

Romania路径地图

第一个内容是problem formulation(问题形式化)

问题形式化是指将现实世界的问题抽象并定义为AI可理解的状态空间与规则。 其中包含的决策过程包括:

Abstracting away from unnecessary detail is a key➔ It can drastically reduce the size of the state/search space(去除不必要的细节是关键➔它可以显著减少状态/搜索空间的大小)

Problem formulation: Example

Vacuum World

这张幻灯片以人工智能中的经典模型“吸尘器世界”(Vacuum World)为例,解释了如何将现实问题形式化(Problem Formulation)为计算机可处理的标准搜索问题。

核心要素拆解

这个图展示了吸尘器世界中所有可能出现的状态(States)。它的核心逻辑是由 3 个二元变量排列组合得出的,总共包含 $2 \times 2 \times 2 = 8$ 种不同情况。

状态计算的三要素

8 个状态的具体对应关系

如何理解它的动态运作

AI 算法的目标就是控制吸尘器通过执行动作(Left 左移、Right 右移、Suck 吸尘),从任意一个初始状态转移到目标状态(7 或 8):

lastweek context

根据上周的PPT,可以看到Agent 主要是基于通过传感器(sensors) 来感知(percept)环境(environment)输入给agent,然后agent基于这些内容对环境(environment)通过执行器(actuators)做出行动 (actions)

agent how to solve problem

这幅图展示的是人工智能中简单问题求解智能体(Simple Problem-Solving Agent)的算法伪代码,用来说明一个基于目标的智能体(Agent)是如何通过“感知-规划-执行” 三部曲来决定每一步动作的

持久状态变量(Persistent Variables)

算法核心执行步骤

这种智能体采用了经典的“先规划再行动(Look-ahead)”机制:在初始阶段或上一个计划完成后,通过搜索算法生成一整套解决路径,随后按步骤依次执行,直到计划耗尽后再重新规划。

Key Concepts(核心概念)

Representing a Problem(问题的 5 大标准表示法)

Definition of Solution(解的定义)

problem solving 8_puzzle

然后提出一个新的问题你应该怎么做呢?从开始的杂乱无绪,到后面的顺时针排序,你因该怎么定义

解决逻辑:

Search tree

首先我们可以想象一下,我们要在 Google 上搜索“如何零基础自学吉他”,你整个查资料、翻网页的过程,其实就是一次标准的 Tree Search(树搜索)。

把上网冲浪映射到树搜索的组件上,对应关系如下:

Tree Search 逐步推演图解

Searchh=3 Ah=4 Bh=2 Ch=5 Dh=5 Eh=1 Fh=5 Goalh=0
未探索
Frontier (待探索) / 路径栈
已扩展/探索节点
当前焦点/出栈节点
Goal (终点)
当前算法模式:未开始
待探索列表 / 当前路径栈:[ Search ]
当前检查/操作节点:无
状态日志:点击上方算法按钮进行单步推演。

AI 搜索与控制策略分类指南

Classification of Control Strategies in Artificial Intelligence

🧭 分类的两大维度

1. Tentativeness(尝试性 / 可悔棋性)

  • Tentative(尝试性的 / 可回溯): 允许悔棋。记录搜索历史,遇到死胡同可退回重新选择路线。
  • Irrevocable(不可撤销的 / 无法悔棋): 落子无悔。每一步做出后不可撤销,直接迈向下一状态。

2. Informedness(启发性 / 信息指导)

  • Informed(启发式 / 有信息): 有“导航”(启发函数 $h(n)$),能评估距离目标的远近。
  • Uninformed(无启发式 / 盲目): 没有“导航”,仅凭规则盲目探索,不知目标具体方向。

📊 控制策略分类全景对比表

组合分类 算法特点 代表算法 通俗比喻
无启发式 + 不可撤销 Uninformed + Irrevocable 不存在有效算法 (--) 无
蒙着眼睛在悬崖边向前走,走错直接掉下去,既没导航又不能回头,无法稳定解决问题。
无启发式 + 可回溯 Uninformed + Tentative 盲目搜索(Blind Search)
虽然没有导航指引,但会记录走过的路,发现死胡同就退回来换条路走。
BFS(广度优先) DFS(深度优先) DLS(限深) IDS(迭代加深) UCS(一致代价)
瞎子摸象/走迷宫: 虽然不知道出口在哪,但用绳子绑着自己,撞墙了就沿着绳子退回来走另一条。
启发式 + 不可撤销 Informed + Irrevocable 局部搜索(Local Search)
有导航指引,但为了节省内存,不保存历史路线,只不断尝试改善当前状态。容易陷入“局部最优”。
Hill Climbing(爬山法) Simulated Annealing(模拟退火) Genetic Algorithms(遗传算法) Local Beam Search
浓雾中爬山: 你看不见全局,但能感觉哪边坡度更陡(启发信息),就往哪边走。走了一步就回不去了。
启发式 + 可回溯 Informed + Tentative 系统性启发式搜索
既有导航指引(优先走看起来最好的路),又维护了一个备选路线列表(Open List),当前路线不行随时切换。
Greedy Best-First Search A 算法 A* 算法
使用地图导航: GPS 会推荐最优路线(启发),但如果你偏离路线或遇到堵车,导航能重新计算并指引你走备用路线(回溯)。

💡 一句话速记口诀

盲目搜索 (BFS/DFS) 没导航,但能悔棋(靠硬逛和回溯解决)。
局部搜索 (爬山/退火) 有导航,但落子无悔(只顾眼前改善,省内存)。
启发式搜索 (A*) 既有导航,又能悔棋(聪明且有保障,智能极高)。

LN3: Problem Solving as Search (Part 1)

无信息搜索(Uninformed Search)、约束满足问题(CSP)与算法分类体系深度解析
Artificial Intelligence Search Strategies Backtracking & CSP Lecture 3 Deep Dive
Part 3: 无信息搜索策略深度剖析(Uninformed Search)

无信息搜索(又称盲目搜索)指算法在探索状态空间时,仅利用问题定义本身的信息(初始状态、动作集、转移模型及目标测试),不借助任何领域相关的启发式估算函数(如距离、评估值等)。

1. BFS vs DFS:空间与时间的终极抉择
广度优先搜索 (BFS - Breadth-First Search)
  • 数据结构:先进先出队列(FIFO Queue)。
  • 展开机制:按层展开(Level-by-level),优先扩展最浅节点。
  • 时间复杂度:O(bd)
  • 空间复杂度:O(bd)(致命瓶颈)。
  • 完备性 & 最优性:当步长代价相同时具备完备性与最优性。
深度优先搜索 (DFS - Depth-First Search)
  • 数据结构:后进先出队列/栈(LIFO Stack)。
  • 展开机制:一条路走到黑(Branch-by-branch),优先扩展最深节点。
  • 时间复杂度:O(bm)(m 为最大深度)。
  • 空间复杂度:O(bm)(极其轻量)。
  • 完备性 & 最优性:在无限深空间中不完备,且不具备最优性。
图 3.1:BFS 与 DFS 的节点扩展顺序对比示意图
BFS(广度优先:按层扩散) 1 2 3 4 5 6 7 DFS(深度优先:垂直下钻) 1 2 5 3 4 6 7
图中数字代表节点被访问/扩展的先后顺序:BFS 水平逐层推进,DFS 优先沿着单个分支推进至底端。
内存暴满(Memory Wall)计算实例:
假设分支因子 b = 10,最优解深度 d = 12。 BFS 在第 d 层需在前沿(Frontier)中保存 1012 个节点。假设每个节点数据仅占用 100 字节,则所需内存高达 100 GB!因此,BFS 的核心瓶颈绝非 CPU 耗时,而是内存溢出。
2. 迭代加深搜索(IDS):完美融合两者的“神仙算法”

迭代加深搜索(Depth-First Iterative Deepening, IDS / DFID)通过逐步增加深度限制 L (L = 0, 1, 2, ...),反复运行深度受限搜索(DLS)。

图 3.2:IDS 迭代加深搜索的逐层探索示意图
一轮: L=0 Root 二轮: L=1 Root 三轮: L=2 (到达目标层)
IDS 逐轮增加限制深度 L。虽然顶层节点被重复搜索,但最后一层占绝大多数节点,重复开销比例极小。
数学证明:为什么重复搜索开销极小?
假设分支因子为 b,目标解深度为 d: IDS 生成的总节点数为:
N(IDS) = d · b1 + (d-1) · b2 + ... + 1 · bd = O(bd)
比值示例(当 b = 10, d = 5 时):
N(IDS) = 5(10) + 4(100) + 3(1000) + 2(10000) + 1(100000) = 123,450 个节点。
单次 BFS 生成节点数为 111,110 个。IDS 只比 BFS 多产生了约 11% 的节点开销!
结论: IDS 完美结合了 BFS 的完备性/最优性 和 DFS 的低内存消耗 O(bd)。
搜索策略 时间复杂度 空间复杂度 完备性 (Completeness) 最优性 (Optimality)
BFS (广度优先) O(bd) O(bd) (高) 是 (若 b 有限) 是 (当步长代价相同时)
DFS (深度优先) O(bm) O(bm) (极低) 否 (有限空间且去重时为“是”) 否
DLS (深度受限) O(bL) O(bL) 否 (当 d > L 时) 否
IDS (迭代加深) O(bd) O(bd) (极低) 是 是 (当步长代价相同时)
UCS (一致代价) O(b1+⌊C*/ε⌋) O(b1+⌊C*/ε⌋) 是 (当代价 ≥ ε > 0) 是 (任意正步长代价)
Part 4: 约束满足问题(CSP)与回溯搜索
1. 从“黑盒状态”到“结构化状态(Factored State)”

传统搜索将状态视为不可拆分的黑盒(Atomic State);而 CSP 将状态结构化表达为变量与值域的赋值组合,使得算法能够利用局部约束进行针对性剪枝。

CSP 三要素框架:CSP = ⟨X, D, C⟩
2. 回溯搜索(Backtracking Search)与剪枝

回溯搜索是针对 CSP 特化的深度优先搜索(DFS)。由于 CSP 解与变量赋值顺序无关(对 A 赋值再对 B 赋值,与先 B 后 A 等价),搜索树每层仅对单个变量赋值,将分支树从 b! 级降至指数级,并能实现早期剪枝(Early Pruning)。

图 4.1:地图着色问题的回溯搜索树与剪枝过程示意图
Root ({ }) WA = Red WA = Green ... NT = Red ❌ (冲突) NT = Green ✔ 触发回溯
一旦发现赋值违背约束(如 NT=Red 与 WA=Red 冲突),算法立即停止向下探索并触发回溯。
3. 三大核心启发式优化(Heuristics for CSP)
1. MRV (最少剩余值)
Minimum Remaining Values
  • 问题:优先选择哪个变量?
  • 策略:选择剩余合法候选值最少的变量。
  • 原理:“失败优先(Fail-Fast)”,尽早触发死胡同以大幅剪枝。
2. LCV (最少约束值)
Least Constraining Value
  • 问题:变量选定后优先填什么值?
  • 策略:选择给相邻邻居变量留有最多选择的值。
  • 原理:“留有余地”,最大化一次性成功找到解的概率。
3. Arc Consistency (AC-3)
弧一致性前向推断
  • 问题:如何在搜索前/中传播约束?
  • 策略:对任意弧 (X, Y),若 X 中的值在 Y 中无合法配对,则从 Dx 中删除该值。
  • 原理:在搜索前剔除绝大多数不合法分支。
图 4.2:弧一致性 (Arc Consistency / AC-3) 值域约束传播示意
变量 X (D_x) { 1, 2, 3 } 约束: X < Y 变量 Y (D_y) { 1, 2 }
若约束为 X < Y 且 Dy = {1, 2},对 X = 3 无解满足约束,故 AC-3 自动将 3 从 Dx 中剔除。
Part 5: 算法分类体系与工程决策指南(Taxonomy)

理解算法的分类维度能够帮助我们在面对实际工业界问题时迅速做出正确的技术选型。

分类维度 不可撤销算法 (Irrevocable) 尝试性/可回溯算法 (Tentative)
核心机制 决策一旦做出立刻执行,不保存历史轨迹,无法回头。 在内存中维护搜索树/前沿队列,允许回溯并重新尝试。
典型代表 随机游走(Random Walk)、简单爬山法(Hill Climbing)。 BFS, DFS, IDS, UCS, A* 算法, 回溯搜索。
适用场景 状态空间极度庞大、环境物理不可逆或对响应时间要求极高。 允许在计算机内存中进行虚拟推演的求解规划问题。
算法选型决策树(Selection Decision Flowchart)
图 5.1:AI 搜索算法工程选型逻辑决策树
开始:评估实际问题 为结构化约束变量(CSP)? 是 CSP 回溯 + AC-3 否 动作步长代价均相等? 是 内存受限?选 IDS 否 需要代价最优?选 UCS
根据问题的状态表达形式、动作代价特性及硬件内存限制快速选择最优搜索算法。
总结概括:
  1. IDS 是无信息搜索的最佳通用解(结合 BFS 的完备/最优性与 DFS 的低内存耗费)。
  2. CSP 通过将状态解构为变量与约束,利用回溯搜索结合 MRV、LCV 和 AC-3 极大提升了高维状态空间的求解效率。
  3. 在没有领域启发式信息时,算法选型的核心要素在于空间复杂度限制以及动作步长代价是否一致。