第三章启发式搜索
AI实验3-启发式搜索
1
3实验三 启发式搜索
内容:
1 以8数码或15数码为例,实现其A 算法求解程序。
2 写出实验报告:包括做实验的目的、方法、过程等;分析估价函数对搜索算法的影响,画出A 算法流程图,根据A 算法分析启发式搜索的特点。
(一)实验名称:
启发式搜索
(二)目的:
熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A 算法求解N 数码难题,理解求解流程和搜索顺序。
(三)原理:
A 算法是一种有序搜索算法,其特点在于对估价函数的定义上。
对于一般的有序搜索,总是选择f 值最小的节点作为扩展节点。
因此,f 是根据需要找到一条最小代价路径的观点来估算节点的,所以,可考虑每个节点n 的估价函数值为两个分量:从起始节点到节点n 的代价以及从节点n 到达目标节点的代价。
(四)步骤:
(五)实验结果与分析:
八数码问题
估价函数为:f (n ) = g (n ) + h (n
)
其中: g(n):节点n的深度
h(n):节点n中错放的棋子个数
相同值时,后扩展的节点放在前面;带圆圈的数字表示估价函数的值不带圆圈的数字表示扩展顺序。
2。
人工智能习题作业搜索策略I习题答案
⼈⼯智能习题作业搜索策略I习题答案第三章搜索策略课后习题及答案⼀、选择题:1. 启发式搜索中,通常OPEN表上的节点按照它们f函数值的_____顺序排列。
( D )A平均值 B 递减 C 最⼩ D递增2. 按尼尔逊(Nilsson)提出的有序搜索基本算法指出,⼀个节点的希望程度⼤,则f值_____。
( B )A 不变化B ⼩C ⼤D 为03. 如果重排OPEN表是依据f(x)=g(x)+h(x)进⾏的,则称该过程为_____。
( B )A A*算法B A算法 C有序搜索 D启发式搜索4. 在与或树和与或图中,我们把没有任何⽗辈节点的节点叫做_____。
( C )A 叶节点 B端节点 C根节点 D 起始节点5. 对于⼋数码问题:起始棋局 —> ⽬标局棋2 83 1 2 31 6 4 8 47 5 7 6 5取h(n)=W(n), W(n)⽤来计算对应于节点n的数据库中错放的棋⼦个数。
请问需要扩展多少个节点才能到达⽬标?( C )A 20B 13C 6D 116. α-β剪枝技术中,⼀个MIN节点的β值等于其后继节点当前()的最终倒推值。
( A )A 最⼩B 最⼤C 平均D α值7. α-β剪枝技术中,“或”节点n的α值如果不能降低其⽗节点的β值,则对节点n以下的分枝可停⽌搜索,并使节点n的倒推值为α。
这种剪枝称为_____。
( A )A β剪枝B α剪枝C α-β剪枝 D极⼩极⼤分析法8. 宽度优先搜索⽅法能够保证在搜索树中找到⼀条通向⽬标节点的_____途径(如果有路径存在时)。
( B )A 可⾏B 最短C 最长D 解答9. A*算法是⼀种_____。
( ABD )A 图搜索策略B 有序搜索算法C 盲⽬搜索D 启发式搜索10. 应⽤某个算法(例如等代价算法)选择OPEN表上具有最⼩f值的节点作为下⼀个要扩展的节点。
这种搜索⽅法的算法就叫做_____。
( C )A 盲⽬搜索B 深度优先搜索C 有序搜索算法D 极⼩极⼤分析法⼆、填空题:1. OPEN表⽤于存放未扩展的节点,CLOSED表存放_已扩展_的节点。
启发式搜索(共49张PPT)
其中:g(x)——从初始节点S0到节点x的实际代价; h(x)——从x到目标节点Sg的最优路径的评估代价,它体现了问
题的启发式信息,其形式要根据问题的特性确定,h(x)称为启发式 函数。
2022/10/14
6
评估函数
启发式方法把问题状态的描述转换 成了对问题解决程度的描述。
这一程度用评估函数的值来表示。
2022/10/14
7
评估函数
S
搜索图G
2022/10/14
n ng
初始状态节点S
f(n):s-n-ng的估计最小路径代价
g(n):s-n的实际路径代价 h(n): n-ng的估计最小路径代价
节点n
目标状态节点ng
8
启发式搜索A算法
A算法的设计与一般图搜索相同,划分为二个阶段:
IF f(ni)>f(n,ni) THEN 令f(ni)=f(n,ni)
修改指针指向新父结点n
排序OPEN表(f(n)值从小到大排序)
2022/10/14
10
2022/10/14
4功指1搜 未做.若.退针建扩C索nL出从立为展图O,n一S一节到GE个此,目的把点S只这解标已S表放条包是扩节中路到含追展点;径一节起踪,建而个点始图则立得叫表节G有一到中O,点解P个的沿其ES成N叫;的初着的
始为空表;
5.扩展节点n,同时生成不是n的 祖 M2出的.先若;这的OP些那EN成些表员子是作节空为点表n,的的则集后失合继败节M,退点把 添入搜索图G中;对于M中每个 子3把 表.节选中它点f择(,从nnO,称nOi,P计iP)E此EN=算N表节g表:(n上点移,n为的出i) +节并第h放点一(n进in)个;C节LO点SE,
6第六讲 第三章(盲目、启发搜索)
二、有序搜索
用估价函数 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 启发式搜索
盲目搜索的不足:效率低,耗费空间与时间。 启发式搜索:利用问题本身特性信息(启发信息) 指导搜索过程。是有序搜索。 一、启发式搜索策略 启发式信息主要用途:
3.4-启发式搜索
循环2 OPEN:={a6 OPEN:={d5 c6 e5
d d5 a6
e e5 c6 i} i6} CLOSE:={s4
b4}
2014-7-1
19
1 0 3 7 2 4s ( 4) 6 8 5
1 3 0 7 2 4a (6) 6 8 5 1 2 3 0 7 4d (5) 6 8 5 1 2 3 7 0 4b( 4) 6 8 5 1 2 3 7 8 4e(5) 6 0 5 0 1 3 7 2 4c(6) 6 8 5 1 2 3 7 4 0i (6) 6 8 5
评估函数
其主要功能:用 来评估节点重要 性。
评估函数f(x)定义为从初始节点S0出发,约束地 经过节点x到达目标节点Sg的所有路径中最小路 径代价的估计值。 评估函数的一般形式为: f(x)=g(x)+h(x)
h(x)——从x到目标节点Sg的最优路径的评估代价, 它体现了问题的启发式信息,其形式要根据问题的特性 确定,h(x)称为启发式函数。
循环3 OPEN:={e5 OPEN:={e5 a6 a6
c6 c6
i6 i6 jj7 k6 k} j7} k6} CLOSE:={s4 b4 d5}
0 2 3 1 2 3 1 7 4 j (7) 6 7 4k (6) 6 8 5 0 8 5
2014-7-1
15
A算法实例——八数码游戏
1)设计评价函数f(n) f(n)计算实例 f(n):s-n-ng的最小路径代价
3 2 8 4 5
1 7 6
g(n):s-n的最小路径代价 h(n): n-ng的最小路径代价
3.3-启发式搜索(2)PPT课件
End
.
25
迭代加深A*算法
上述算法涉及了两个深度限制:
(1)如果栈中所含节点的所有子节点的f值小于 限制值c,则把这些子节点压如栈中以满足迭代 加深算法的深度优先准则.
(2)如果不这样,即节点n的一个或多个子节点 n 的f值大于限制值c,则节点n的 c 值设置为 micn,f((n))
节点的最佳路径的总代价的估值。
.
16
A*算法
把估价函数f (n)和 f *(n)相比较:
g (n)是对 g*(n)的估计。 h (n)是对h* (n)的估计。
在这两个估计中,尽管g (n)容易计算,但它不 一定就是从起始节点S0到节点n 的真正的最短 路径的代价,很可能从初始节点S0到节点n 的 真正最短路径还没有找到,所以一般都有:
该算法终止的条件为:
(1)找到目标节点(成功结束); (2)栈为空并且限制值 c 。
.
26
迭代加深A*算法
IDA*算法和A*算法相比,主要优点是对于内存 的需求。A*算法需要指数级数量的存储空间,因 为没有深度方面的限制。而IDA*算法只有当节点 n的所有子节点 的 n 小f (于n)限制值c时才扩展 它,这样就可以节省大量的内存。
点 x 是从初始节点经过m步得到,则g (x) 应该和 m 成正比(或者就是m)。 如何计算h(x)呢? h (x) 只是一个预测值。
.
3
图搜索算法(A算法)(P78:算法3.8)
Procedure Graph-Search
Begin 建立一个只含有初始节点S0的搜索图G,把S0放入OPEN表;计算f(S0)=g(S0)+h(S0); 假定初始时CLOSED表为空。 While OPEN 表不空 do Begin 从OPEN表中取出f值最小的节点(第一节点),并放入CLOSED表中.假设该节点 的编号为n。 If n是目标,则停止;返回n,并根据n的反向指针指出的从初始节点到n的路径。 Else do
34问题归约和ANDOR图启发式搜索PPT课件
2020/11/23
人工智能 丁世飞
5
3.4.1 问题归约的描述
问题归约表示方法就是由初始问题出发, 运用操作算子产生一些子问题,对子问 题再运用操作算子产生子问题的子问题, 这样一直进行到产生的问题均为本原问 题,则问题得解。
2020/11/23
人工智能 丁世飞
6
3.4.1 问题归约的描述
看如下符号积分问题: 初始问题——∫f ( x ) dx 变换规则——积分规则 本原问题——可直接求原函数的积分,
在状态空间表示法中,由表示一个问题的全部状态以及 一切可用的算符构成的集合称为该问题的状态空间,它一般
表示为一个三元组:(S,F,G)
其中:S表示问题的所有初始状态的集合,F是算符的集合, G是目标状态的集合。
其状态搜索过程通常用搜索图或搜索树来表示。 本节我们将学习问题归约法。
2020/11/23
上一节介绍的启发式搜索算法,如最好优先算法( 或 OR图算法)、启发式图搜索算法(或A算法)、A*算法等等。 都属于状态空间搜索问题。
2020/11/23
人工智能 丁世飞
2
引言
在状态空间搜索中,搜索过程只记录状态空间中被搜索过 的状态,它们构成一个搜索图G,G由Open节点与Closed节点组成。
如∫sin ( x ) dx,∫cos ( x ) dx等。
注意:所有问题归约的最终目的是产生 本原问题。
2020/11/23
人工智能 丁世飞
7
3.4.2 AND-OR图表示
用AND-OR图把问题归约为子问题替换集合。 例如,假设问题A既可通过问题C1与C2,也可通过
问题C3、C4和C5,或者由单独求解问题C6来解决,如 下图所示。图3.6中各节点表示要求解的问题或子问题。
人工智能-第3章 搜索技术
其中,初 始状态集 合和操作 符集合定 义了问题 的搜索空 间。
5
搜索问题包括:
搜索什么(目标) 在哪里搜索(搜索空间)
和通常的搜索空间不同,人工智能 中大多数问题的状态空间在问题求 解之前不是全部知道的。
6
搜索分成:
状态空间的生成阶段 在该状态空间中对所求问题状态的搜 索
搜索可以根据是否使用启发式信息 分为
51
策略说明:
(1)深度限制dm很重要。当问题有解, 且解的路径长度小于或等于dm时, 则搜索过程一定能够找到解,但是 和深度优先搜索一样这并不能保证 最先找到的是最优解。 但是当dm取得太小,解的路径长度 大于dm时,则搜索过程中就找不到 解,即这时搜索过程甚至是不完备 的。
((1,1))
20
Q () Q
((1,1))
((1,1) (2,3))
21
Q ()
((1,1))
((1,1) (2,3))
22
Q () Q
((1,1))
((1,1) (2,3))
((1,1) (2,4))
23
Q () Q Q
((1,1))
((1,1) (2,3))
((1,1) (2,4))
((1,1) (2,4) (3.2))
2 8 3 7 1 4 6 5
2 8 1 4 3 7 6 5
2 8 3 1 4 5 7 6
目标
50
3.2.3 迭代加深搜索
有界深度优先搜索过程总体上按深度 优先算法方法进行,但对搜索深度 需要给出一个深度限制dm,当深度 达到了dm的时候,如果还没有找到 解答,就停止对该分支的搜索,换 到另外一个分支进行搜索。
47
初始节点放到栈中,栈指针指向栈的最上边的元素。 为了对该节点进行检测,需要从栈中弹出该节点, 如果是目标,该算法结束,否则把其子节点以任何 顺序压入栈中。该过程直到栈变成为空。 深度 遍历一棵树的过程(下图)。
人工智能第三版课件第3章 搜索的基本策略
2.3.1 启发式信息的表示
(2) 启发式函数应能够估计出可能加速 达到目标的程度
这可以帮助确定当扩展一个节点时,那些 节点应从搜索树中删除。
启发式函数对搜索树(图)的每一节点的真正 优点估计得愈精确,解题过程就愈少走弯路。
2.3.1 启发式信息的表示
例 2.8 八 皇 后 问 题 (8-Queens problem)
弱法主要包括: .最佳优先法 .生成测试法 .爬山法 .广度优先法 .问题归约法 .约束满足法 .手段目的分析法。
1.生成测试法(Generateand-test)
生成测试法的基本步骤为: 1. 生成一个可能的解,此解是状态空 间一个点,或一条始于S0的路径。 2. 用生成的“解”与目标比较。 3. 达到目标则停止,否则转第一步。
确定一个启发式函数f(n), n 为被搜索 的节点,它把问题状态的描述映射成问题 解决的程度,通常这种程度用数值来表示, 就是启发式函数的值。这个值的大小用来 决定最佳搜索路径。
2.3.1 启发式信息的表示
(2)表示成规则
如AM的一条启发式规则为: 如 果 存 在 一 个 有 趣 的 二 元 函 数 f(x,y) , 那 么看看两变元相同时会发生什么?
2.3.1 启发式信息的表示
如何构造启发式函数? (1)启发式函数能够根据问题的当前状态, 确定用于继续求解问题的信息。
这样的启发式函数能够有效地帮助决定 那些后继节点应被产生。
2.3.1 启发式信息的表示
例2.7 八数码问题。
S0
283 16 4
Sg
75
123 84 7 65
问题空间为:
a11 a12 a13 a21 a22 a23 a31 a32 a33
人工智能导论-第3章 搜索求解1 - 启发式搜索
节点在搜索树中却是不同结点,因为它们分别代
表了从初始状态出发到达城市 A 的三条不同路径。
这三个结点表示的路径分别为:A → B → A、
A → D → A和A → E → A。因此需要注意的是,在
搜索树中,同一个标号一定表示相同的状态,其
含义为智能体当前所在的城市,但是一个标号可
达每个状态(城市)的最短路径。在处理通向相同状态的不同路径时,算法会更新当前的
前驱状态。
图3.7 修改后图搜索A*算法扩展A→E→G结点,红色实线表示
当前搜索树中的边,虚线表示不在搜索树中的边
搜索算法:A*算法性能分析
图搜索A*算法满足最优性(方法二):
要求启发函数满足一致性
引理3.1:启发函数满足一致性条件时,给定一个从搜索树中得到的结点序列,每个结
ถ
=
+
评价函数 起始结点到结点代价
(当前最小代价)
B
5
5
3
D
4
I
C
A
5
7
6
4
E
4
H
G
J
3
3
3
F
7
K
5
6
L
()
ถ
结点到目标结点代价
(后续估计最小代价)
状态
A
h(n)
13 10 6 12 7 8 5 3 6 3 0 6
B C D
E F G H I J K L
A*算法
搜索算法:A*算法
搜索算法:启发函数与评价函数
贪婪最佳优先搜索
所求解问题之外、与所求解
问题相关的特定信息或知识。
3.3-启发式搜索(2)
8
例1:水壶问题
给定4L和3L的水壶各一个,水壶上没有刻 度,可以向水壶中加水。如何在4L的壶中 准确地得到2L水?
这里:用(x,y)—4L壶里的水有xL,3L壶里的水 有yL,n表示搜索空间中的任一节点。 则给出下面的启发式函数:
人工智能 丁世飞
9
例1:水壶问题
h(n) = 2 =4 =8 =10 如果0< x < 4并且0< y < 3 如果0< x < 4或者0< y < 3 如果 x = 0并且 y = 3 或者 x =4 并且 y= 0 如果 x = 0 并且 y = 0 或者 x1 引言 3.2 盲目搜索 √3.3 启发式搜索(2) 启发式搜索(2)
人工智能 丁世飞 1
通用图搜索算法( 算法 算法) 3.3.3 通用图搜索算法(A算法)
图搜索算法只记录状态空间中那些被搜索 过的状态,它们组成一个搜索图 搜索图G 过的状态,它们组成一个搜索图G。 搜索图G由两种节点组成: 搜索图G由两种节点组成:
人工智能 丁世飞 17
A*算法 算法
有了g*(n) 和h*(n) 的定义,如果对最好优先的 的定义,如果对最好优先的 有了 启发式搜索算法中的 中的g(n)和h(n)做如下的限制: 做如下的限制: 启发式搜索算法中的 和 做如下的限制
人工智能 丁世飞
3
图搜索算法( 算法)(P78:算法3.8) 图搜索算法(A算法)(P78:算法3.8) 算法
Procedure Graph-Search Begin 建立一个只含有初始节点S 的搜索图 , 放入OPEN表;计算 0)=g(S0)+h(S0); 建立一个只含有初始节点 0的搜索图G,把S0放入 表 计算f(S 假定初始时CLOSED表为空。 表为空。 假定初始时 表为空 While OPEN 表不空 do Begin 表中取出f值最小的节点 第一节点),并放入 表中.假设该节点 从OPEN表中取出 值最小的节点 第一节点 并放入 表中取出 值最小的节点(第一节点 并放入CLOSED表中 假设该节点 表中 的编号为n。 的编号为 。 If n是目标 则停止 返回 并根据 的反向指针指出的从初始节点到 的路径。 是目标,则停止 返回n,并根据 的反向指针指出的从初始节点到n的路径 是目标 则停止;返回 并根据n的反向指针指出的从初始节点到 的路径。 Else do Begin (1) 生成 的子节点集合 i},把mI作为 的后继节点加入到 中,并计算 生成n的子节点集合 的子节点集合{m 把 作为n的后继节点加入到 的后继节点加入到G中 并计算 f(mi)。 。 (2) If mi未曾在 中出现过 即未曾在 未曾在G中出现过 即未曾在OPEN和CLOSED表中出现过 中出现过(即未曾在 表中出现过),then 将 和 表中出现过 它们配上刚计算过的f值 设置返回到 的指针,并把它们放入 设置返回到n的指针 并把它们放入OPEN表中。 表中。 它们配上刚计算过的 值,设置返回到 的指针 并把它们放入 表中
3搜索问题-启发式搜索
5
C(6)
2 8 3 1 4 D(5) 7 6 5
E(5)
F(6)
8 3 2 1 4 7 6 5
2 8 3 7 1 4 6 5
2 3 1 8 4 I(5) 7 6 5 1 2 3 8 4 7 6 5
6
2 3 1 8 4 7 6 5
J(7)
G(6)
H(7)
K(5)
1 2 3 7 8 4 6 5
L(5)
A算法的表现极大地依赖于评价函数,特别是h(n), 即:从节点n到目标节点最佳路径的估计耗散 假定h*(n)表示节点n到目标节点最佳路径的实际耗 散 如果 h(n)> h*(n) , 搜索的节点数少,搜索范围小, 效率高,但不能保证得到最优解。 如果h(n)<= h*(n) ,这种情况下,搜索的节点数多, 搜索范围大,效率低,但能得到最优解
5 5 5 5 5
A*算法
◦ 当h(n)<=
h*(n) 时,同时满足完备性和最优
性要求 ◦ h(n)越接近于真实耗散h*(n),算法的搜索效 率越高,对内存和时间的需求越小 ◦ 如果满足h(n)= h*(n),是最完美的A*算法 ◦ h(n)的设计是A*算法的核心,也是最困难的 地方
◦ 6-1) ADD(mj, Open); ◦ 6-2) IF f(n→mk) <f(mk) THEN f(mk):=f(n→mk); ◦ 6-3) IF f(n→ml) < f(ml) THEN f(ml):=f(n→ml); ADD(ml,Open);
启发式搜索
例:一字棋游戏
选择“最好优先”算法 每种状态都标记了启发值 简化了搜索过程
启发式搜索和估价函数
在智能活动中使用最多的不是具有完备性的算法,而 是不一定完备的启发式方法。 对问题空间进行搜索时,提高搜索效率需要有和解有 关的大量控制性知识作为搜索的辅助性策略。 控制信息反映在估价函数中。 估价函数的任务就是估计待搜索结点的重要程度。
状态空间
爬山法的变形
随机爬山法 首选爬山法 随机重新开始爬山法
5.2.2 最好优先搜索法
❖ 定义:
Best-first Search (Ordered Search) 在AI图解搜索中,结点扩展的顺序是根据待扩展结点
的评价函数值 f(x)来决定,即将评价函数值最佳的结 点最先扩展,搜索方法是靠 f 值指导搜索顺序的。
启发式搜索
❖ “启发” (heuristic) 是关于发现和发明规则及方法的 研究。在状态空间搜索中,启发式被定义成一系列规 则,它从状态空间中选择最有希望到达问题解的路径。
❖ 有信息的搜索策略——是一种在问题本身的定义之外 还利用问题的特定知识的策略。
启发性信息
❖ 启发性信息的种类 有效地帮助确定扩展节点的信息; 有效的帮助决定哪些后继节点应被生成的信息; 能决定在扩展一个节点时哪些节点应从搜索树上删除的信息。
❖ 如果h(n)=0,g(n)=d(n) 时,就是广度优先搜索法。一般讲在 f(n) 中,g(n)的比重越大,越倾向于广度优先搜索;h(n)的比 重越大,越倾向于深度优先搜索。
❖ 有了f(n),就可以对各个待扩展结点的价值进行估计,从 OPEN表中选择出最有希望的结点扩展。
5.2.2 最好优先搜索法
f (n) g(n) h(n)
华中科技大学人工智能第三章一般搜索原理1详解
皇后问题搜索过程(八)
()
Q
((1,1))
((1,1) (2,3)) ((1,1) (2,4)) ((1,1) (2,4) (3.2))
2021/3/31
22
第三章 一般搜索原理
3.2 盲目搜索
皇后问题搜索过程(九)
()
((1,1))
((1,1) (2,3)) ((1,1) (2,4)) ((1,1) (2,4) (3.2))
3.2 盲目搜索
存在问题及解决办法
问题:
深度问题:如果深度太深 死循环问题: 如果状态出现重复
解决办法:
对搜索深度加以限制 记录从初始状态到当前状态的路径
2021/3/31
31
第三章 一般搜索原理
3.2 盲目搜索
增加约束后的回溯搜索算法
BACKTRACK1(DATALIST)
DATALIST:从初始到当前的状态表(逆向) 返回值:从当前状态到目标状态的路径 (以规则表的形式表示) 或FAIL。
2021/3/31
23
第三章 一般搜索原理
3.2 盲目搜索
皇后问题搜索过程(十)
()
Q
((1,1))
((1,2))
((1,1) (2,3)) ((1,1) (2,4))
((1,1) (2,4) (3.2))
2021/3/31
24
第三章 一般搜索原理
3.2 盲目搜索
皇后问题搜索过程(十一)
() ((1,1))
2021/3/31
6
第三章 一般搜索原理
3.2 盲目搜索
图搜索方式与回溯方式的不同
回溯方式不记忆那些试探失败的操作和 它们产生的状态描述,只记忆当前正在 搜索的路径。
人工智能课件-启发式搜索问题-3
有信息搜索算法
• • • • • • • • • 启发式搜索算法A 最佳优先搜索算法 贪婪最佳优先搜索算法 A*算法 局部搜索算法 爬山法 模拟退火算法 局部定向算法 遗传算法
启发式搜索算法
• 启发式信息在问题求解中的应用最早出现在1958年西蒙和 纽厄尔的一篇早期论文中,但是短语“启发式搜索”和估 计到目标距离的启发函数出现的比较晚(纽厄尔和 Ernst,1965;Lin,1965).随后,1966年Doran和Miche对启 发式搜索应用于许多问题进行了广泛的研究,尤其是对八 数码和十五数码游戏。虽然Doran和Miche完成了在启发式 搜索中路径长度和“外显率”(路径长度和已经访问过的 节点总数的比率)的理论分析,但他们忽略了当前路径长 度提供的信息;Hart,尼尔森和Raphael于1968年提出了 A*算法,将当前路径长度与启发式搜索相结合,后来Hart 等人于1972年又做了一些修正;以后人们陆续对算法进行 改进;1985年Dechter和Pearl论证了A*算法的最优效率。 迄今为止关于启发式和启发式搜索算法的最前面资料是 Pearl于1984撰写的教材《启发式》,感兴趣的同学可以 参阅。搜索算法的最新结果通常出现在《人工智能》上。
启发式搜索算法A
• 启发式搜索是利用问题拥有的启发信息来引导搜索,达 到减少搜索范围,降低问题复杂度的目的。这种利用启 发信息的搜索过程都称为启发式搜索方法。在研究启发 式搜索方法时,先说明一下启发信息应用,启发能力度 量及如何获得启发信息这几个问题,然后再来讨论算法 及一些理论问题。 一般来说: • 启发信息强,可以降低搜索的工作量,但可能导致找不 到最优解; • 启发信息弱,一般会导致搜索的工作量加大,极端情况 下演变为盲目搜索,但有可能找到最优解。 我们希望,通过引入启发知识,在保证找到最佳解的情 况下,尽可能减少搜索范围,提高搜索效率。
人工智能、启发式搜索
启发式搜索信息工程学院计算机科学与技术118班路振中一、何谓启发式搜索启发式搜索算法有点像广度优先搜索,不同的是,它会优先顺着有启发性和具体特定信息的节点搜索下去,这些节点可能是到达目标的最好路径。
我们称这个过程为最优(best-first)或启发式搜索下面是其基本思想:(1) 假定有一个启发式(评估)函数ˆf ,可以帮助确定下一个要扩展的最优节点,我们采用一个约定,即ˆf的值小表示找到了好的节点。
这个函数基于指定问题域的信息,它是状态描述的一个实数值函数。
(2) 下一个要扩展的节点n是ˆf(n)值最小的节点(假定节点扩展产生一个节点的所有后继)。
(3) 当下一个要扩展的节点是目标节点时过程终止二、典例A搜索算法描述用最优搜索算法详细说明GRAPHSEARCH。
最优搜索算法根据函数的增加值,(在上述第7步)重排OPEN中的节点。
把GRAPHSEACH的这种算法称为算法A。
下面将会看到,定义使A执行广度搜索或相同代价搜索的函数是可行的。
为了确定要用的函数族,必须先介绍一些其他符号。
设g(n) = 从开始节点n0到节点n的一个最小代价路径的代价。
设h(n) =节点n和目标节点(遍及所有可能的目标节点以及从n到它们的所有可能路径)之间的最小代价路径的实际代价。
那么f(n) = g(n) + h(n)就是从n0到目标节点并且经过节点n的最小代价路径的代价。
注意f(n0)= h(n0)是从n0到目标节点的一个(不受限的)最小代价路径的代价。
对每个节点n,设gˆ(n)(深度因子)是由A*发现的到节点n的最小代价路径的代价,hˆ(n)(启发因子)是h(n)的某个估计。
在算法A中,我们用ˆf(n)= gˆ(n)+ hˆ(n)。
A算法流程:(1)生成一个只包含开始节点n0的搜索图G,把n0放在一个叫OPEN的列表上。
(2)生成一个列表CLOSED,它的初始值为空。
(3)如果OPEN为空,则失败退出。
(4)选择OPEN上的第一个节点,把它从OPEN中移入CLOSED,称该节点为n。
人工智能第三章(2)
子句集的求取
(4)消去存在量词 S内ko,le我m函们数允:许在所公存式在(的∀xy可)[能(∃依x)赖P(于x,yy值)]。中令,这存种在依量赖词关是系在明全显称地量由词函的数辖g域(y) 所定义,它把每个y值映射到存在的那个x。这种函数叫做Skolem函数。如 果用Skolem函数代替存在的x,我们就可以消去全部存在量词,并写成:
每个全称量词都有自己的变量。把所有全称量 词移到公式的左边,并使每个量词的辖域包括 这个量词后面公式的整个部分。所得公式称为 前束形。前束形公式由前缀和母式组成,前缀 由全称量词串组成,母式由没有量词的公式组 成,即 前束形 = (前缀) (母 式)
全称量词串 无量词公式
76
子句集的求取
(6)把母式化为合取范式 任何母式都可写成由一些谓词公式和(或)谓词
从一个公式消去一个存在量词的一般规则是以一个Skolem函数代替每 个出现的存在量词的量化变量,而这个Skolem函数的变量就是由那些全称 量词所约束的全称量词量化变量,这些全称量词的辖域包括要被消去的存 在量词的辖域在内。
Skolem函数所使用的函数符号必须是新的,即不允许是公式中已经出 现过的函数符号。
h*(n)的估计h(n))依赖于有 关问题的领域的启发信息。
这种信息可能与八数码难题
中的函数W(n)所用的那种信 息相似.h叫做启发函数
定义g*:g*(n)=k(S,n);
定义f*:f*(n)=g*(n)+h*(n);
希望估价函数f是f*的一个估计:
f(n)=g(n)+h(n)
(g是g*的估计,h是h*的估计).
73
3
2013-10-21
Hale Waihona Puke 子句集的求取(3)对变量标准化 在任一量词辖域内,受该量词约束的变量为一哑
第三章 搜索(2)—启发式搜索
启发式搜索
3.0 简介
启发式搜索基本思想:
定义一个评价函数f,对当前的搜索状态进行评估, 找出一个最有希望的节点来扩展。
第三章 - 10
启发式搜索
3.0 简介
评价函数
f(n) = g(n) + h(n)
f(n):评价函数 h(n):启发函数
符号的意义
f*(n)=g*(n)+h*(n)
启发式搜索
3.1.0 局部择优搜索
Arad Sibiu
Arad (366)
Fagaras (176)
Oradea (380)
Rimnicu Vilcea (193) Arad
Sibiu
Fagaras
Sibiu (253)
Bucharest (0)
第三章 - 19
启发式搜索
3.1.0 局部择优搜索
第三章 - 20
启发式搜索
内容
3.0 简介 3.1 启发式搜索算法
3.1.0 局部择优搜索 3.1.1 全局择优搜索(A算法) * 3.1.2 A 算法
3.2 应用举例 3.3 基于搜索的优化问题
第三章 - 21
启发式搜索
3.1.1 A算法
A算法也称为最佳优先搜索 (best-first search)
o
2 3
目标节点: q
q
第三章 - 27
启发式搜索
(1) (2) (3) (4)
(5)
(6) (7) (8) (9) (10) (11)
(12)
(13)
(14)
第三章 - 28
第三章 搜索(2)—启发式搜索
第三章 - 34
启发式搜索
内容
3.1.2 A*算法
1.A*算法定义
2.A*算法的性质 3.启发函数h(n)的评价方法 4.A*算法复杂性 5.A*算法的改进
第三章 - 35
启发式搜索
* 1.A 算法定义
如果A算法使用的评估函数h(n)满足:
h(n)≤h*(n) 那么该算法称为A*算法。
第三章 - 21
启发式搜索
3.1.1 A算法
分析:
如果取估价函数f(n)=g(n),则它将退化为代价树 的广度优先搜索。 如果取估价函数f(n)=d(n),则它将退化为广度优 先搜索。
因此,广度优先搜索和代价树的广度优先搜索是全局择 优搜索的两个特例。
第三章 - 22
启发式搜索
3.1.1 A算法
第三章 - 37
启发式搜索
2.
* A 算法的性质
s
其中为大于0的常数
A*算法的假设
设ni、nj是任意两个节点,有:
C(ni, nj) >
几个等式 f*(s) = f*(t) = h*(s) = g*(t) = f*(n)
s是初始节点 t是目标节点 n是s到t的最佳路径上的节点。
如果取估价函数f( n)= g(n),则它将退化为代价 树的深度优先搜索。 如果取估价函数f(n)= d(n),则它将退化为深度优 先搜索。
因此,深度优先搜索和代价树的深度优先搜索是局部择优 搜索的两个特例。
第三章 - 18
启发式搜索
内容
3.0 简介 3.1 启发式搜索算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 - 12
内容
启发式搜索
3.0 简介 3.1 启发式搜索算法
3.1.0 局部择优搜索 3.1.1 全局择优搜索(A算法) 3.1.2 A*算法 3.1.3 其它启发式搜索算法 3.2 应用举例
2
第三章 - 13
启发式搜索
3.1.0 局部择优搜索
(1)把初始节点S0放入 Open表中,f(S0)=g(S0)+h(S0) ; (2)如果Open表为空,则问题无解,失败退出; (3)把Open表的第一个节点取出放入Closed表,并记该节点
2.A*算法的性质 3.启发函数h(n)的评价方法 4.A*算法复杂性 5.A*算法的改进
第三章 - 35
1.A*算法定义
启发式搜索
如果A算法使用的评估函数h(n)满足: h(n)≤h*(n)
那么该算法称为A*算法。
例如: 8数码问题 h1(n) = “不在位”的将牌数 h2(n) = 将牌“不在位”的距离和
第三章 - 8
3.0 简介
启发式搜索
顶角方格有三种 胜利路线
中央方格有四种 胜利路线
边方格有两种 胜利路线
第三章 - 9
3.0 简介
启发式搜索
启发式搜索基本思想:
定义一个评价函数f,对当前的搜索状态进行评估, 找出一个最有希望的节点来扩展。
第三章 - 10
3.0 简介
启发式搜索
评价函数 f(n) = g(n) + h(n)
第三章 - 18
内容
启发式搜索
3.0 简介 3.1 启发式搜索算法
3.1.0 局部择优搜索 3.1.1 全局择优搜索(A算法) 3.1.2 A*算法 3.1.3 其它启发式搜索算法 3.2 应用举例
3
第三章 - 19
3.1.1 A算法
A算法也称为最佳优先搜索 (best-first search)
Zerind(374)
第三章 - 16
启发式搜索
3.1.0 局部择优搜索
Sibiu
Arad
Arad (366)
Fagaras Oradea (176) (380)
Sibiu
Rimnicu Vilcea (193)
Arad
Fagaras
Sibiu (253)
Bucharest (0)
Yet not optimal (see Arad, Sibiu, Rimnicu Vilcea, Pitesti)
启发式搜索
2. A*算法的性质—定理1
定理1
对有限图,如果从初始节点s到目标节点t有路径存 在,则算法A一定成功结束。
引理1.2 A*结束前,OPEN表中必存在f(n)≤f*(s)。
存在一个节点n,n在最佳路径上。 f(n) = g(n) + h(n)
为n; (4)考察节点n是否为目标节点。若是,则找到了问题的解,
成功退出; (5)若节点n不可扩展,则转第(2)步; (6)扩展节点n,生成其子节点ni(i=1,2,…),计算每一个
子节点的估价值f(ni)(i=1,2,…),并按估价值 从小到大的顺序依次放入Open表的首部,并为每一个子 节点设置指向父节点的指针,然后转第(2)步。
Open表中;
(7)根据各节点的估价函数值,对Onen表中的全部节点按从
小到大的顺序重新进行排序;
(8)转第(2)步。
第三章 - 21
3.1.1 A算法
启发式搜索
分析:
如果取估价函数f(n)=g(n),则它将退化为代价树 的广度优先搜索。
如果取估价函数f(n)=d(n),则它将退化为广度优 先搜索。
弱: 一般导致工作量加大,极限情况下变为盲目搜索,但可 能可以找到最优解。
第三章 - 5
【例1】
3.0 简介
启发式搜索
第三章 - 6
3.0 简介
启发式搜索
【例2】 通过对称抵消后的九宫游戏状态空间的前三层
对一个假象状态空间的启发式搜索
1
第三章 - 7
3.0 简介
启发式搜索
假定采用如下“启发”裁减九宫游戏状态空间。 移动到×方胜利路线最多的状态
f(n):评价函数 h(n):启发函数
符号的意义 f*(n)=g*(n)+h*(n)
f*(n):从s经过n到g的最短路径的耗散值。 g*(n):从s到n的最短路径的耗散值。 h*(n):从n到g的最短路径的耗散值。
注意: g(n)、h(n)、f(n)分别是g*(n)、h*(n)、f*(n)的估 计值。
4
第三章 - 25
3.1.1 A算法
【例2】八数码问题。
定义评价函数:f(n) = g(n) + h(n)
启发式搜索
第三章 - 26
3.1.1 A算法
启发式搜索
启发1: 数出每个状态与目标状态相比错位的牌数。
启发2: 对错位的牌必须要移动的距离求和。
启发3: 对每个“直接颠倒”乘以一个小的数字。
对于一个处于有限资源下的系统来说,智能 体现在明智地选择下一步该做什么………
第三章 - 3
内容
启发式搜索
3.0 简介 3.1 启发式搜索算法
3.1.0 局部择优搜索 3.1.1 全局择优搜索(A算法) 3.1.2 A*算法 3.1.3 其它启发式搜索算法 3.2 应用举例
第三章 - 17
启发式搜索
3.1.0 局部择优搜索
分析:
深度优先搜索、代价树的深度优先搜索以及局部优 先搜索都是以子节点作为考察范围,但选择节点的 标准不一样。
对于局部择优搜索算法:
如果取估价函数f( n)= g(n),则它将退化为代价 树的深度优先搜索。
如果取估价函数f(n)= d(n),则它将退化为深度优 先搜索。 因此,深度优先搜索和代价树的深度优先搜索是局部择优 搜索的两个特例。
3 n:=FIRST(OPEN);
4 IF GOAL(n) THEN EXIT(SUCCESS);
5 REMOVE(n, OPEN), ADD(n, CLOSED);
6 EXPAND(n) → {mi},
计算f(n, mi):=g(n, mi)+h(mi);
① ADD(mj, OPEN), 标记mj到n的指针; ② IF f(n, mk)<f(mk) THEN f(mk):=f(n, mk),
第三章 - 2
启发式搜索
——纽厄尔和西蒙(Newell and Simon) ,1976年度ACM
图灵奖获奖演说
当问题和问题空间确定后,符号系统所要解决 的任务就是如何使用有限的处理资源来产生可能 解,直到发现一个可以通过(问题所定义)检验 的解。
如果符号系统可以对可能解的产生顺序进行 某种控制,并对这个产生顺序加以组织以使高可 能性的解出现,那么这是非常理想的。如果符号 系统成功地做到了这一点,那么它便展示出了智 能。
启发式搜索
2. A*算法的性质—定理1
定理1
对有限图,如果从初始节点s到目标节点t有路径存 在,则算法A一定成功结束。
引理1.1
对无限图,若有从初始节点s到目标节点t的路径, 则A*不结束时,在OPEN表中即使最小的一个f值也将 增到任意大,或有f(n)>f*(s)。第三章 - 396源自11B(5)
A(1)
8
G 目标
OPEN表
s(10) A(7) B(8) C(9) B(8) C(9) G(14) A(5) C(9) G(14) C(9) G(12) B(7) G(12) A(4) G(12) G(11)
CLOSED表
s(10) A(7) s(10)
B(8) s(10) A(5) B(8) s(10) C(9) A(5) s(10) B(7) C(9) s(10) A(4) B(7) C(9) s(10)
问题状态:
用列表L指示,L的元素就是皇后在棋盘中的位置 ij(1≤i,j≤4);
按自上而下的次序在棋盘的4行中放置皇后;
空表L指示初始状态;当表L包含4个满足约束的皇后位 置时,到达目标状态;
当皇后位置发生冲突时,意味着进入不合法状态(失败 状态)。
第三章 - 32
思考题
设计四皇后问题的启发函数h(n)
第三章 - 11
3.0 简介
启发式搜索
对启发式搜索算法,可根据搜索过程中选择扩展 节点的范围,将其分为: 局部择优搜索算法
局部最佳优先搜索算法(Local-Best-First-Search) 全局择优搜索算法
最佳优先搜索算法(Best-First-Search) A算法 A*算法
搜索的每一步都利用估价 函数f(n)对Open表中的 所有节点进行排序。 f(n)=g(n)+h(n)
启发式搜索
第三章 - 20
3.1.1 A算法
启发式搜索
(1)把初始节点S0放入Open表中,f(S0)=g(S0)+h(S0);
对
(2)如果Open表为空,则问题无解,失败退出;
一
(3)把Open表的第一个节点取出放入Closed表,并记该节点
因此,广度优先搜索和代价树的广度优先搜索是全局择 优搜索的两个特例。
第三章 - 22
3.1.1 A算法
回顾一般图搜索
启发式搜索
n
a
…...
…...
…... b
mk
mj
ml
…...
…...
第三章 - 23
3.1.1 A算法
1 OPEN:=(s), f(s):=g(s)+h(s);