算法设计与分析第五章1图的搜索算法详解.ppt

算法设计与分析第五章1图的搜索算法详解.ppt

  1. 1、本文档共154页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 图的搜索算法 ; 图是一种限止最少的数据结构,因此更接近现实,实际问题中很多数据关系都可以抽象成图,相关问题则可利用图的基本算法进行求解,很早就有专门研究图的是一门数学学科“图论”;其中的计算问题包括图的搜索、路径问题、连通性问题、可平面性检验、着色问题、网络优化等。图论中的著名算法有:求最小生成树的Kruskal算法、求最短路径的Dijkstra算法和Floyd算法、求二部图最大匹配(指派问题)的匈牙利算法、求一般图最大匹配的Edmonds“花”算法、求网络最大流和最小割的算法等。其中的一些算法在数据结构课程中已经学习过了。 ;1.显式图与隐式图 ;2.显式图的常用术语 ;带权图:j即图5 -2给图 5-1中各图的边上附加一个代表性数据 (比如表示长度、流量或其他 ),则称其为带权图 。 环 (cycle):图5-1中 ⑶图中的 v 1点本身也有边相连,这种边称为环。 有限图:顶点与边数均为有限的图,如图 5-1中的三个图均属于有限图。 简单图:没有环且每两个顶点间最多只有一条边相连的图,如图 5-1中的 ⑴图。 邻接与关联:当( v 1, v 2) ∈E,或 v 1, v 2 ∈E,即 v 1, v 2间有边相连时,则称 v 1和 v 2是相邻的,它们互为邻接点( adjacent),同时称( v 1, v 2)或 v 1, v 2 是与顶点 v 1、 v 2相关联的边。 ;顶点的度数 (degree):从该顶点引出的边的条数,即与该顶点相关联的边的数目,简称度。 入度( indegree):有向图中把以顶点 v为终点的边的条数称为是顶点 v的入度。 出度( outdegree):有向图中把以顶点 v为起点的边的条数称为是顶点 v的出度。 终端顶点:有向图中把出度为 0的顶点称为终端顶点,如图 5-1中 ⑵图的 v 3。 ;;3.隐式图术语 1)子集树 ;图5-3 n=3的子集树 ; 当要求解的问题需要在n 元素的排列中搜索问题的解时,解空间树被称作排列树(permutation tree)。 搜索空间为: (1,2,3,……,n-1,n), (2,1,3,……,n-1,n), (2,3,1,……,n-1,n),(2,3,4,1,……,n-1,n),(n,n-1,……,3,2,1) 第一个元素有n 种选择,第二个元素有n-1种选择,第三个元素有n-2种选择,……,第n个元素有1???选择,共计n!个状态。若表示为树形就是一个n度树,这样的树有n! 个叶结点,所以每一个遍历树中所有节点的算法都必须耗时O(n! ) ;;4.图的存储 1)邻接矩阵法 ;;2)邻接表 ;图7.1 ; 5.1.2 图搜索及其术语;2.相关概念和术语 ;活结点:如果已生成一个结点而它的所有儿子结点还没有全部生成,则这个结点叫做活结点。 E-结点:当前正在生成其儿子结点的活结点叫E-结点(正 扩展的结点)。 死结点 :不再进一步扩展或者其儿子结点已全部生成的生成结点就是死结点 。;5.2.1 算法框架 ;2.算法框架 ;1)邻接表表示图的广度优先搜索算法 ;2)邻接矩阵表示的图的广度优先搜索算法;5.2.2 广度优先搜索的应用 ;【例1】已知若干个城市的地图,求从一个城市到另一个城市的路径,要求路径中经过的城市最少。 算法设计: ; 如图5-6表示的是从城市A到城市H的交通图。从图中可以看出,从城市A到城市H要经过若干个城市。现要找出一条经过城市最少一条路线。 ;具体过程如下: ;数据结构设计: ;算法如下:;算法分析:时间复杂度是O(n);空间复杂性为(n2),包括图本身的存储空间和搜索时辅助空间“队”的存储空间。;【例2】走迷宫问题 ;算法设计: ;数据结构设计: ;int jz[8][8]= {{1,0,0,0,1,0,1,1},{0,1,1,1,1,0,1,1}, {0,1,1,0,0,1,1,1}, {0,1,0,1,1,1,0,1}, {1,1,0,1,1,1,0,0},{0,0,1,1,1,1,1,0}, {1,1,1,0,0,1,1,0}, {1,1,1,1,0,0,0,1}}; struct {int city, pre;} sq[100]; int qh,qe,i,visited[100]; main( ) {int i,n=8; for(i=1;i=n,i=i+1) visited[i]=0; search( ); } ;search( ) {qh=0; qe=1;maze[1][1]=-1; Sq[1].pre=0;sq[1].x=1;sq[1].y=1;    while( qhqe) /当队不空/  {qh=

文档评论(0)

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

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

1亿VIP精品文档

相关文档