6第六讲 第三章(盲目、启发搜索)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、有序搜索
用估价函数 f 来排列OPEN表上的节点。
应用某个算法选择OPEN表上具有最小f 值的节点作为
二、宽度优先搜索
例3.2 八数码问题 操作规定: 允许空格四周上、下、左、右的数码 块移入空格中,不许斜方向移动,不许返回先辈 结点。
1 2 3 8 5 7 4 6
1
4
1 3 8 2 5 7 4 6
2
1 2 3 8 4 5 7 6
3
1 2 3 8 5 7 4 6
5
1 2 3 8 5 7 4 6
深度优先搜索的特点
OPEN表为堆栈,操作是后进先出(LIFO) 深度优先又称纵向搜索。 一般不容易保证找到最优解(如下图所示) 防止搜索过程沿着无益的路径扩展下去,往往 给出一个节点扩展的最大深度——深度界限。
2、有界深度优先搜索
引入搜索深度限制值d,使深度优先搜索具有完备性 。 (1)深度界限的选择很重要 d若太小,则达不到解的深度,得不到解;若太大,既 浪费了计算机的存储空间与时间,降低了搜索效率。由于 解的路径长度事先难以预料,要恰当地给出d的值是比较 困难的。 (2)即使能求出解,它也不一定是最优解。 例3.3:设定搜索深度限制d=5的八数码问题。
4. 搜索过程框图
S0放入OPEN表 是 OPEN表空? 否 将OPEN表中第一个节点(n) 移至CLOSE表 否 n是目标节点? 扩展节点n,把n的后继节点放入 OPEN表末端,提供指向 节点n的指针 修改指针方针,重排OPEN表
失败
是
成功
一、图搜索策略(Graph Search) 5.图搜索方法分析:
3.2 启发式搜索
盲目搜索的不足:效率低,耗费空间与时间。 启发式搜索:利用问题本身特性信息(启发信息) 指导搜索过程。是有序搜索。 一、启发式搜索策略 启发式信息主要用途:
(1)用于确定要扩展的下一个节点,避免盲目扩展。 (2)用于确定应该从搜索树中抛弃或修剪的节点。
估价函数 f (n):估算节点n的希望程度。 f (n)可以是节点n到目标节点的距离;或包括节 点n的路径长度。
B1,77
B3,52
C2,87
C1,96
D1,77
E1,57
E2,92
F1,32
G1,27
H1,51
二、宽度优先搜索
例3.1 从王某家族的四代中找王A的后代且其寿 命为X的人(设X=57)
A,47
搜索8步找到
B2,65
B1,77
B3,52
C2,87
C1,96
D1,77
E1,57
E2,92
F1,32
1 2 3 4 5 8 7 6
16
1 2 3 8 5 6 7 4
17
1 2 8 5 3 7 4 6
18
1 3 5 8 2 7 4 6
19
8 1 3 2 5 7 4 6
20
1 2 3 7 8 5 4 6
21
2 3 1 8 5 7 4 6
22
1 2 8 4 3 7 6 5
23
1 2 3 8 4 7 6 5
有界深度优先搜索示例
有界深度优先算法步骤:
(1)初始结点S放入堆栈OPEN中;
(2)若OPEN为空,则搜索失败,问题无解;
(3)弹出OPEN中栈顶结点n,放入CLOSE表中 ,并给出顺序编号n; (4)若n为目标结点D,则搜索成功,问题有解; (5)若n的深度d(n)=d,则转(2) ; (6)若n无子结点,即不可扩展,转(2) ; (7)扩展结点n,将其所有子结点配上返回n的指 针,并压入OPEN堆栈,转(2) 。
索朝着最有希望的方向进行,搜索效率高。
第三章 搜索技术 搜索分类
盲目搜索
只是可以区分出哪个 是目标状态。 一般是按预定的搜索 策略进行搜索。 没有考虑到问题本身 的特性,这种搜索具 有很大的盲目性,效 率不高,不便于复杂 问题的求解。
启发式搜索
是在搜索过程中加入 了与问题有关的启发 式信息,用于指导搜 索朝着最有希望的方 向前进,加速问题的 求解并找到最优解。
深度优先搜索
例3.1 从王某家族的四代中找王A的后代且其寿 命为X的人(设X=57)
A,47
B2,65
搜索9步找到
B1,77
B3,52
C2,87
C1,96
D1,77
E1,57
E2,92
F1,32
G1,27
H1,51
三、深度优先搜索
节点扩展:最深节点
基本思想
一种自上向下的搜索过程,优 先自己子节点集合中选择下一个 被考察的节点,不断向纵深方向 前进,直到到达叶子节点或受到 深度限制时,才返回到上一级节 点沿另一方向继续前进。 与宽度优先搜索算法根本不同 在于:将扩展的后继节点放在 OPEN表的前端(LIFO)。
F1,32
B2,65
E1,57
E2,92
G1,27
H1,51
一、 图搜索策略
例3.1 从王某家族的四代中找王A的后代且其寿 命为X的人(设X=57) 搜索目标 搜索空间 搜索策略
A,47
B1,77
B3,52
B2,65
C2,87
C1,96
D1,77
E1,57
E2,92
F1,32
G1,27
宽度优先搜索的特点:
OPEN表是一个队列,先进 先出(FIFO)。CLOSED 表是一个顺序表,表中各 节点按顺序编号,正被考 察的节点在表中编号最大 。
宽度优先搜索的特点:
宽度优先搜索又称为广度优先或横向搜索。 宽度优先策略是完备的, 即只要问题的解存 在,则一定可以找到最优解。 宽度优先搜索策略与问题无关,具有通用性。 缺点搜索效率低。
A,47 B2,65
B3,52
D1,77
E1,57
E2,92
G1,27
H1,51
宽度优先搜索示意图
OPEN表 节点 A B1 B3 父节点 NULL A A 1 2 3 CLOSE表 编号 节点 父节点 A B1 B3 NULL A A
B2
C2 C1 D1 E1 E2
A
B1 B1 B3 B2 B2
6
1 2 3 8 4 5 7 6
7
1 2 3 8 4 5 7 6
8
1 2 3 8 5 6 7 4
9
1 2 8 5 3 7 4 6
10
1 3 8 2 5 7 4 6
11
1 3 8 2 5 7 4 6
12
1 2 3 7 8 5 4 6
13
2 3 1 8 5 7 4 6
14
1 2 3 8 4 7 6 5
15
C2,87 C1,96
D1,77 E1,57H1,51
第三章 搜索技术
搜索分类
1、盲目式摸索:无信息搜索,搜索时按规定顺 序逐个考察节点,直到找到目标。通用性强,但
效率低;适用于简单树状结构问题。
包括:宽度优先、深度优先、等代价搜索
2、启发式搜索:用到自身的某些信息,指导搜
G1,27
H1,51
3.1 盲目搜索
二、宽度优先搜索
宽度优先搜索 搜索是以接近起始节点的程 度依次扩展节点。 B1,77 宽度优先搜索的基本思想 深度优先搜索是严格按节点 在树中的出现位置一层一层向 C2,87 C1,96 下的搜索过程。 通过将OPEN表设计为一个 队列来实现,将新生成的子节 F1,32 点放在OPEN表的后面,保证 先生成的节点先考察(FIFO) 。
深度优先搜索
1 2 3 8 5 7 4 6
1
2
1 2 3 8 5 7 4 6 1 3 8 2 5 7 4 6 1 2 3 8 5 7 4 6 1 2 3 8 4 5 7 6
3
1 2 3 8 4 5 7 6 1 2 3 8 4 5 7 6
4
1 2 3 8 4 7 6 5
5
1 2 8 4 3 7 6 5 1 2 3 8 4 7 6 5
本章内容
3.1 3.2 3.3 3.4 3.5 3.6 盲目搜索 启发式搜索 博弈树搜索 遗传算法 模拟退火算法 免疫算法
一、 图搜索策略
例3.1 从王某家族的四代中找王A的后代且其寿 命为X=57的人
王A:寿命47,有儿子王B1、王B3、王B2 王B1:寿命77,有儿子王C1、王C2 A,47 王B3:寿命52,有儿子王1 王B2:寿命65,有儿子王E1、王E2 王C1:寿命96 B3,52 王C2:寿命87,有儿子王F1 B1,77 王D1:寿命77,没有儿子 王E1:寿命57,有儿子王G1 王E2:寿命92,有儿子王H1 C2,87 C1,96 D1,77 王F1:寿命32 王G1:寿命27,没有儿子 王H1:寿命51
(1)策略:各种搜索策略的 区别主要体现在OPEN表排序准 则的不同。 (2)成功:每当扩展节点为 目标节点时,宣告成功结束。这 时,能够重现这条成功路径, (3)失败:当搜索树不再剩 有未被扩展的端节点时,过程就 以失败告终。在失败终止的情况 下,从起始节点出发,一定达不 到目标节点。
A,47 B2,65
A,47
A
一、图搜索策略
3.图搜索的一般过程
。 (6) 扩展节点n,生成后继节点
B1,77 B3,52 A,47
B2,65
(7) 把n的后继节点放入OPEN 表的末端,提供返回节点n的指针 (8) 按某一任意方式或按某个探 试值,重排OPEN表。 (9) GO LOOP。
B1 B2 B3
A
开始 3.1 盲目搜索
3.图搜索的一般过程
(1) 建立一个只含有起始节点S 的搜索图G,把S放到OPEN表中 。 (2) 建立一个CLOSED表,其 初始为空表。 (3) LOOP:若OPEN表是空表 ,则失败退出。
A,47
A
一、图搜索策略
3.图搜索的一般过程
(4) 选择OPEN表上的第一个节 点,把它从OPEN表移出并放进 CLOSED表中。称此节点为节点 n。 (5) 若n为一目标节点,则成功 退出。此解是搜索图G中沿着指 针从n到S这条路径而得到的(指针 在第7步中设置)。
C2
4
B2
A
A
B1
B3
B2
C1
D1
E1
E2
搜索图(搜索树)
二、宽度优先搜索
宽度优先搜索算法
(1) 把起始节点放到OPEN表中(如果该起始节点为一目标 节点,则求得一个解答)。 (2) 如果OPEN是空表,则没有解,失败退出;否则继续。 (3) 把第一个节点(节点n)从OPEN表移出,并把它放入 CLOSED的扩展节点表中。 (4) 扩展节点n。若没有后继节点,则转向第(2)步。 (5) 把n的所有后继节点放到OPEN表的末端,并提供从这 些后继节点回到n的指针。 (6) 如果n的任一个后继节点是个目标节点,则找到一个解 答,成功退出;否则转向第(2)步。
F1 C2 B1 C1
D1 B3 E1 A B2 E2
C2 B1 A B1
B3 A B2 NULL A B2 B1 C2 F1 C1 B3 D1 B2 E1 E2 A
搜索图(搜索树)
1、深度优先算法步骤:
(1) 初始结点S放到未扩展节点OPEN中;
(2) 若OPEN为空,则搜索失败,问题无解; (3) 弹出OPEN表中最顶端结点放到CLOSE表中 ,并给出顺序编号n; (4) 若n为目标结点D,则搜索成功,问题有解; (5) 若n无子结点,转(2); (6) 扩展n结点,将其所有子结点配上返回n的指 针,并按次序压入OPEN堆栈,转(2) 。
人工智能技术
第三章 搜索技术
课程主要内容
第一章 绪论
第二章 知识表示 第三章 搜索技术
第四章 推理技术
第五章 机器学习
第六章 专家系统
第三章 搜索技术
搜索概念 搜索:搜索什么?在哪 里搜索?适用范围? 在状态空间,寻找一条 从初始节点到目标节点 的路径。
B1,77 A,47 B3,52 B2,65
B1,77
A,47 B2,65
B3,52
C2,87
C1,96
D1,77
E1,57
E2,92
F1,32
G1,27
H1,51
深度优先搜索示意图
CLOSE表
OPEN表
节点 父节点
编号 节点 父节点
1 2 3 4 5 6 7 8 A B1 C2 F1 C1 B3 D1 B2 NULL A B1 C2 B1 A B3 A
2. 搜索树 搜索过程中经过(考 察过)的节点和边,按原 图的连接关系,所构成一 个树型的有向图,称为搜 索树。 搜索树是一个搜索过 程的搜索轨迹,或称之为 搜索空间。
A,47 B2,65
B1,77
B3,52
C2,87
C1,96
D1,77
E1,57
E2,92
F1,32
G1,27
H1,51
一、图搜索策略
H1,51
3.1 盲目搜索
一、 图搜索策略—在图中寻找路径的方法
1. 两种数据结构
(1)OPEN表 存放已生成但还没考察的节点,即待考察 节点。 (2)CLOSED表存放考察过的节点,以及节点之间的关 系,如每个节点指向父节点的编号(返回指针)。 CLOSED表中存放的就是一定搜索策略下的搜索树。