高级搜索之A星算法分析.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高级搜索之A星算法分析

总结A算法能成为A*算法的充分条件 一种具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法的充分条件是: 1)搜索树上存在着从起始点到终了点的最优路径。 2)问题域是有限的。 3)从任何一个节点转移到其子节点,代价0 4)h(n)=h*(n) 。 5) h函数是相容的,以确保f是递增的。 当此五个条件都满足时,一个具有f(n)=g(n)+h(n)策略的最好优先启发式算法(A算法) 能成为A*算法,并一定能找到最优解。 h 相容的定义以及意义 如果h函数对任意状态s1和s2还满足: h(s1) = h(s2) + c(s1,s2) , c(s1,s2)是s1转移到s2的代价,则称h是相容的。 h相容能确保f递增,这样A*才能确保找到最优解。 h相容 = g(s1) + h(s1) = g(s1) + h(s2) +c(s1,s2) = g(s2)+h(S2) = f(s1) = f(s2) 即f是递增的。 A* 算法应用举例 例 2 A*算法解决八数码难题 在例1中,我们取h(n)=W(n)(W(n)是不在位的方块数目)。尽管我们对h*(n)不能确切知道,但采用单位代价时,通过对“不在位”数码个数的估计,可以得出至少要移动W(n).因为,例1所定义的和h(n)满足A*算法的限制条件。 这里再取另一种启发函数h(n)=P(n), P(n)定义为每个数码与目标位置之间距离(不考虑夹在其间的数码)的总和,同样要判定至少要移动P(n)步才能达到目标,因此有 ,即满足A*算法的限制条件。其搜索过程所得到的搜索树如图2所示。在该图中,节点旁边虽然没有标出P(n)的值p,但却标出了估计函数f(n)的f值。对解路径,还给出了各个结点的g* (n)和h*(n)的g*值和h*值。从这些值还可以看出,最佳路径上的节点都有 f*=g*+h*=4. 图2 A*算法解决八数码难题 估计函数选取的另一例子: (ACM/ICPC Regional Contest Kanpur 2001) : 有一些打乱的段落,比如: p2,p3,p4,p7, p1, p5,p6 每次只能拷贝若干个连续的段落,然后剪切到某个段落前面,最后要形成 p1,p2,p3,p4,p5,p6,p7 问最少要拷贝粘贴多少次。 A*算法 h(s)选为在状态s下,未“就位”的段落数目? h(s)选为在状态s下,未“就位”的段落到其该呆的位置的距离之和? A*算法 h(s)选为在状态s下,未“就位”的段落数目? h(s)选为在状态s下,未“就位”的段落到其该呆的位置的距离之和? 都不行,h会减少太快,即从某个状态s到s’,可能导致 g的值加1,然而h的值减少很多,这样f(s’) f(s),f的递增性被破坏,导致不能确保找到最优解。 A*算法 考虑以下h(s): H(s) = s的排列方式下,后继段落错误的段落数目 H(1,3,2) = 2 (1的后继是3错,3的后继是2错) H(3,2,1) = 2 H(4,2,3,1) = 2 (2的后继对) A*算法 将连续段落集合 S 从p1后面剪切粘贴到p2后面,后继正确性受到影响的段落最多3个: p1,p2和S中最后的一个段落 因此从s-s’,h的值最多减少3.但是g的值只增加1,h还是不相容,怎么办? A*算法 将连续段落集合 S 从p1后面剪切粘贴到p2后面,后继正确性受到影响的段落最多3个: p1,p2和S中最后的一个段落, 因此从s-s’,h的值最多减少3.但是g的值只增加1,h还是不相容,怎么办? A*算法 f(s) = 3 * g(s) + h(s) 迭代加深搜索 算法思路 总体上按照深度优先算法方法进行 对搜索深度需要给出一个深度限制dm,当深度达到了dm的时候,如果还没有找到解答,就停止对该分支的搜索,换到另外一个分支继续进行搜索。 dm从1开始,从小到大依次增大(因此称为迭代加深) 迭代加深搜索是最优的,也是完备的 重复搜索深度较小的节点,是否浪费? IDA*: 迭代加深的A*算法 IDA*的基本思路是:首先将初始状态结点的估价函数H值设为阈值maxH,然后进行深度优先搜索,搜索过程中忽略所有H值大于maxH的结点;如果没有找到解,则加大阈值maxH,再重复上述搜索,直到找到一个解。在保证H值的计算满足A*算法的要求(相容,递增)下,可以证明找到的这个解一定是最优解。在程序实现上,IDA* 要比 A* 方便,因为不需要保存结点,不需要判重复,也不需要根据 H值对结点排序,占用空间小。 在一般的问题中是这样使用IDA*算法的,当前局面的估价函数值+当前的搜索深度 预定义的最大搜索深度时,就停止继续往下搜索。 适用题目:? poj22

文档评论(0)

此项为空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档