人工智能现代方法学习笔记(3):搜索
第三章:搜索
当我们要采取的正确动作不太明显的时候,智能体可能需要提前规划:考虑一个形成通往目标状态的路径的动作序列。这样的只能提交做 问题求解型智能体 problem-solving agent,这个过程叫做 搜索 search
一、问题求解智能体
如果智能体没有额外信息,也就是说环境是未知的,那么智能体智能随机选择一个动作。在这里,我们认为我们的智能体总是能够访问与世界相关的信息,智能体可以执行以下四个阶段的问题求解:
- 目标形式化 goal formulation
- 问题形式化 problem formulation
- 搜索 search
- 执行 execution
一个重要的性质是,在一个完全客观测的、确定的、已知的环境中,任何问题的解都是一个固定的动作序列。如果模型是正确的,那么一旦智能体找到了一个解,他在执行动作的时候就可以忽略感知哐哐做就行了。控制理论家称之为 开环 open-loop 系统。如果模型有的时候不一定政策,那么使用监控感知的 闭环 closed-loop 系统更好。
搜索问题的形式化定义如下:
- 状态空间 state space:可能的环境状态的集合
- 初始状态 initial state:智能体启动时的状态
- 一个或多个 目标状态 goal state 的集合
- 行动 action
- 转移模型 transition model:描述每个动作所起到的作用
- 动作代价函数 action cost function:给出状态转移的数值代价
一个动作序列形成一条 路径 path,而 解 solution 是一条从初始状态到某个目标状态的路径。最优解 optimal solution 是代价最小的那个解。状态空间可以用 图 graph 表示。
二、搜索算法
注:本节所有算法均可以在 OI Wiki 查询到更为详细的解释。这里只是列一个提纲
1. 广度优先搜索 breadth-first search, BFS
2. Dijkstra / 一致代价搜索 uniform-cost search
3. 深度优先搜索 depth-first search, DFS
4. 迭代加深搜索 iterative deepening search / 深度受限搜索 depth-limited search
5. 双向搜索 bidirectional search
6. A* 搜索 A* search
7.迭代加深搜索 iterative-deepening A* search, IDA*
8. 递归最佳优先搜索 recursive best-first search, RBFS
启发式搜索算法的性能取决于启发式函数的质量。我们有时候可以通过松弛问题定义、在模式数据库中储存计算子问题的代价、定义地标点,或者从问题类的经验中来构建更好的函数