数据结构 第七章-图2.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 图 ;【重点掌握】: 图的两种遍历方法:遍历的定义、深度优先搜索遍历和广度优先搜索遍历的算法; 应用图的遍历算法判断图的连通性及求图的生成树; 用Prim、Kruskal算法求图的最小生成树; 用Dijkstra算法求解单源最短路径问题;用Floyd算法求所有顶点间的最短路径问题; 利用AOV网进行拓扑排序;利用AOE网求关键路径问题; 【掌 握】: 掌握图的定义和术语; 图的各种存储结构及其构造算法、在实际问题中的求解效率。;7.3 图的遍历; 图的遍历方法有深度优先遍历和广度优先遍历两种。;;void DFS(Graph G, int v) {/* 从第v个顶点出发,递归地深度优先遍历图G*/ /* v是顶点在一维数组中的位置,假设G是非空图*/ visited[v] =1; Visit(v); /*访问第v个顶点*/ for ( w=FirstAdjVex(G, v); w; w=NextAdjVex(G, v, w) ) if (!visited[w]) DFS(G, w); /*对v的尚未访问的邻接??点w递归调用DFS*/ };7.3 图的遍历;void DFSAL(ALGraph G, int i) {/*从第v个顶点出发,递归地深度优先遍历图G*/ /* v是顶点的序号,假设G是用邻接表存储*/ EdgeNode *p; int w; visited[i] =1; Visit(i); /*访问第v个顶点*/ for (p=G.vertices[i].firstarc;p;p=p-nextarc) {w=p-adjvex; /*w是v的邻接顶点的序号*/ if (!visited[w]) DFSAL(G, w); /*若w尚未访问, 递归调用DFS*/ } }/*DFSAL*/; 在遍历时,对图中每个顶点至多调用一次DFS函数,因为一旦某个顶点被标志成已被访问,就不再从它出发进行搜索。因此,遍历图的过程实质上是对每个顶点查找其邻接点的过程。其耗费的时间则取决于所采用的存储结构。 用邻接矩阵做图的存储结构时,查找各个顶点的邻接点所需的时间为O(n2),其中n为图中顶点数。当以邻接矩阵做存储结构时,深度优先搜索遍历图的时间复杂度为O(n2+n)。 当以邻接表做图的存储结构时,找邻接点所需时间为O(e),其中e为无向图中边的数或有向图中弧的数。因此,当以邻接表做存储结构时,深度优先搜索遍历图的时间复杂度为O(n+e)。;图中某顶点v出发: 1)访问顶点v ; 2)访问v的所有未被访问的邻接点w1 ,w2 , …wk ; 3)依次从这些邻接点出发,访问它们的所有未被访问的邻接点; 依此类推,直到图中所有访问过的顶点的邻接点都被访问;;;;void BFSTraverse(MGraph G) /*从v出发,广度优先遍历连通图G*/ /*使用辅助队列Q和访问标志数组visited*/ { for (v=0; vG.vexnum; ++i) visited[v]=0; InitQueue(Q, G.vexnum); /*初始化空的辅助队列Q*/ for (v=0;vG.vexnum;++v) {if(!visited[v]) /*若v尚未访问*/ { visited[v]=1; Visit(v); EnQueue(Q,v); while (!QueueEmpty_Sq(Q)) {DeQueue(Q,u); /*队头元素出队,并赋值给u*/ /*访问u所有未被访问的邻接点*/ for(w=0; wG.vexnum; w++;) if (G.arcs[u,w].adj !visited[w]) { visited[w]=1; Visit(w); EnQueue(Q,w); } }/*while*/ } } }/*BFSTraverse*/;第七 章 图;7.4.1 生成树;7.4 最小的生成树;求生成树的方法:利用遍历算法。 从连通图中的任一顶点出发进行遍历时,除出发点外,其余顶点必须通过一条边才能到达,所以遍历过程中经历的边有n-1条,它和n个顶点组成了连通图的一棵生成树。 由深度优先搜索得到的是深度

您可能关注的文档

文档评论(0)

开心就好 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档