状态空间搜索策略
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开始
把S放入OPEN表
OPEN表为空表?
是
失败
否 把第一个节点(n)从OPEN表移至CLOSED表 扩展n,把n的后继节点放入OPEN表 的末端,提供返回节点n的指针
是否有后继节点 为目标节点?
否
是
成功
图3.2 宽度优先算法框图
• 例子 八数码难题(8-puzzle problem)
2 1 7 6 8 3 4 5 1 8 7 6 2 3 4 5
框图见教材)
• 深度优先搜索(Depth-first search ,DFS)
– 在搜索树的每一层始终只扩展一个子结点,不 断地向纵深前进 – 直到不能再前进(到达叶子结点或深度限制), 才从当前节点返回上一级节点,沿另一方向又 继续前进 – 从树根开始一枝一枝逐渐生成的
• 搜索
– 在状态图中寻找目标或路径的基本方法
– 从初始节点,沿着与之相连的边,寻找目标节 点的过程
• 搜索树
– 搜索过程中经过的节点和边,按照原图的连接 关系,便形成一个树形的有向图
• 盲目搜索
– 无向导搜索/穷举式搜索 – 从初始节点,沿连接边逐一考察各个节点,或反 向进行
• 启发式(heuristic)搜索
8 1 3 3 1 4 2 4 6 5 7 6 5
2 8 3 2 8 3 4 7 1 4 7 6 1 5 6 5
图3.4 八数码难题的宽度优先搜索树
• 宽度优先搜索算法
– 宽度优先/横向搜索 – 优点
• 策略是完备的 • 如果有解,肯定找到解,且找到的解是最优解(最短 路径)
– 缺点
• 效率低
3.2.2 深度优先搜索
• 节点深度:
– 根节点深度=0 – 其它节点深度=父节点深度+1
3.2.2 深度优先搜索
定义
首先扩展最新产生的(即最深的)节点。
算法
防止搜索过程沿着无益的路径扩展下去, 往往给出一个节点扩展的最大深度 ——深度界 限。 与宽度优先搜索算法最根本的不同在于: 将扩展的后继节点放在 OPEN 表的前端。 (算法
• 图组成
– 节点 – 有向边
• 图分类
– 或图(直接图、状态图) – 与或图
图搜索过程图
• 图(状态图)搜索策略
OPEN表 节点 父节点编号 编号 CLOSED表 节点 父节点编号
– CLOSED 表:用来记录考察过的节点
• 对树形搜索,存储的是搜索树 • 对线式搜索,存储的是折线
– OPEN表:记录待考察的节点
5
2 8 3 1 4 7 6 5
10
2 8 3 1 6 4 7 5
11
2 8 3 1 6 4 7 5
12
2 8 1 4 3 7 6 5
13
2 8 3 1 4 5 7 6
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 3 1 8 4 7 6 5
2 3 1 8 4 7 6 5
14
8 3 2 1 4 7 6 5
– 利用“启发性信息”引导的搜索
– 启发式信息是与问题有关的有利于尽快找到问题 解的信息或知识
3.1 图搜索策略
• 图(状态图)搜索控制策略 一种在图中寻找路径的方法。 图中每个节点对应一个状态,每条连线对应 一个操作符。这些节点和连线(即状态与操 作符)又分别由产生式系统的数据库和规则 来标记。求得把一个数据库变换为另一数据 库的规则序列问题就等价于求得图中的一条 路径问题。
15
2 8 3 7 1 4 6 5
16
1 2 3 8 4 7 6 5
17
2 3 4 1 8 7 6 5
18
2 8 3 6 4 1 7 5
19
2 8 3 1 6 7 5 4
20
2 8 1 4 3 7 6 5
21
2 8 3 1 4 5 7 6
Leabharlann Baidu
22
8 2 7
23
24
25
26
27
1 2 3 1 2 3 4 7 8 4 8 6 5 7 6 5
• 排序方式不同,对应的搜索算法不同
开始 把S放入OPEN表 是 OPEN表为空表? 否 把第一个节点(n)从OPEN表移至CLOSED表 失败
n为目标节点吗?
否 把n的后继节点放入OPEN表的末 端,提供返回节点n的指针
是
成功
修改指针方向
重排OPEN表 图3.1 图搜索过程框图
3.2 盲目搜索
– 优先在同一级节点中考察,只有当同一级节点 考察完毕之后,才考察下一级节点 – 自顶向下一层一层逐渐生成的
• 宽度优先搜索算法
步1 :把初始节点So放入OPEN表中。 步2 :若OPEN表为空, 则搜索失败,退出。 步3 :取OPEN表中前面第一个节点N放在CLOSED表中, 并冠以顺序编号n。
步4 :若目标节点Sg=N,则搜索成功, 结束。
步5 :若N不可扩展, 则转步2。 步6 :扩展N, 将mj子节点配上指向N的指针依次放入OPEN表尾部, 转步2。
注解:
1. OPEN表是一个队列 2. CLOSED表是一个顺序表,表中各节点按顺序标号,正在被考察的 节点在表中编号最大 3. 如果问题有解,目标点Sg必出现在OPEN表中,算法结束 4. 根据返回指针,在CLOSED表中回溯,得到求解路径
从问题表示到问题的解决,有一个求解的过程。 常见的AI问题求解技术有两种,即“搜索” (Search)和“推理”(Reasoning)方法。 逻辑推理,是通过构造一个逻辑系统,由它可以 从已有的断言(公理)推导出新的断言。并用逻辑 形式语言描述的一组公理来表达问题域。用这种方 法来解决问题就是通过推理来积聚越来越多的断言, 直到获得问题的解答。 虽然问题求解可通过搜索方法,也可用逻辑推理, 但二者的侧重点是不一样的。前者着重于寻求问题 解答的过程,而后者强调前提(初始)问题空间 (公理集合)与问题解答间连接的逻辑正确性。或 者简单地讲,搜索着重于发现(Discovery),而 推理强调证明(Proof)。
• 特点:不需重排OPEN表 • 种类:宽度优先、深度优先、等代价搜索等。
3.2.1 宽度优先搜索
定义
以接近起始节点的程度逐层扩展节点的搜索方法。 特点: 一种高代价搜索,但若有解存在,则必能找到它。 算法
• 广度(宽度)优先搜索 (Breadth-first search, BFS)
(目标状态)
规定:将牌移入空格的顺序为:从空格左边开始 顺时针旋转。不许斜向移动,也不返回先辈节点。 从图可见,要扩展26个节点,共生成46个节点 之后才求得解(目标节点)。
1
2 8 3 1 4 7 6 5
2 6
2 8 3 1 4 7 6 5
3 7 8
2 3 1 8 4 7 6 5
4 9
2 8 3 1 6 4 7 5