书签 分享 收藏 举报 版权申诉 / 26
上传文档赚钱

类型数据结构课件:图的遍历.ppt

  • 上传人(卖家):罗嗣辉
  • 文档编号:2041024
  • 上传时间:2022-01-19
  • 格式:PPT
  • 页数:26
  • 大小:1.34MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《数据结构课件:图的遍历.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据结构 课件 遍历
    资源描述:

    1、1第第1111章章 图图数据结构与算法分析2图的遍历许多应用需要对图中的每个结点恰好访问一许多应用需要对图中的每个结点恰好访问一次次.基于图的拓扑结构基于图的拓扑结构,以特定顺序依次访问图中以特定顺序依次访问图中各个顶点是很有用的各个顶点是很有用的.例如例如: 人工智能搜索人工智能搜索 最短路径问题最短路径问题3图的遍历 从图中某个顶点出发游历图,访遍图中其余顶点,并且使图中的每个顶点仅被访问一次的过程。深度优先搜索深度优先搜索广度优先搜索广度优先搜索遍历应用举例遍历应用举例4图的遍历(2)为了保证访问所有顶点为了保证访问所有顶点:void graphTraverse(const Graph*

    2、 G) for (v=0; vn(); v+) G-setMark(v, UNVISITED); / Initialize for (v=0; vn(); v+) if (G-getMark(v) = UNVISITED) doTraverse(G, v);5 从图中某个顶点V0 出发,访问此顶点,然后依次从依次从V0的各个未被访问的邻的各个未被访问的邻接点出发深度优先搜索遍历图接点出发深度优先搜索遍历图,直至图中所有和V0有路径相通的顶点都被访问到。一、深度优先搜索遍历图连通图的深度优先搜索遍历连通图的深度优先搜索遍历6Vw1SG1SG2SG3W1、W2和W3 均为 V 的邻接点,SG1、S

    3、G2 和 SG3 分别为含顶点W1、W2和W3 的子图。访问顶点 V :for (W1、W2、W3 ) 若该邻接点W未被访问, 则从它出发进行深度优先搜索遍历。w2w3w27从上页的图解可见:1. 从深度优先搜索遍历连通图的过程类似于树的先根遍历;解决的办法是:为每个顶点设立一个 “访问标志”。2. 如何判别V的邻接点是否被访问?8深度优先搜索(2)Cost: (|V| + |E|).9深度优先搜索 DFS(1)/ Depth first searchvoid DFS(Graph* G, int v) PreVisit(G, v); / Take action G-setMark(v, VIS

    4、ITED); for (int w=G-first(v); wn(); w = G-next(v,w) if (G-getMark(w) = UNVISITED) DFS(G, w); PostVisit(G, v); / Take action10 首先将图中每个顶点的访问标志设为 FALSE, 之后搜索图中每个顶点,如果未被访问,则以该顶点为起始点,进行深度优先搜索遍历,否则继续检查下一顶点。非连通图的深度优先搜索遍历11图的遍历(2)为了保证访问所有顶点为了保证访问所有顶点:void graphTraverse(const Graph* G) for (v=0; vn(); v+) G-

    5、setMark(v, UNVISITED); / Initialize for (v=0; vn(); v+) if (G-getMark(v) = UNVISITED) doTraverse(G, v);12abchdekfgF F F F F F F F FT T T T T T T TTach d kfe bgachkfedbg访问标志访问标志: :访问次序访问次序: :例如例如:0 1 2 3 4 5 6 7 813二、广度优先搜索遍历图Vw1w8w3w7w6w2w5w4对连通图,从起始点V到其余各顶点必定存在路径。 其中,V-w1, V-w2, V-w8 的路径长度为1;V-w7,

    6、V-w3, V-w5 的路径长度为2;V-w6, V-w4 的路径长度为3。w1Vw2w7w6w3w8w5w414 从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问未被访问过的邻接点,之后按这些顶点被访问的先后次按这些顶点被访问的先后次序依次访问它们的邻接点序依次访问它们的邻接点,直至图中所有和V0有路径相通的顶点都被访问到。 若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。15广度优先搜索 (1)除了用队列代替递归栈外,除了用队列代替递归栈外,BFS的实现与的实现与DFS相似相似. BFS在进一步深入访问

    7、其他顶点前,检查起点在进一步深入访问其他顶点前,检查起点的所有邻接点的所有邻接点.16Breadth First Search (3)17Breadth First Search (2)void BFS(Graph* G, int start,Queue*Q) int v, w; Q-enqueue(start); / Initialize Q G-setMark(start, VISITED); while (Q-length() != 0) / Process Q Q-dequeue(v); PreVisit(G, v); / Take action for(w=G-first(v);wn

    8、();w=G-next(v,w) if (G-getMark(w) = UNVISITED) G-setMark(w, VISITED); Q-enqueue(w); 18三、遍历应用举例1. 求一条求一条从顶点从顶点 i 到顶点到顶点 s 的的 简单路径简单路径2. 求两个顶点之间的一条求两个顶点之间的一条路径路径 长度最短长度最短的路径的路径191. 求一条求一条从顶点从顶点 i 到顶点到顶点 s 的简单路径的简单路径abchdekfg 求从顶点 b b 到顶点 k k 的一条简单路径。 从顶点 b b 出发进行深度优先搜索遍历。例如例如: : 假设找到的第一个邻接点是a a,则得到的结点

    9、访问序列为: b a d h c e k f g。 假设找到的第一个邻接点是c c,则得到的结点访问序列为: b c h d a e k f g,201. 从顶点 i 到顶点 s ,若存在路径,则从顶点 i 出发进行深度优先搜索,必能搜索到顶点 s 。2. 遍历过程中搜索到的顶点不一定是路径上的顶点。结论结论:3. 由它出发进行的深度优先遍历已经完成的顶点不是路径上的顶点。21void DFSearch( int v, int s, char *PATH) / 从第v个顶点出发递归地深度优先遍历图G, / 求得一条从v到s的简单路径,并记录在PATH中 visitedv = TRUE; / 访

    10、问第 v 个顶点 Append(PATH, getVertex(v); / 第v个顶点加入路径 for (w=FirstAdjVex(v); w!=0&!found; w=NextAdjVex(v) ) if (w=s) found = TRUE; Append(PATH, w); else if (!visitedw) DFSearch(w, s, PATH); if (!found) Delete (PATH); / 从路径上删除点 v 222. 求两个顶点之间的一条求两个顶点之间的一条路径路径 长度最短长度最短的路径的路径 若两个顶点之间存在多条路径,则其中必有一条路径长度最短的路径。如何求得这条路径?23abchdekfg因此,求路径长度最短的路径可以基于广求路径长度最短的路径可以基于广度优先搜索遍历进行度优先搜索遍历进行,但需要修改链队列修改链队列的结点结构及其入队列和出队列的算法的结点结构及其入队列和出队列的算法。深度优先搜索访问顶点的次序次序取决于图的存储结构存储结构,而广度优先搜索访问顶点的次序是按“路径长度”渐增的次序。24课后练习课后练习求两个顶点之间的一条求两个顶点之间的一条路径路径 长度最短长度最短的路径的路径 的具体步的具体步骤骤请告诉我()25要点回顾要点回顾 图型结构是遍历是关键操作26图的最短路径。 课后预习课后预习

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:数据结构课件:图的遍历.ppt
    链接地址:https://www.163wenku.com/p-2041024.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库