第3章 图搜索与问题求解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1.2 状态图搜索



搜索:从初始节点出发,沿着与之相连的边试探 地前进,寻找目标节点的过程。 搜索过程中经过的节点和边,按原图的连接关系, 便会构成一个树型的有向图,这种树型有向图称 为搜索树。 搜索进行中,搜索树会不断增长,直到当搜索树 中出现目标节点,搜索便停止。这时从搜索树中 就可很容易地找出从初始节点到目标节点的路径 (解)来。
步5 扩展N,选取其一个未在CLOSED表中出现过的
子节点N1放入 CLOSED表中,令N=N1,转步3。
3.1.2 状态图搜索

可回溯的线式搜索
步1 把初始节点S0放入CLOSED表中; 步 2 令 N = S0 ; 步3 若N是目标节点,则搜索成功,结束。 步4 若N不可扩展,则移出CLOSED表中的末端节点Ne ,若Ne=S0, 则搜索失败,退出。否则以CLOSED表新的末端节点Ne作为 N,即令N= Ne,转步4; 步5 扩展N,选取其一个未在CLOSED表中出现过的子节点N1放入 CLOSED表中,令N= N1 ,转步3。
6
8 3 2 1 4 7 6 5
7
2 8 3 7 1 4 6 5
8
2 3 1 8 4 7 6 5
9
2 3 1 8 4 7 6 5
10
2 8 1 4 3 7 6 5
11
2 8 3 1 4 5 7 6
12
2 8 3 1 6 4 7 5
13
2 8 3 1 6 4 7 5
14
8 3 2 1 4 7 6 5
15
图搜索技术是人工智能中的核心技术之一。
3.1.1 状态图
例3.1走迷宫
走迷宫问题就是从该有向图的初始节点出发,寻找目 标节点的问题,或者是寻找通向目标节点的路径问题。
3.1.1 状态图
例3.2八数码难题(重排九宫问题)
2 8
1 7 6
3
4 5
1 8 7
2 6
3 4 5
初始棋局
目标棋局
棋局作为节点,相邻节点通过移动数码一个一个产生 出来,所有节点由它们的相邻关系连成一个有向图。 以上两个问题抽象来看,都是某个有向图中寻找目标 或路径的问题,在人工智能技术中,把这种描述问题 的有向图称为状态空间图,简称状态图。
CLOSED
26
3.1.3 穷举式搜索

广度优先搜索的特点



广度优先中 OPEN表是一个队列, CLOSED表是一 个顺序表,表中各节点按顺序编号,正被考察的节 点在表中编号最大。 广度优先策略是完备的,即如果问题的解存在,则 它一定可以找到解,并且找到的解还是最优解。 广度优先搜索策略与问题无关,具有通用性。 缺点搜索效率低。
2 8 3 7 1 4 6 5
16
2 3 4 1 8 7 6 5
17
1 2 3 8 4 7 6 5
18
2 8 1 4 3 7 6 5
19
2 8 3 1 4 5 7 6
20
2 8 3 6 4 1 7 5
21
2 8 3 1 6 7 5 4
22
8 3 2 1 4 7 6 5
23
8 1 3 2 4 7 6 5
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
A B C D A
CLOSED
22
广度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
A B C D E F A B
CLOSED
23
广度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
A B C D E F G H A B C



盲目搜索 无向导的搜索,树式盲目搜索就是穷举搜索,不 回溯的线式搜索是随机碰撞式搜索,回溯的线式搜 索也是穷举式搜索。 启发式搜索 是利用“启发性信息”引导的搜索策略。“启发 性信息”就是与问题有关的有利于尽快找到问题解 的信息或知识。启发式搜索分为不同的策略,如全 局择优,局部择优,最佳图搜索。 按扩展顺序不同分为广度优先和深度优先。
八数码广度优先搜索
3.1.3 穷举式搜索

深度优先搜索

搜索策略
在搜索树的每一层始终先扩展一个子节点,不断地向纵深前进, 直到不能再前进,才从当前节点返回到上一级节点,从另一方向 继续前进。

开始 把S0送入OPEN表
OPEN表空 ? N 把OPEN表的第一个节 点(节点N)从表中移 出,放入CLOSED表中
3.1.3 穷举式搜索

