- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
启发式信息加速搜索盲目搜索的缺陷改进:根据与问题相关的知识问题,引入启发式信息。策略:从初始结点S出发,选择离目标最近的子节点扩展。定义:f(n)为经过结点n的且从起点到目标的最短路径长度的估计函数。f(n)的值越小,表示路径越短引入f(n)的搜索过程f(n)f(n)=?f(n)=g(n)+h(n)g(n)表示起始结点到n的最短路径长度的估计h(n)表示n到目标结点的最短路径长度的估计g=?h=?引入g(n)、h(n)的搜索过程f(n)≈f*(n)八数码问题启发式搜索算法——A算法定义g(n)为已发现的初始结点到结点n所有路径中的最短路径的代价。定义h(n)为结点n到目标结点的最短路径长度的估计,也称启发式函数。f(n)=g(n)+h(n)利用f加速搜索的算法使用Open表、Closed表A算法——伪代码初始化open表、closed表为空,定义s为初始状态结点。计算f(s):=g(s)+h(s)。将s加入到open表中。如果open表为空,则搜索失败退出,否则从open表中取出第一个结点n,将n插入到closed表中如果n是目标结点,搜索成功,返回问题的解应用每一个可用的算子Opi,扩展n生成子结点mi,计算g(mi)=g(n)+C(n,mi);f=g(mi)+h(mi);如果mi已经存在于open表中或者在closed表中,且先前计算的g(mi)小于等于当前的g(mi),那么goto6。否则从open表或closed表中取出与mi相同的子结点mi’令mi:=mi’,将mi的父指针指向n将结点mi插入到open表,然后将open表按f值排序。goto3A算法——数据结构结点n需要以下属性:用于识别相同结点的标志IDg,f,h指向父结点的指针open表用优先级队列实现,并提供以下操作add_sort(open,n)get_first(open,n)search(open,n)remove(open,n)closed表的操作add(closed,n)search(open,n)remove(closed,n)A算法搜索过程openclosed1S=02A=4,B=8S3C=5,D=7,B=8S,A4D=7,B=8S,A,C5G=8,B=8S,A,C,D演示A搜索过程示意图广度优先A搜索最优搜索算法——A*算法A*算法流程与A算法完全一样启发式函数A算法对h(n)没有任何要求A*算法要求对每一个节点,h(n)≤h*(n)。例如h(n)=0解的效果A算法不保证找到最优解A*算法保证找到最优解A*算法的可采纳性可采纳性对任意的图,当存在初始状态s到目标节点g的路径的时候,如果搜索算法总是在s到g的最佳路径上停止搜索,则称该算法是可采纳的。A*算法是可采纳的A*算法能找到最优解吗?在什么情况下能找到最优解?A*算法的可采纳性稳定条件图中的每个结点的后继结点是有限的。图中的弧的代价都大于某个正数ε。对图中的所有结点n,h(n)≤h*(n)。也就是说h(n)决不会超过实际值h*(n)定理1:如果图和h(n)具有上述稳定条件,而且从开始结点n0到目标结点有一条有限代价的路径,那么A*算法保证终止于到达目标的一条最小代价路径。A*算法的可采纳性引理1:在A*终止前的每一步,总有一个结点n*,它在Open表中,并具有一下特性:n*在到达目标的一条最优路径上A*已经发现了到达n*的一条最优路径f(n*)≤f*(n*)最优路径:n0,n1,…,n*,np,…,G引理一证明(1)数学归纳法当m=1时,也就在是算法的第一步:仅有初始结点n0被放入Open表中。令n*=n0,因为是n0起点,所以n0必然在从n0到目标的一条最优路径上,而且g(n0)=0,g*(n0)=0。故结论(1)(2)在m=1时成立因为f(n*)=f(n0)=h(n0)≤h*(n0)=f*(n0)=f*(n*)所以结论(3)也成立引理一证明(2)假设当算法在第m步时,引理1成立,那么在Open表中存在某个结点n*,满足下列条件n*在到达目标的一条最优路径上A*已经发现了到达n*的一条最优路径f(n*)≤f*(n*)于是,当算法处在第m+1步时,有两种情况:n*没有被扩展:这种情况下,n*没有任何变化。所以引理1成立。n*被扩展:最优路径:n0,n1,…,n*,np,…,G第m+1步,n*没有
文档评论(0)