人工智能、启发式搜索.docVIP

  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文档。上传文档
查看更多
人工智能、启发式搜索

启发式搜索 信息工程学院 计算机科学与技术 118班 路振中 一、何谓启发式搜索 启发式搜索算法有点像广度优先搜索,不同的是,它会优先顺着有启发性和具体特定信息的节点搜索下去,这些节点可能是到达目标的最好路径。我们称这个过程为最优(best-first)或启发式搜索 下面是其基本思想: (1) 假定有一个启发式(评估)函数?f ,可以帮助确定下一个要扩展的最优节点, 我们采用一个约定,即?f的值小表示找到了好的节点。 这个函数基于指定问题域的信息,它是状态描述的一个实数值函数。 (2) 下一个要扩展的节点n是?f(n)值最小的节点(假定节点扩展产生一个节点的所有后 继)。 (3) 当下一个要扩展的节点是目标节点时过程终止 二、典例A搜索算法描述 用最优搜索算法详细说明GRAPHSEARCH。 最优搜索算法根据函数的增加值,(在上述第7步)重排OPEN中的节 点。把GRAPHSEACH的这种算法称为算法A。 下面将会看到,定义使A执行广度搜索或相同代价搜索的函数是可行的。为了确定要用的函数族,必须先 介绍一些其他符号。 设g(n) = 从开始节点n0到节点n的一个最小代价路径的代价。 设h(n) =节点n和目标节点(遍及所有可能的目标节点以及从n到它们的所有可能路径)之间的最小代价路径的实际代价。 那么f(n) = g(n) + h(n)就是从n0到目标节点并且经过节点n的最小代价路径的代价。 注意f(n0)= h(n0)是从n0到目标节点的一个(不受限的)最小代价路径的代价。 对每个节点n,设g?(n)(深度因子)是由A*发现的到节点n的最小代价路径的代价,h?(n)(启发因子)是h(n)的某个估计。 在算法A中,我们用?f(n)= g?(n)+ h?(n)。 A算法流程: (1)生成一个只包含开始节点n0的搜索图G,把n0放在一个叫OPEN的列表上。 (2)生成一个列表CLOSED,它的初始值为空。 (3)如果OPEN为空,则失败退出。 (4)选择OPEN上的第一个节点,把它从OPEN中移入CLOSED,称该节点为n。 (5)如果n是目标节点,顺着G中,从n到n0的指针找到一条路径,获得解决方案,成功退出 (该指针定义了一个搜索树,在第7步建立)。 (6)扩展节点n,生成其后继节点集M,在G中,n的祖先不能在M中。在G中安置M的成 员,使它们成为n的后继。 (7) 从M的每一个不在G中的成员建立一个指向n的指针(例如,既不在OPEN中,也不在 CLOSED中)。把M的这些成员加到OPEN中。对的每一个已在OPEN 中或CLOSED 中的成员m,如果到目前为止找到的到达m的最好路径通过n,就把它的指针指向n。对 已在CLOSE中的M的每一个成员,重定向它在G中的每一个后继,以使它们顺着到目前 为止发现的最好路径指向它们的祖先。 (8) 按递增值,重排OPEN(相同最小值可根据搜索树中的最深节点来解决)。 (9) 返回第3步。 在第7步中,如果搜索过程发现一条路径到达一个节点的代价比现存的路径代价低, 我们就要重定向指向该节点的指针。已经在CLOSED中的节点子孙的重定向保存了后面 的搜索结果,但是可能需要指数级的计算代价。因此,第7步常常不会实现。随着搜索 的向前推进,其中有些指针最终将会被重定向 //OPEN--CLOSE,起点--任意顶点g(n)--目标顶点h(n) closedset := the empty set?????????????????//已经被估算的节点集合??? ??? openset := set containing the initial node?//将要被估算的节点集合 ??? g_score[start] := 0????????????????????????//g(n) ??? h_score[start] := heuristic_estimate_of_distance(start, goal)????//h(n) ??? f_score[start] := h_score[start]????? ?????? ??? while openset is not empty??? //若OPEN表不为空 ??????? x := the node in openset having the lowest f_score[] value?//x为OPEN表中最小的 ??????? if x = goal???????????????????????????????????????????????//如果x是一个解 ??????????? return reconstruct_path(came_from,goal)?????????????// ??????? remove x fro

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档