八数码问题
2 8 3 1 4 7 6 5 8 1 3 2 4 7 6 5
初始状态
目标状态
3.1.3 穷举式搜索
2 8 3 1 4 7 6 5
1 4
2 8 3 1 4 7 6 5
2
2 8 3 1 4 7 6 5
3
2 3 1 8 4 7 6 5
5
2 8 3 1 6 4 7 5
(1)删除N的先辈节点(如果有的话)。
(2)对已存在于OPEN表中的节点(如果有的话)也删除 之;删除之前要比较其返回初始节点的新路径与原路 径,如果新路径“短”,则修改这些节点在 OPEN 表中 的原返回指针,使其沿新路径返回。
( 3 )对已存在于 CLOSED 表的节点,作与( 2 )同样的处 理,并且将其移出 CLOSED 表,放入 OPEN 表中重新扩展 。
LOGO
第 3章 图搜索与问题求解
主讲:李 辉
Email:lihui@qust.edu.cn
第3章 图搜索与问题求解
主要内容
3.1 状态图搜索 3.2 状态图搜索问题求解 3.3 与或图搜索 3.4 与或图搜索问题求解 3.5 博弈树搜索
3.1 状态图搜索-搜索与求解
• 搜索是人工智能技术中进行问题求解的基本技术,不管是 符号智能还是计算智能,最终往往都归结为某种搜索,用 某种搜索算法去实现。 • 图搜索模拟的是人脑分析问题、解决问题的过程,是基于 领域知识的问题求解技术。计算智能是借鉴或模拟某些自 然现象或生命现象而实现的搜索和问题求解技术。
3.1.3 穷举式搜索


广度优先搜索
策略
始终在同一级节点中考查,当同一级节点考查完了之 后,才考查下一级节点。搜索树自顶向下一层一层逐 渐生成。

算法
开始 把S0送入OPEN表
OPEN表空 ? N 把OPEN表的第一个节 点(节点N)从表中移 出,放入CLOSED表中
节点N为目标节点? N N 节点N可扩展? Y Y
O
I
J
Q
N
P
U
R
OPEN
A
CLOSED
深度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
D C B A
CLOSED
深度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
J I C B A D
CLOSED
深度优先搜索
B C G M
A
D
E
K S L T
F
图 3-5 修改返回指针示例
3.1.2 状态图搜索

树式搜索例

对于已存在于OPEN表中的节点(如果有的话)也删除之;删 除之前要比较其返回初始节点的新路径与原路径,如果新路 径短,则修改这些节点在OPEN表中的原返回指针,使其沿原 路径返回。
S0 Path2
Path1
如图所示:说明从 S0→P 至 少有两条路,这时有两 种情况: f ( Path2 ) < f ( Path1 ), 当前路径较好,要修改P 的指针,使其指向 n,即 搜索之后的最佳路径。 否则,原路径好。
2 8 3 1 4 7 6 5 2 8 3 1 4 7 6 5 2 3 1 8 4 7 6 5
1 2
2 8 3 1 4 7 6 5 2 8 3 1 6 4 7 5
3
2 8 3 1 6 4 7 5 2 8 3 1 6 4 7 5
4
2 8 3 1 6 7 5 4
5
2 8 3 1 6 7 5 4 2 8 1 6 3 7 5 4
m P P在n之前已是某一节点m的后继 先扩展
n 后扩展
3.1.2 状态图搜索

对已存在于CLOSED表的节点,作与(2)同样的处理,并将 其移出CLOSED表,放入OPEN表中重新扩展。
S0
过去对Ps的 n 最优路径 k
现在生成 P的路径 m
过去生成 P的路径 b.P在Closed表中,说明P的后
3.1.2 状态图搜索
3 搜索算法


搜索的目的是为了寻找初始节点到目标节点的路径, 搜索过程中就得随时记录搜索轨迹。 ClOSED表动态数据结构来记录考察过的节点。 OPEN表的动态数据结构来专门登记当前待考查的节 点。
CLOSED表
OPEN表
节点 父节点编号
编号
节点
父节点编号
3.1.2 状态图搜索
Y
失败,退出
成功,退出
扩展节点N,将其子节 点放入OPEN表尾部, 并为每个子节点配置 指向节点N的指针。
广度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
CLOSED
广度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
A
CLOSED
广度优先搜索
B C G M
H
O
I
J
Q
N
P
U
R
OPEN
R I C B A D J
CLOSED
3.1.3 穷举式搜索

