3-知识的状态空间表示法及搜索问题讨论.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3-知识的状态空间表示法及搜索问题讨论

A*算法的性质(续4) 推论2.1: OPEN表上任意一具有f(n)f*(s) 的节点n,最终将被A*选作扩展节点 由定理2,知A*一定结束,由A*的结束条件,OPEN表中f(t)最小时才结束,而 f(t) ≥f*(t)=f*(s) 所以f(n)<f*(s) 的n均被扩展.得证 A*算法的性质(续5) 定理3(可采纳性定理): 若存在从初始节点s到目标节点t有路径,则A*必能找到最佳解结束 可采纳性的证明 由定理1、2知A*一定找到一条路径结束 设找到的路径s→t不是最佳的(t为目标) 则:f(t)=g(t)f*(s) 由引理2.2知结束前OPEN中存在f(n)≤f*(s)的节点n, 所以 f(n)≤f*(s)f(t) 因此A*应选择n扩展,而不是t.而假设A*选择t结束矛盾.得证. 注意:A*的结束条件 A*算法的性质(续6) 推论3.1 A*选择扩展的任一节点n,有f(n)≤f*(s) 由引理2.2知在A*结束前,OPEN中存在节点n’, f(n’)≤f*(s). 设此时A*选择n扩展. 如果n=n’,则f(n)≤f*(s),得证. 如果n≠n’,由于A*选择n扩展,而不是n’所以有 f(n)≤f(n’)≤f*(s),得证. A*算法的性质(续7) 定理4: 设对同一问题定义了两个A*算法A1和A2,若A2比A1有较多的启发信息,即对所有非目标节点有h2(n)h1(n),则在一条从s到t的路径的隐含图上,搜索结束时,由A2所扩展的每一个节点,也必定由A1所扩展,即A1所扩展的节点数至少和A2一样多. 简写:如果h2(n)h1(n)(目标节点除外), 则A1扩展的节点数 ≥A2扩展的节点数. A*算法的性质(续7) 注意: 在定理4中,评价指标是”扩展的节点数”也就是说,同一个节点无论被扩展多少次,都只计算一次. 定理4的证明 使用数学归纳法,对节点的深度进行归纳. (1)当 d(n)=0时,即只有一个节点,显然定理成立. (2)设d(n)≤k时,定理成立.(归纳假设) (3)当d(n)=k+1时,用反证法. 设存在一个深度为k+1的节点n,被A2扩展, 但没有被A1扩展.而由假设,A1扩展了n的父节点,即n已经被生成了。因此当A1结束时,n将被保留在OPEN中。 定理4的证明(续1) n没有被A1选择扩展,有 f1(n)≥f*(s),即g1(n)+h1(n)≥f*(s) 所以 h1(n)≥f*(s) -g1(n)        (1) 另一方面A2扩展了n,有 f2(n)≤f*(s),即g2(n)+h2(n)≤f*(s) 所以 h2(n)≤f*(s)-g2(n)         (2) 由于d=k时,A2扩展的节点,A1也一定扩展,故有 g1(n)≤g2(n)(因A1扩展的节点数可能较多) 所以 h1(n)≥f*(s)- g1(n)≥f*(s) - g2(n) (3) 比较式(2)、(3)可得:至少在节点n上有h1(n)≥h2(n),这与定理的前提条件矛盾,因此存在节点n的假设不成立。[证毕] 对h的评价方法: 平均分叉数: 设共扩展了d层节点,共搜索了N个节点,则: 其中b*称为平均分叉数 b*越好,说明h效果越好 实验表明,b*是一个比较稳定的常数,同一问题基本不随问题规模变化. 对h的评价举例: 例:8数码问题,随机产生若干初始状态 使用h1: d=14,N=539,b*=1.44 d=20,N=7276,b*=1.47 使用h2: d=14,N=113,b*=1.23 d=20,N=676,b*=1.27 A*的复杂性: 一般说来,A*的算法复杂性是指数型的,可以证明当且仅当以下条件成立时: abs(h(n)-h*(n))≤O(log(h*(n))) A*的算法复杂性才是非指数型的,但是通常情况下,h和h*的差别至少是和离目标的距离成正比的. A*算法的改进 在A算法的第六步,对于ml类节点,存在重新放回到OPEN表的可能,因此一个节点有可能被反复扩展多次。因此单纯用扩展的节点数并不能客观地来评判搜索算法的好坏。因为即便是扩展的节点数比较少,但如果很多节点被多次重复扩展的话,搜索效率同样是很低的。 出现多次扩展节点的原因 主要就是因为在扩展一个节点时,A*并不能保证此时就已经找到了从初始节点s到当前节点n的最短路径,使得算法在第六步,有可能将其重新放回到OPEN表中,而放入OPEN表以后,该节点就有可能被再次扩展。 解决的途径: 对启发函数h进一步加上限制 使得A*算法在扩展一个节点n时,就已经找到了从初始节点s到当前节点n的最短路径 对算法加以改进 能否对算法加以改进,避免或减

文档评论(0)

little28 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档