第15讲图的遍历课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第15讲图的遍历课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 15 遍历 课件
- 资源描述:
-
1、 一、图的遍历(深度、广度)一、图的遍历(深度、广度)二、最小生成树二、最小生成树 三、三、普里姆算法普里姆算法 四、克鲁斯卡尔算法四、克鲁斯卡尔算法难点难点从图的某顶点出发,访问图中所从图的某顶点出发,访问图中所有顶点,并且每个顶点仅访问一次。有顶点,并且每个顶点仅访问一次。在图中,访问部分顶点后,可能又沿着其他在图中,访问部分顶点后,可能又沿着其他边回到已被访问过的顶点。边回到已被访问过的顶点。为保证为保证每一个顶点只被访问一次每一个顶点只被访问一次,必须对顶,必须对顶点进行标记,一般用一个标识域点进行标记,一般用一个标识域 tagtag作为对顶点的标作为对顶点的标记,当顶点记,当顶点vi
2、 vi未被访问,未被访问,tagtag初始值为初始值为 UNVISITEDUNVISITED;当当vi vi已被访问,则已被访问,则tagtag值为值为 VISITEDVISITED。图的遍历与图的遍历与树的遍历有什么不同树的遍历有什么不同 有两种遍历方法有两种遍历方法(它们对无向图,有向图都适用)它们对无向图,有向图都适用)深度优先遍历深度优先遍历 Depth_FirstDepth_First Search Search 广度优先遍历广度优先遍历 Breadth_FirstBreadth_First Search Search算法:算法:从图中某顶点从图中某顶点v v出发:出发:(1 1)访
3、问顶点)访问顶点v v;(2 2)依次从)依次从v v的未被访问的邻接点出发,继续对图进的未被访问的邻接点出发,继续对图进行深度优先遍历;行深度优先遍历;深一层递归深一层递归递归返回递归返回深度优先遍历序列深度优先遍历序列?入栈序列入栈序列?出栈序列出栈序列?V1V3V2V4V5V6V7V8 V1遍历序列:遍历序列:V1V2 V2V4 V4V5 V5深一层递归深一层递归递归返回递归返回深度优先遍历序列深度优先遍历序列?入栈序列入栈序列?出栈序列出栈序列?V1V3V2V4V5V6V7V8 V1遍历序列:遍历序列:V1V2 V2V4 V4V5V8 V8深一层递归深一层递归递归返回递归返回深度优先遍
4、历序列深度优先遍历序列?入栈序列入栈序列?出栈序列出栈序列?V1V3V2V4V5V6V7V8 V1遍历序列:遍历序列:V1V2 V2V4 V4V5V8深一层递归深一层递归递归返回递归返回深度优先遍历序列深度优先遍历序列?入栈序列入栈序列?出栈序列出栈序列?V1V3V2V4V5V6V7V8 V1遍历序列:遍历序列:V1 V7V2V4V5V8V3 V3V6 V6V7图的深度优先遍历算法图的深度优先遍历算法图的深度优先遍历算法图的深度优先遍历算法 A A H H G G F F E E D D C C B B图的深度优先遍历算法图的深度优先遍历算法 0 0 1 1 2 2 3 3 4 4 5 5 6
5、 6 7 7A AB BC CD DE EF FG GH H1 12 26 67 73 30 01 11 10 04 45 53 36 62 25 52 23 34 4 图中有图中有 n 个顶点,个顶点,e 条边。条边。如果用如果用邻接表邻接表表示图,沿表示图,沿adjLink链到链到next 链链可以找到某个顶点可以找到某个顶点 v 的所有邻接顶点的所有邻接顶点 w。由于。由于总共有总共有 2e 个边结点,所以扫描边的时间为个边结点,所以扫描边的时间为O(e)。而且对所有顶点递归访问。而且对所有顶点递归访问1次,所以遍次,所以遍历图的时间复杂性为历图的时间复杂性为O(n+e)。如果用如果用邻
6、接矩阵邻接矩阵表示图,则查找每一个顶点的表示图,则查找每一个顶点的所有的边,所需时间为所有的边,所需时间为O(n),则遍历图中所有,则遍历图中所有的顶点所需的时间为的顶点所需的时间为O(n2)。有向图的邻接表如下,有向图的邻接表如下,要求(要求(1)画出其邻)画出其邻接矩阵存储;(接矩阵存储;(2)写出图的所有强连同写出图的所有强连同分量;(分量;(3)写出顶)写出顶点点a到顶点到顶点i的全部简的全部简单路径;(单路径;(4)写出)写出以以A为出发点开始深为出发点开始深度优先遍历得到的顶度优先遍历得到的顶点序列。点序列。1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9A
7、AB BE ED DH HI IC CG GF F2 27 76 63 34 45 52 28 87 73 39 96 6 已知一个有向图如下,则从顶点已知一个有向图如下,则从顶点a出发进行深出发进行深度优先遍历,不可能够得到的度优先遍历,不可能够得到的DFS序列为?序列为?A adbefc B adcefb C adcbfe D adefbcacefdb算法:算法:从图中某未访问过的顶点从图中某未访问过的顶点vi出发:出发:(1)访问顶点)访问顶点vi;(2)访问)访问 vi 的所有未被访问的邻接点的所有未被访问的邻接点w1,w2,wk;(3)依次从这些邻接点出发,访问它们的所有未被访问)依
8、次从这些邻接点出发,访问它们的所有未被访问的邻接点的邻接点;依此类推,直到图中所有访问过的顶点的依此类推,直到图中所有访问过的顶点的邻接点都被访问;邻接点都被访问;(类似于树的层次遍历)(类似于树的层次遍历)为实现为实现(3)(3),需要保存在步骤,需要保存在步骤(2)(2)中访问的顶点,而且中访问的顶点,而且访问访问这些顶点这些顶点邻接点邻接点的顺序为:先保存的顶点,其邻接点先被的顺序为:先保存的顶点,其邻接点先被访问。访问。在广度优先遍历算法中,在广度优先遍历算法中,需设置一需设置一队列队列Q Q,保存已访问的顶点,保存已访问的顶点,并控制遍历顶点的顺序。并控制遍历顶点的顺序。V1V1 V
9、8V8 V7V7 V6V6 V5V5 V4V4 V3V3 V2V2广度优先遍历序列广度优先遍历序列?入队序列入队序列?出队序列出队序列?V1V3V2V4V5V6V7V8遍历序列:遍历序列:V1V1广度优先遍历序列广度优先遍历序列?入队序列入队序列?出队序列出队序列?V1V3V2V4V5V6V7V8遍历序列:遍历序列:V1V2V2V3V3广度优先遍历序列广度优先遍历序列?入队序列入队序列?出队序列出队序列?V1V3V2V4V5V6V7V8遍历序列:遍历序列:V1V2V3V3V4V4V5V5广度优先遍历序列广度优先遍历序列?入队序列入队序列?出队序列出队序列?V1V3V2V4V5V6V7V8遍历序
10、列:遍历序列:V1V2V3V4V4V5V5V6V6V7V7广度优先遍历序列广度优先遍历序列?入队序列入队序列?出队序列出队序列?V1V3V2V4V5V6V7V8遍历序列:遍历序列:V1V2V3V4V5V5V6V6V7V7V8V8template void BFSTraverse(const AdjListDirGraph&g,void(*Visit)(const ElemType&)int v;for(v=0;v g.GetVexNum();v+)g.SetTag(v,UNVISITED);for(v=0;v g.GetVexNum();v+)if(g.GetTag(v)=UNVISITED)
11、BFS(g,v,Visit);图的广度优先遍历算法图的广度优先遍历算法template void BFS(const AdjListDirGraph&g,int v,void(*Visit)(const ElemType&)g.SetTag(v,VISITED);ElemType e;g.GetElem(v,e);Visit(e);LinkQueue q;q.InQueue(v);图的广度优先遍历算法图的广度优先遍历算法while(!q.Empty()/队列队列q非空非空,进行循环进行循环int u,w;q.OutQueue(u);for(w=g.FirstAdjVex(v);w=0;w=g.
12、NextAdjVex(v,w)if(g.GetTag(w)=UNVISITED)g.SetTag(w,VISITED);g.GetElem(w,e);Visit(e);q.InQueue(w);图的广度优先遍历算法图的广度优先遍历算法 V0V0 V2V2 V3V3 V1V1 V5V5 V4V4 V0V0 V2V2 V3V3 V1V1 V5V5 V4V4深度优先遍历深度优先遍历广度优先遍历广度优先遍历两种遍历两种遍历的比较的比较两者遍历的时间复杂度相同,不同两者遍历的时间复杂度相同,不同之处仅仅在于对顶点访问的顺序。之处仅仅在于对顶点访问的顺序。无向图的连通分量和生成树无向图的连通分量和生成树
展开阅读全文