当前位置:文档之家› 图搜索—图搜索策略

图搜索—图搜索策略

第三章 搜索推理技术
问题:知识表示有那些方法?知识表示的目的是
什么?构建智能系统的关键是什么?
3.1 图搜索策略 3.2 盲目搜索 3.3 启发式搜索
1
3.1 图搜索策略
思考:状态空间法的基本特点?基本推理方法?其 求解结果是什么?简单回顾实例:猴子与香蕉。
2
3.1 图搜索策略
用一个四元表列(W,x,Y,z)表示这个问题状态
7
3.1 图搜索策略
6)扩展节点n,同时生成不是n的祖先的那些后继节点的 集合M。把M的这些成员作为n的后继节点添入图G中。 7)对那些未曾在G中出现过的M成员设置一个通向n的指 针。把M的这些成员加进OPEN表。对已经在OPEN或 CLOSED表上的每一个M成员,确定是否需更改通到n的 指针方向。对已在CLOSED表上的每个M成员,确定是 否需要更改图G中通向它的每个后裔节点的指针方向。 8)按某一任意方式或按某个探试值,重排OPEN表。 9)GO LOOP。
提出:盲目搜索与启发式搜索。
10
3.2
盲目搜索
盲目搜索又叫做无信息搜索,一般只适用于求解比较 简单的问题。
– 特点:不需重排OPEN表; – 种类:宽度优先、深度优先、等代价搜索等。
3.2.1 宽度优先搜索(Breadth-first)
定义:
以接近起始节点的程度逐层扩展节点的搜索方法。
3.3 启发式搜索 开始
把S放入OPEN表, 计算估价函数 f (s)
OPEN表为空表?

失败
否 选取OPEN表中f值最小的节点i放入CLOSED表
i为目标节点吗?

成功
否 扩展i,得后继节点j,计算f(j),提供返回 节点i的指针,利用f(j)对OPEN表重新排 序,调整亲子关系及指针
图3.9 有序搜索算法框图
是 是否有后继节点 成功 为目标节点? 否 图3.2 宽度优先算法框图
思考:与原始算法比较异同,宽度优先的体现?
14
3.2 盲目搜索
例子 八数码难题(8-puzzle problem)
2 1 8 3 4 1 8 2 3 4
7 6
5
7 6
5
(初始状态)
(目标状态)
规定:将牌移入空格的顺序为:从空格左边 开始顺时针旋转。不许斜向移动,也不返回 先辈节点。从图可见,要扩展26个节点,共 生成46个节点之后才求得解(目标节点)。
图3.8 等代价搜索算法框图
23
3.3 启发式搜索
思考: (1)图搜索方法的基本步骤? (2)宽度优先、深度优先、等代价方法的特点? (3)盲目搜索的缺点?
基本步骤:初始化,判断OPEN表是否为空,选择节点n,判断n是否 目标节点,扩展节点n,重排OPEN表、调整指针,循环。
各自特点:重排OPEN表的依据不同。
27
3.3 启发式搜索
八数码难题
(1)估价函数设置: f(n) = d(n) + W(n)
d(n): 节点n的深度; W(n):错放的棋子数
(2)如下的八数码难题(8-puzzle problem)
2 8 1 6 7
3 4 5
1 2 8 7 6
3 4 5
(初始状态)
(目标状态)
(3)八数码难题的有序搜索树见下图:
思考:如何动态计算g(i)?
22
开始
把S放入OPEN表 S是否目标节点? 否 令g(s)=0 OPEN表为空表? 否 是
3.2 盲目搜索
成功

失败
把具有最小g(i)值的节点i从OPEN表 移至CLOSED表
是否有后继节点 为目标节点?


成功
扩展i,计算其后继节点j的g(j), 并把后继节点放入OPEN表
(2)
OPEN CLOSED
9
3.1 图搜索策略
图搜索的生成结果:
– 搜索图(G) – 搜索树(T)
修正算法:
– 一次只生成一个后继节点;
思考:
– (1)结果路径的形成中,为什么其节点顺序是明确的? – (2)OPEN表中的节点具有什么特点?
– (3)CLOSED表中的节点具有什么特点?
– (4)对OPEN表节点的排序有何意义?
– g 的一个选择就是搜索树中从 S 到 n 的这段路径的代价;显然有 g(n)≥ g*(n); – h 的依赖于领域的启发信息,比如八数码问题中的 W(n), h 称为 启发式函数;
有序搜索(Ordered Search)
– 总是选择“最有希望”的节点作为下一被扩展节点
估价函数(Evaluation Function)
– 为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方 法,以便确定哪个节点最有可能在通向目标的最佳路径上 。 f(n)——表示节点n的估价函数值
8
开始
3.1 图搜索策略
(1) (3)
把S放入OPEN表
(4)
是 OPEN表为空表? 失败 否 把第一个节点(n)从OPEN表移至CLOSED表
(5) (6) (7)
n为目标节点吗?

