《搜索技术》PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 搜索技术
第二节 启发式搜索 七、A算法 使用估计值函数f(n)=g(n)+h(n)的完全展开的有序 搜索算法。
28
第三章 搜索技术
第二节 启发式搜索
八、A*算法 在A算法规定:h(n)h*(n), k*(ni,nj,nm)-k*(ni,nj)>e,则A算法成为A*算法
注:1)A*算法与H*算法的主要区别有
22
第三章 搜索技术
第二节 启发式搜索 五、H*算法 注:5)若估计值函数h(n)满足单调条件:
h(ni)-h(nj) k*(ni,nj)(其中k*(ni,nj)是从ni到nj的 最小代价,nj是ni的后续节点), 则H*算法是循着从初始状态通向该节点的最优路 径到达该节点的。
6)在H*算法中,每次只生成一个后续节点。
到具有相同估计值的状态的最前面;否则将相应 状态插入到具有相同估计值的状态的最后面
11
第三章 搜索技术
第二节 启发式搜索 二、有序搜索算法 2、算法 6)若在SS或SB中原有一个状态与当前新状态共一 个状态,则删去原有状态 7)若新状态在SS的最前面,则转11) 8)若某种状态极限已达到,则搜索失败,算法运 行结束,无解
算法要复杂些。
第三章 搜索技术
第一节 引言 二、研究和选用搜索算法的原则 6、有约束还是无约束?
问题空间搜索时,若子问题间互相无约束关系, 则求接比较简单,否则,一般需要回溯,即,放 弃已解决的子问题,走回头路,寻找新的解法。 7、数据驱动还是目标驱动?
数据驱动是向前搜索,目标驱动是向后搜索。 8、单向搜索还是双向搜索?
a)在H*算法中每次只生成一个后继节点,而在 A*算法中每次生成一个节点的所有节点 b)在H*算法中,每生成一个新节点,就询问它 是否是目标节点,而在A*算法中,只询问栈顶 节点是否是目标节点
2)在A*算法中,估计值函数f(n)=g(n)+h(n)的 选择是一个关键
29
第三章 搜索技术
第二节 启发式搜索
第一节 引言 三、一般搜索方法分类 1、盲目搜索
1)无变量的盲目搜索 状态空间、问题空间的盲目搜索 深度优先、广度优先、代价优先、混合 向前、向后、双向
2)有变量的盲目搜索 通代
2、启发式搜索
7
第三章 搜索技术
第二节 启发式搜索 一、启发式搜索
把要求解的问题的具体领域的知识加进搜索算 法中,控制搜索过程,以提高算法效率的搜索方 法,称为启发式搜索。
23
第三章 搜索技术
第二节 启发式搜索 六、完全展开的有序搜索算法 1)建立一个空的状态序列SS 2)建立一个空的状态库SB 3)定义一个估值函数f 4)若初始状态为S0,则定义初始状态S0(0,f(0))为当 前新状态 5)将所有当前新状态按估计值从小到大的顺序插 入到SS中
24
第三章 搜索技术
第三章 搜索技术
第一节 引言 一、搜索
对于无成熟方法可用的问题求解,必须一步步 地摸索求解,这种问题求解过程就是搜索。
注:搜索技术是人工智能的核心技术之一。 二、研究和选用搜索算法的原则 1、有限搜索还是无限搜索?
若搜索空间有限,则任何一种穷举算法均能完 成任务。
1
第三章 搜索技术
第一节 引言 二、研究和选用搜索算法的原则 2、搜索空间是静态的还是动态生成的?
第二节 启发式搜索 六、完全展开的有序搜索算法 6)若在SS或SB中原有一个状态与当前某个新状态 共一个状态,则删去原有状态 7)若SS的第一项是一个新状态,则转11) 8)若某种状态极限已达到,则搜索失败,算法运 行结束,无解
25
第三章 搜索技术
第二节 启发式搜索 六、完全展开的有序搜索算法
9)若任何规则均不能应用于状态序列SS中的第 一个状态,或者虽能应用,但不能产生改进型的 合适新状态,则将此第一个状态从SS中除去,送 入SB中,否则转12) 10)若SS成为空序列,则搜索失败,算法运行结 束,无解 11)若SS中第一个状态已是目标状态,则搜索成 功,算法运行结束(若该状态形如S(path,f(path)), 则解就是(path));否则转9)
5
第三章 搜索技术
第一节 引言 二、研究和选用搜索算法的原则 10、有对手搜索还是无对手搜索?
若有两个控制源均能改变同一状态空间,并且 任何一方向目标前进时,另一方均试图将它从目 标拉开,则称为有对手搜索,通常称为博弈搜索。 注:博弈搜索算法可以看成是一种特殊的问题空 间搜索。
6
第三章 搜索技术
26
第三章 搜索技术
第二节 启发式搜索
六、完全展开的有序搜索算法
12)取所有可应用于SS的第一个状态
S(path,f(path)),并产生各不相同的改进型的合适
新状态的规则Ri(iI),产生新状态集 T(path,i,f(path)), 其中对属于同一状态的各个
状态只取一个最优者,转5)
#算法完
27
八、A*算法 注: 3)A*算法一定能保证找到最优解
4)若按展开的节点个数来估计它的效率,则 当启发式函数h的值单调上升时,它的效率只会 上升,不会下降,且有较合理的渐近性质
5)若不是考虑被展开的节点个数,而是考虑 各节点被展开的次数,则A*算法在最坏情况下表 示出很高的复杂性
21
第三章 搜索技术
第二节 启发式搜索 五、H*算法 注:2)H*算法的搜索效率在很大程度上取决于函 数h(n)的选择,它要求h(n)h*(n),但若h(n)太小, 则启发信息就很少。
3)若h(n)0,g(n)为搜索深度或代价,则H*算法 将退化为广度优先搜索或代价优先搜索。
4)h(n)的值在满足小于或等于h*(n)的前提下越 大越好,启发式信息多(即h值大)的H*算法展开的 节点是启发式信息少(即h值小)的H *算法展开的 节点的子集。
13
第三章 搜索技术
第二节 启发式搜索
二、有序搜索算法
2、算法
10)若SS成为空序列,则搜索失败,算法运行结
束,无解
11)若SS中第一个状态已是目标状态,则搜索成
功,算法运行结束(若该状态形如S(path,f(path)),
则解就是(path));否则转9)
12)取一个可应用于SS的第一个状态
S(path,f(path)),并产生改进型的合适新状态的规
第二节 启发式搜索
四、H算法 使用上述改进的估计值函数f的有序搜索算法就 是H算法。 注:1) g(n)是容易找到的,如将从初始节点到节 点n实际上走过的路径的代价作为g(n),且永远有 g*(n)g(n)。g(n)不断改进,随着更多的搜索信息 的获取,g(n)的值呈下降趋势。 2)h(n)的选取要与具体问题领域的启发信息相关。 3)由于h(n)的选择仍有很大的随意性,因此,H
9
第三章 搜索技术
第二节 启发式搜索 二、有序搜索算法 1、基本思想 a)对于每个在搜索过程中遇到的新状态,计算一 个估计值,根据估计值的大小,确定下一步将从 哪一个状态开始继续前进。 b)一般以估计值小者作为较优的状态,以此实现 最佳优先搜索。 c)计算状态估计值的函数是确定的,但每个状态 的估计值的大小与初始状态到该路径有关。
15
第三章 搜索技术
第二节 启发式搜索 二、有序搜索算法 2、算法 注:5)有序搜索算法不一定找到解,即使有解
6)有序搜索算法的特点是使用启发式信息 (表现在估计值函数f上),可是启发式信息也会骗 人,会引人误入歧途
7)有序搜索即使能找到解,也未必一定是最 优的
16
第三章 搜索技术
第二节 启发式搜索 二、有序搜索算法 3、算法改进 1)用多个估计值函数来“层层设卡” 2)对估计值函数的形式加以限制,以保证它一定 能找到解,甚至一定能找到最优解。
4
第三章 搜索技术
第一节 引言 二、研究和选用搜索算法的原则 9、盲目搜索还是启发式搜索?
按照预定的控制策略实行搜索,在搜索过程中 获取的中间信息不用来改进控制策略,称为盲目 搜索,反之,称为启发式搜索。 注:关于“启发式”,可有两种看法:1)任何有 助于找到问题的解,但不能保证找到解的方法均 是启发式方法;2)有助于加速求解过程和找到较 优解的方法是启发式方法。
利用同样原理可以描述蚁群进行多食物源的寻食情94第三章搜索技术第二节启发式搜索十五蚂蚁算法算法应用1用于重建通讯路由2用于求解tsp流动货郎问题?一群蚂蚁由a点同时出发进行漫游倾向选较近的城市?把所有城市都游过后返回并留下外激素其量与路程长度成反比?所有蚂蚁都返回后图上留下外激素的标95第三章搜索技术第二节启发式搜索十五蚂蚁算法算法应用3蚂蚁清除垃圾蚂蚁能将巢里的垃圾或死蚂蚁打扫成几大堆给以清除?一群蚂蚁随机出发遇到垃圾就将其拉走方向也是随机的?拉垃圾时若碰到某一堆垃圾时就放下?放下垃圾后再随时机进行打扫工作??96第三章搜索技术第三节博弈树搜索一博弈树若参加搜索的不只有一个主体而是对抗性的敌我双方则搜索的进程不仅取决于一方而且取决于对方应付的策略由此产生的搜索树称为博弈树
注:1)这里,搜索的对象(常称状态)往往是边 搜索边生成,因此在考虑这种搜索的复杂性时, 必须将搜索对象的生成和评估的代价计算在内。
8
第三章 搜索技术
第二节 启发式搜索
一、启发式搜索
注:2)根据启发性信息(特定领域的知识信息), 在生成搜索树时可考虑种种可能的选择:
a)下一步展开哪个节点? b)是部分展开还是全部展开? c)使用哪个规则(算子)? d)怎样决定舍弃还是保留新生成的节点? e)怎样决定舍弃还是保留一棵子树? f)怎样决定停止或继续搜索? g)如何定义启发函数(估值函数)? h)如何决定搜索方向?
17
第三章 搜索技术
第二节 启发式搜索 三、估计值函数的改进
令S为初始节点,ti为一组目标节点, n,ni,nj为任意节点 k*(ni,nj)为从ni到nj的最小代价 g*(n)=k*(S,n)为从初始节点S到节点n的最小代
价 的最h小*(n代)=价mitni k*(n,ti)为从节点n到一个目标节点ti
算法并不能保证找到一个解,更不能保证找到最 优解。从而需要改进。
20
第三章 搜索技术
第二节 启发式搜索
五、H*算法 1. 在H算法中规定h(n)h*(n) 2. 推广k*(ni,nj)的定义:令k*(n1,n2,…,nm)为从n1出 发,经过n2,…,到达nm的最小代价,规定存在一个 正整数e>0,使得对任意的ni,nj,nm(njnm)均有 k*(ni,nj,nm)-k*(ni,nj)>e 3.经过如此限制以后的H算法就是H*算法。 注:1)可以证明:只要目标状态存在,并且从初 始状态到目标状态有一条通路,则H*算法一定在 有限步内终止,并找到一个最优解(即代价为最 低的解)。
f*(n)=g*(n)+h*(n)为从初始节点出发,经过节 点n,到达一个目标节点的最小代价
18
第三章 搜索技术
第二节 启发式搜索 三、估计值函数的改进
g(n)为对g*(n)的估计,g(n)0 h(n)为对h*(n)的估计,h(n)0 f(n)=g(n)+h(n)为每个节点n处的估计值函数
19
第三章 搜索技术
在解题过程中的每一时刻,所要解决的问题均
处于一定的状态,搜索过程只是将一个状态变成 另一个状态(如,一盘棋局变成另一盘棋局),则 称为状态空间搜索。
若搜索的对象是问题,搜索的原则是把一个复 杂的问题化为一组比较简单的子问题(如把一个 复杂的下棋策略分为几个子策略),则称为问题 空间搜索。
注:问题空间搜索常常比状态空间搜索有效,但 3
12
第三章 搜索技术
第二节 启发式搜索 二、有序搜索算法 2、算法 9)若任何规则均不能应用于状态序列SS中的第一 个状态,或者虽能应用,但不能产生合适的新状 态(在SS或SB中均没有者,称为新),或虽能产生 合适的新状态S(path2,f(path2)),但不是改进型的 (若SS和SB中已有状态S(path1,f(path1)),它与新状 态共一个状态S,且f(path2)f(path1),则称新状态 不是改进型的),则将此第一个状态从SS中除去, 送入SB中,否则转12)
在人工智能中,搜索的对象(常称状态)是在搜 索过程中逐步生成的,需将搜索对象的生成和评 估的代价计算在内。
对于一般搜索,搜索空间基本是静态的,或表 或数组或数据库。 3、已知目标还是未知目标? 4、只要目标还是也要路径? 路径是解题过程中应用的操作序列。
2
第三章 搜索技术
第一节 引言 二、研究和选用搜索算法的原则 5、状态空间搜索还是问题空间搜索?
10
第三章 搜索技术
第二节 启发式搜索
二、有序搜索算法
2、算法 1)建立一个空的状态序列SS 2)建立一个空的状态库SB 3)定义一个估值函数f 4)若初始状态为S0,则定义初始状态S0(0,f(0))为当 前新状态
5)将当前新状态按估计值从小到大的顺序插入到 SS中,若新状态为目标状态,则将相应状态插入
则Rn,产生新状态T(path,n,f(path)),定义它为当
前新状态,转5)
#算法完
14
第三章 搜索技术
第二节 启发式搜索 二、有序搜索算法 2、算法 注:1)状态是带路径和估计值的状态,而状态只 是一个状态
2)对当前生成的新状态是否是目标状态的判 断需要两次
3)这里每次只生成一个后代 4)给定估计值函数f的意义,则有序搜索就 可归结为已知的搜索,如令f为状态节点的深度, 则有序搜索就成为广度优先搜索