- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
规定: ①如果:diag(i,k)≤diag(i,j) 则规则排列次序为: Rik, Rij 同一行四条规则中,对角线函数值小的排在前面 ②如果:diag(i,k)=diag(i,j) 则规则排列次序为:Rij,Rik j<k 对角线长度相等的规则按照字母排列顺序排序 按照对角线长度定义规则的排列次序为: R12,R13,R11,R14 R21,R24,R22,R23 R31,R34,R32,R33 R42,R43,R41,R44 0 (12) (42) (43) (21) (24) (31) R12 R24 R31 R43 讨论: ①利用局部知识排列规则是有效的。 ②BACKTRACK算法对重复出现的状态没有判断,所以可能造成出现死循环。 ③没有对搜索深度加以限制,可能造成搜索代价太大。 1.3 图搜索策略 1 问题的引出 2 基本概念 3 图搜索策略 4 例子: 1 问题的引出 回溯搜索:只保留从初始状态到当前状态的一条路径。 图搜索:保留所有已经搜索过的路径。 2 基本概念 –节点深度: 根节点深度=0 其它节点深度=父节点深度+1 0 1 2 3 节点深度 节点深度 节点深度 节点深度 – 路径: 设一节点序列为(n0, n1,…,nk),对于i=1,…,k,若节点ni-1具有一个后继节点ni,则该序列称为从n0到nk的路径。 – 路径的耗散值 一条路径的耗散值等于连接这条路径各节点间所有耗散值的总和。用C(ni, nj)表示从ni到nj的路径的耗散值。 设:路径上任两点间耗散值为C(ni,nj),则从ni到nk的路径耗散值为C(ni,nk)= C(ni,nj)+ C(nj,nk) – 扩展一个节点 生成出该节点的所有后继节点,并给出它们之间的耗散值。这一过程称为“扩展一个节点”。 3 图搜索策略 图搜索的实质:是从问题空间中找出一张包含目标节点的子图。该算法不是递归,以后的算法都是这种模式。 算法的思想:核心是有2张表:一个是OPEN(),一个是CLOSE()。OPEN中是逐渐向里扩大,里面存的都是节点,这些节点是在OPEN中进行排队,谁排在前面就将谁弹出来,弹一个往CLOSE里面塞一个,就这样来回一个循环过程。 图搜索 图 初始图 初始图最开始只有一个状态S(初始节点) OPEN表中最开始只有一个节点S CLOSE中最开始是空的,CLOSE的节点必须来至于OPEN。 永远代表当前节点 n从OPEN中删除掉 n加到CLOSE中 PROCEDRUE GRAPHSEARCH 1 G=G0 (G0 =S),OPEN = (S) 2 CLOSED =( ) 3 LOOP:if OPEN =( ) then EXIT(FAIL) 4 n FIRST(OPEN),REMOVE(n,OPEN),ADD(n,CLOSED) 5 if GOAL(n) THEN EXIT(SUCCESS) 6 ﹛mi﹜ EXPAND(n) ,G ADD(mi,G) mi不含n的先辈节点 不是目标将该点向下扩展,对n节点的扩充,扩充完的节点放在集合中 7 OPEN ADD(mj,OPEN) mj不在OPEN,CLOSED中 ● 标记每个mj到n节点的指针 ● 确定是否需要修改已在OPEN,CLOSED中的每个节点到n的指针 ● 确定是否需要修改已在CLOSED中的每个节点的后继节点原来的指针 8 按照某种方式重新排列OPEN表中的节点, GO LOOP 6 ﹛mi﹜← EXPAND(n) ,G←ADD(mi,G) 被扩充点n 是进CLOSE的,然后将子节点加到图上。 子节点统称为{mi},然后对子节点进行分类: ﹛mi﹜ = ﹛mj﹜ ∪ ﹛ml﹜ ∪ ﹛mk﹜ 这次扩充的全部节点 新节点(不在OPEN和COLSE) 已经在CLOSE里 已经在OPEN里 这些子节点已经被以前的节点扩充过了放在OPEN排队,排队排上了,就进入CLOSE,它的子节点一定被展开了,排队没有排上,就在OPEN呆着,子节点没
文档评论(0)