成功
否 把n的后继节点放入OPEN表的 末端,提供返回节点n的指针
(7) (9) (8)
(1)
修改指针方向
重排OPEN表 图3.1 图搜索过程框图 宽度优先
猴子和香蕉问题的状态空间图
提问:人工搜索求解的解答?
4
3.1 图搜索策略
猴子和香蕉问题自动演示:

香蕉
Ha!Ha!
箱子
猴子
思考:计算机的搜索策略?
5
3.1 图搜索策略
图搜索控制策略:一种在图中寻找路径的方法。
– 图中每个节点对应一个状态; – 每条连线对应一个操作符。
用产生式系统的数据库和规则来标记:
17
3.2 盲目搜索
深度优先搜索示意图
S
L M N F
18
O F P F Q F
3.2 盲目搜索 开始
把S放入OPEN表
OPEN表为空表?

失败
否 把第一个节点(n)从OPEN表移至CLOSED表 节点n的深度等于最大深度? 否
扩展n,把n的后继节点放入OPEN 表的前端,提供返回节点n的指针
是 是否有后继节点 成功 为目标节点? 否 图3.6 深度优先算法框图
实质:选择OPEN表上具有最小 f 值的节点作为下 一个要扩展的节点。
Nilsson(尼尔逊)方法:一个节点的“希望” 越大,则其 f 值越小。被选择的节点是估价函数最 小的节点。
思考:如果把宽度优先、深度优先、等代价搜索方法作 为有序搜索的特例,那么它们的 f 函数如何计算? 举例示范。
26
算法
15
3.2 盲目搜索
16
3.2 盲目搜索
3.2.2 深度优先搜索(Dephth-first)
定义:
首先扩展最新产生的(即最深的)节点。
特点: 防止搜索过程沿着无益的路径扩展下去,往往给 出一个节点扩展的最大深度——深度界限。
与宽度优先搜索算法最根本的不同在于:将扩展 的后继节点放在OPEN表的前端。
盲目搜索可能带来组合爆炸。
启发式信息:用来加速搜索过程的问题领域信息,一般与有关问题
具体领域背景有关,不一定具有通用性。
启发式搜索:利用启发式信息的搜索方法
– 特点:重排OPEN表,选择最有希望的节点加以扩展
– 种类:有序搜索、A*算法等
24
3.3 启发式搜索
3.3.1 启发式搜索策略和估价函数
– 初始节点————初始数据库;
– 目标节点————目标数据库;
– 状态图的一条路径问题————求得把一个数据库变换为另一
数据库的规则序列问题。
图搜索过程(GraphSearch)
6
ห้องสมุดไป่ตู้
3.1 图搜索策略
图搜索的一般过程如下:
1)建立一个只含有起始节点S的搜索图G,把S放到一个 叫做OPEN 的未扩展节点表中。 2)建立一个叫做CLOSED的已扩展节点表,其初始为空 表. 3)LOOP:若OPEN表是空表,则失败退出。 4)选择OPEN表上的第一个节点,把它从OPEN表移出 并放进CLOSED表中。称此节点为节点n 5)若n为一目标节点,则有解并成功退出,此解是追踪 图G中沿着指针从n到S这条路径而得到的(指针将在第7步 中设置)。
19
3.2 盲目搜索
示范:有界深度(4)优先的八数码问题深度优先 搜索树?
2 1 7 8 6 3 4 5 1 8 7 2 6 3 4 5
(初始状态)
(目标状态)
20
3.2 盲目搜索
21
3.2 盲目搜索
3.2.3 等代价搜索
定义 是宽度优先搜索的一种推广,不是沿着等长度路 径断层进行扩展,而是沿着等代价路径断层进行扩展。 搜索树中每条连接弧线上的有关代价,表示时间、 距离等花费。 算法 在等价搜索算法中,把从节点i到其后续节点j的连 接弧线记为c(I,j),把从起始节点S到任一节点I的路径代 价记为g(i)。在搜索树上,假设g(i)也是从起始节点S到 节点的最少代价路径上的代价。
思考: (1) f 不能识别某些节点的真实“希望”值会怎么样?
(2) f 过多估计了全部节点又会怎么样?
30
3.3 启发式搜索
3.3.3 A*算法
思考:经过节点n的最佳路径,怎么表示?怎么求 解最优解答路径。
估价函数f* :对节点n定义f*(n)=g*(n)+h*(n) ,表示从S开始通 过节点n的一条最佳路径的代价。其中g*(n)表示从起始节点S 到n的最佳路径,h*(n)表示从n到某目标节点的最佳路径。 估价函数f :f(n)=g(n)+h(n); 其中g是g*的估计 ,h是h*的 估计;
相关主题