深度优先搜索的特点

OPEN表为一个堆栈。 深度优先又称纵向搜索。 一般不能保证找到最优解。 当深度限制不合理时,可能找不到解,可以将算法 改为可变深度限制,即有界深度优先搜索。
3.1.3 穷举式搜索
节点N为目标节点? N N 节点N可扩展? Y Y
算法
Y
失败,退出
成功,退出
扩展节点N,将其子节 点放入OPEN表首部, 并为每个子节点配置 指向节点N的指针。
深度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
CLOSED
深度优先搜索
B C G M
A
D
E
K S L T
F
H
CLOSED
24
广度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
A B C D E F G H I J A B C D
CLOSED
25
广度优先搜索
B C G M
A
D
E
K S L T
F
H
O
I
J
Q
N
P
U
R
OPEN
A B C D E F G H I J K L A B C D E


启发函数是用来估计搜索树节点x与目标节点接近 程度的一种函数,通常记为h(x)。 定义启发函数的参考思路



一个节点到目标节点的某种距离或差异的量度。 一个节点处在最佳路径上的概率 根据主观经验的主观打分等。

树式搜索算法
步1
步2
把初始节点S0放入OPEN表中。
若OPEN表为空,则搜索失败,退出。
步 3 取 OPEN 表中第一个节点 N 放在 CLOSED 表中; 并冠以顺序编号n; 步4 若目标节点Sg=N,成功退出。
步5
若N不可扩展,转步2。
步6 扩展N,生成一组节点,对这组子节点作如 下处理:
3.1.2 状态图搜索
a.P在n之前已是某一节点m的 后继,所以需要做如同(2) 同样的处理,如图右部所示。 继也在n之前已经生成,称为 Ps。对Ps而言同样可能 由于 n→P这一路径的加入,又必 须比较多条路径之后而取代价 小的一条,如图左部所示。
Ps
P
3.1.2 状态图搜索
例:设当前搜索图和搜索树如图所示
S0
S0
n
( 4 )对其余子节点配上指向 N 的返回指针后放入 OPEN 表 中某处,或对OPEN表进行重新排序,转步2。
3.1.2 状态图搜索

树式算法的几点说明


返回指针指的是父节点在CLOSED表中的编号。 步6中修改指针的原因是返回初始节点的路径有两 条,要选择“短”的那条路径。 这里路径长短以节点数来衡量,在后面将会看到以 代价来衡量。按代价衡量修改返回指针的同时还要 修改相应的代价值。
3.1.2 状态图搜索
1 搜索方式

wk.baidu.com
树式搜索 在搜索过程中记录所经过的所有节点和边。树式搜 索所记录的轨迹始终是一棵树,这棵树也就是搜索过 程中所产生的搜索树。 线式搜索 在搜索过程中只记录那些当前认为在所找路径上的 节点和边。

不回溯线式搜索 可回溯线式搜索
3.1.2 状态图搜索
2 搜索策略
八数码深度优先搜索

3.1.4 启发式搜索
• 启发式搜索的目的 利用知识来引导搜索,达到减少搜索范围,降低问题复 杂度。 • 启发性信息的强弱 强:降低搜索的工作量,但可能导致找不到最优解。 弱:一般导致工作量加大,极限情况下变为盲目搜索, 但可能可以找到最优解。
3.1.4 启发式搜索

启发函数
n
F
P
F
P
m
Ps Ps’ Ps Ps’
m
3.1.2 状态图搜索

若启发函数f(n)为从 S0到节点n的最短路径的长度,用 边的数目来考察,当前扩展的节点是搜索图中的n,P是 n的后继
S0 S0
n
n
F
F P m Ps’ P m Ps’
Ps
Ps
3.1.2 状态图搜索

不回溯线式搜索算法
步1 把初始节点S0放入CLOSED表中; 步2 令N= S0 ; 步3 若N是目标节点,则搜索成功,结束。 步4 若N不可扩展,则搜索失败,退出。
相关文档
最新文档