- 1、本文档共103页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 搜索推理技术1
第 3 章 搜索推理技术 3.2 盲目搜索 3.2.1 宽度优先搜索 宽度优先搜索示意图 宽度优先算法框图 宽度优先搜索算法描述 宽度优先搜索算法描述 宽度优先搜索算法说明 宽度优先搜索是图搜索一般过程的特殊情况,这实际是将OPEN表作为“先进先出”的队列进行操作。 搜索树: 搜索过程产生的节点和指针构成一棵隐式定义的状态空间图的子树,称为搜索树。 如果问题有解,宽度优先算法能够保证找到一条通向目标节点的最短路径 (即找到最优解). 如要问题无解,对于有限图,该算法会失败退出,对于无限图,则永远不会终止。 八数码难题 八数码难题的宽度优先搜索树 3)节点深度定义: 起始节点(即根节点)的深度为0. 任何其他节点的深度等于其父辈节点的深度加1. 4) 深度界限: – 为了避免考虑太长的路径(防止搜索过程沿着无益的路径扩展下去), 往往给出一个节点扩展的最大深度, 称为深度界限. – 任何节点如果达到了深度界限,那么都将把它们作为没有后继节点来处理. – 即使应用了深度界限, 深度优先搜索所求得的解答路径也不一定就是最短路径. 深度优先搜索算法描述 思考题:有界深度优先搜索方法能够保证在搜索树中找到一条通向目标节点的最短途径吗? 一般不能保证找到最优解。 当深度限制不合理时,可能找不到解,可以将算法改为可变深度限制。 最坏情况时,搜索空间等同于穷举。 与回溯法的差别:图搜索。 是一个通用的与问题无关的方法。 为什么需要启发式搜索 效率低,耗费过多的计算空间与时间。 可能带来组合爆炸。 分析前面介绍的宽度优先、深度优先搜索,或等代价搜索算法,其主要的差别是OPEN表中待扩展节点的顺序问题。人们就试图找到一种方法用于排列待扩展节点的顺序,即选择最有希望的节点加以扩展,那么,搜索效率将会大为提高。 定义 进行搜索技术一般需要某些有关具体问题的领域的特性信息,把此种信息叫做启发信息。 把利用启发信息的搜索方法叫做启发性搜索方法。 特点 重排OPEN表,选择最有希望的节点加以扩展 种类 有序搜索、A*算法等 启发式搜索策略 有关具体问题领域的信息常常可以用来简化搜索。一个比较灵活(但代价也较大)的利用启发信息的方法,是应用某些准则来重新排列每一步OPEN表中所有节点的顺序。然后,搜索就可能沿着某个被认为是最有希望的边缘区段向外扩展。应用这种排序过程,需要某些估算节点“希望”的量度,这种量度叫做估价函数(evalution function)。 估价函数 为获得某些节点“希望”的启发信息,提供一个评定侯选扩展节点的方法,以便确定哪个节点最有可能在通向目标的最佳路径上。 一个节点的“希望”有几种定义方法 一种方法是估算目标节点到此节点的距离; 另一种方法认为,解答路径包括被估价过的节点,并计算全条路径的长度或难度。每个不同的衡量标准只能考虑该问题中这个节点的某些决定性特性,或者对给定节点与目标节点进行比较,以决定相关特性。 表示方法 f(n)——表示节点n的估价函数值 建立估价函数的一般方法 1. 试图确定一个处在最佳路径上的节点的概率; 2. 提出任意节点与目标集之间的距离量度或差别量度; 3. 或者在棋盘式的博弈和难题中根据棋局的某些特点来决定棋局的得分数。这些特点被认为与向目标节点前进一步的希望程度有关。 评价函数的格式 应用这种评价函数来实现启发式搜索的典型是算法A,其将评价函数f设计为: f(n) = g(n) + h(n) n--搜索图中的某个当前被扩展的节点; f(n)--从初始状态节点s, 经由节点n到达目标状节点ng,估计的最小路径代价; g(n)--从s到n ,估计的最小路径代价; h(n)--从n到ng,估计的最小路径代价; 1)记号: g*(n):从s到n的最短路径的耗散值 h*(n):从n到g的最短路径的耗散值 f*(n)=g*(n)+h*(n):从s经过n到g的最短路径的耗散值 2)估价函数f是f*的一个估计:f(n) = g(n) + h(n),其中g(n)是g*(n)的估计, h(n)是h*(n)的估计. g(n):通常为从s到n这段路径的实际代价,则有g(n)≥ g*(n); h(n):是从节点n到目标节点Sg的最优路径的估计代价. 它的选择依赖于有关问题领域的启发信息, 叫做启发函数. 例如八数码中的h(n)。 3)定义 在A算法中,如果满足条件: h(n)≤h*(n) 则A算法称为A*算法。 4)A*算法的特点 若存在从初始节点S0到目标节点Sg的路径, 则A*算法必能结束在最佳路径
文档评论(0)