数据结构第7章图.ppt
《数据结构第7章图.ppt》由会员分享,可在线阅读,更多相关《数据结构第7章图.ppt(60页珍藏版)》请在三一办公上搜索。
1、第七章 图,7.1 图的类型定义,7.2 图的存储结构,7.3 图的遍历,7.4 最小生成树,7.5 有向无环图及其应用,7.6 最短路径,7.3 图的遍历,图的遍历:从图中某个顶点出发游历图,访遍图中其余顶点,并且使图中的每个顶点仅被访问一次的过程。在图中,访问部分顶点后,可能又沿着其他边回到已被访问过的顶点。为保证每一个顶点只被访问一次,必须对顶点进行标记,一般用一个辅助数组 visit0.n-1 作为对顶点的标记,当顶点vi未被访问,visiti 值为0;当vi已被访问,则 visiti 值为1。通常,有两种遍历图的路径:深度优先搜索和广度优先搜索,对无向图和有向图都适用。,图的两种遍历
2、方法:1.深度优先搜索图的深度优先遍历类似于树的先根遍历。采用的搜索方法的特点是尽可能先对纵深方向进行搜索。这种搜索方法称为深度优先搜索(Depth-First Search)。相应地,用此方法遍历图就称之为图的深度优先遍历。2.广度优先搜索广度优先遍历类似于树的按层次遍历。采用的搜索方法的特点是尽可能先对横向进行搜索,故称其为广度优先搜索(Breadth-FirstSearch)。相应的遍历就称为广度优先遍历。,1.深度优先搜索 DFS,基本思想:选择图中某个(强)连通分量中某个顶点v出发:访问顶点 v,并将其访问标记置为访问过,即 visitedv=1;依次从 v 的未被访问的邻接点出发,
3、继续对图进行深度优先遍历,直到(强)连通分量中和v有路径相通的顶点都被访问过;如果图中还有顶点未被访问,则另选图中其余(强)连通分量中一个未被访问的顶点作起点,重复上述过程,直至图中所有顶点都被访问过为止。,(强)连通分量的遍历:W1、W2 和 W3 均为 V 的邻接点。SG1 为从 W1 出发可以访问到的顶点集;,SG2 为从 W2 出发可以访问到的顶点集;SG3 为从 W3 出发可以访问到的顶点集。,访问顺序:SG1 SG2 SG3。交集部分只访问一次。,T,T,T,T,T,T,T,T,T,a,c,h,d,k,f,e,b,g,a,c,h,k,f,e,d,b,g,访问标志:,访问次序:,例如
4、:,h,k,void DFSTraverse(Graph G)/深度优先遍历 for(v=1;v=G.vexnum;+v)visitedv=FALSE;/访问标志数组初始化 for(v=1;v=G.vexnum;+v)if(!visitedv)DFS(G,v,Visit);,void DFS(Graph G,int v,Status(*Visit)(int v)/从顶点 v 出发,深度优先搜索遍历连通分量 visitedv=TRUE;(*Visit)(v);/尚未访问的邻接顶点递归调用 for(w=FirstAdjVex(G,v);w=0;w=NextAdjVex(G,v,w)if(!visi
5、tedw)DFS(G,w,Visit);/DFS,深度优先遍历的递归算法,例1:深度优先遍历图G,并写出深度优先遍历序列。序列1:V1,V2,V4,V8,V5,V3,V6,V7序列2:V1,V2,V5,V8,V4,V3,V7,V6,注意:由于没有规定访问邻接点的顺序,深度优先序列不是唯一的。,例2:深度优先遍历图G,并写出深度优先遍历序列。,深度优先遍历序列:,V1,V2,V4,V8,V5,V6,V3,V7,V1,V2,V5,V8,V4,V6,V3,V7,V1,V3,V7,V8,V6,V5,V2,V4,深度优先遍历序列 对图进行深度优先遍历时,按访问顶点的先后次序得到的顶点序列称为该图的深度优
6、先遍历序列,或DFS序列。一个图的DFS序列不一定惟一;源点和存储结构的内容均已确定的图的DFS序列惟一。邻接矩阵表示的图确定源点后,DFS序列惟一;只有给出了邻接表的内容及初始出发点,才能惟一确定其DFS序列,例3:已知图的邻接表如下,求从顶点0出发的深度优先遍历序列。,深度优先遍历序列:,0,1,2,3,4,深度优先遍历序列:,0,1,2,3,40,1,2,4,30,1,4,2,30,3,2,1,40,3,2,4,1,例4:已知图的邻接矩阵,求从顶点0出发的深度优先遍历序列。,深度优先遍历序列:,0,1,3,4,2,5,6,例5:已知图的邻接表如下,求从顶点0出发的深度优先遍历序列。,深度
7、优先遍历序列:,0,1,2,3,2.广度优先搜索 BFS,选择(强)连通分量中的某个顶点vi出发:访问顶点vi,并将其访问标志置为已被访问,即visitedvi=1;访问 vi 的所有未被访问的邻接点w1,w2,wk;依次从这些邻接点出发,访问它们的所有未被访问的邻接点,直到(强)连通分量的所有顶点都被访问;重复上述步骤,直到图中所有的顶点都被访问。,对连通图,从起点V到其余各顶点必定存在路径。,其中,Vw1,Vw2,Vw5的路径长度为1;,Vw3,Vw6,Vw8 的路径长度为2;,Vw4,Vw7 的路径长度为3,各顶点和起点之间存在“远近”关系。就是按照“由近到远”的顺序进行遍历。,void
8、 BFSTraverse(Graph G,Status(*Visit)(int v)/广度优先非递归遍历。使用辅助队列Q和访问标志数组visited。for(v=1;v G.vexnum;+v)visitedv=FALSE;InitQueue(Q);/置空的辅助队列Q for(v=1;v G.vexnum;+v)if(!visitedv)/v尚未访问 visitedv=TRUE;(*Visit)(v);/访问起点 EnQueue(Q,v);/v入队列 while(!QueueEmpty(Q)DeQueue(Q,u);/队头元素出队并置为u,下页,for(w=FirstAdjVex(G,u);w
9、=0;w=NextAdjVex(G,u,w)/访问邻接点 if(!visitedw)/u的尚未访问的邻接顶点w入队列Q visitedw=TRUE;(*Visit)(w);EnQueue(Q,w);/if/while/BFSTraverse,例1:广度优先遍历图G,并写出广度优先遍历序列。广度优先遍历序列:V1,V2,V3,V4,V5,V6,V7,V8,例2:广度优先遍历图G,并写出广度优先遍历序列。广度优先遍历序列:V1,V2,V3,V4,V5,V6,V7,V8,图的广度优先遍历序列 广度优先遍历图所得的顶点序列,定义为图的广度优先遍历序列,简称BFS序列。一个图的BFS序列不一定是惟一的;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 章图

链接地址:https://www.31ppt.com/p-5270469.html