数据结构教学课件ppt作者主编马世霞第6章图课件.pptVIP

数据结构教学课件ppt作者主编马世霞第6章图课件.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构教学课件ppt作者主编马世霞第6章图课件.ppt

关键路径 在工程计划和管理中,经常使用AOE网。在研究实际问题时,人们通常关心的是: 1.哪些活动是影响工程进度的关键活动? 2.至少需要多长时间能完成整个工程? 在AOE网中存在唯一的、入度为零的顶点,叫做源点;存在唯一的、出度为零的顶点,叫做汇点。 关键路径 从源点到汇点的最长路径的长度即为完成整个工程任务所需的时间,该路径叫做关键路径。关键路径上的活动叫做关键活动。这些活动中的任意一项活动未能按期完成,就影响整个工程的完成;相反,如果能够抓住关键活动的进度,就可以抓住整个工程进度。 在AOE网中,结点所表示的事件实际上就是它的入度弧代表的活动均已完成,它的出度弧代表的活动可以开始。下图所示的AOE网包括7次活动,6个事件,V1表示整个工程的开始,即源点;V6表示整个工程结束,即汇点。从V1到V6的路径有四条,最长为:V1→V2→V4→V6 ,即为关键路径。关键活动为:a1、a3、a6,整个工程需要的总时间为:6+2+5=13。 V5 V1 V2 V3 V4 V6 a1=6 a2=4 a3=2 a4=1 a5=3 a6=5 a7=1 一个AOE网 6.7 图的应用 【例6-5】河南省地级市组成的地图遍历。 要求:利用图的邻接表表示法来存储河南省各地级市和公路信息,利用深度优先遍历来对每个城市进行遍历。 实现:找出城市之间最省钱的路。 知识点:图的存储结构及建立算法、图的深度优先和广度优先遍历算法。 * * * ② 在非连通图中,从一个顶点出发,只能够访问它所在的连通分量上的所有顶点,因此,还需考虑如何选取下一个出发点以访问图中其余的连通分量。 ③ 在图结构中,如果有回路存在,那么一个顶点被访问之后,有可能沿回路又回到该顶点。 ④ 在图结构中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,存在如何选取下一个要访问的顶点的问题。 6.3.1 深度优先遍历 图的深度优先遍历类似于树的先序遍历。采用的搜索方法的特点是尽可能先对纵深方向进行搜索。这种搜索方法称为深度优先搜索(Depth-First Search)。 用此方法遍历图就很自然地称之为图的深度优先遍历。 假设初始状态是图中所有顶点未曾被访问,首先从图中某个顶点发v出发,并将其标记为已访问过;然后依次从v出发搜索v的每个邻接点w。若w未曾访问过,则以w为新的出发点继续进行深度优先遍历,直至图中所有和源点v有路径相通的顶点(亦称为从源点可达的顶点)均已被访问为止。若此时图中仍有未访问的顶点,则另选一个尚未访问的顶点作为新的源点重复上述过程,直至图中所有顶点均已被访问为止。 1. 深度优先遍历的递归定义 2.基本实现思想: (1)访问顶点v; (2)从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历; (3)重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。 如图6-19所示访问路线。 以图6-20的无向图为例,进行图的深度优先搜索。假设从顶点v1出发进行搜索,在访问了顶点v1之后,选择邻接点v2。因为v2未曾访问,则从v2出发进行搜索。依次类推,接着从v4 、v8 、v5 出发进行搜索。在访问了v5之后,由于v5的邻接点都已被访问,则搜索回到 v8。由于同样的理由,搜索继续回到v4,v2直至v1,此时由于v1的另一个邻接点未被访问,则搜索又从v1到v3,再继续进行下去由此,得到深度优先遍历的顶点访问序列为: v1 →v2 →v4→v8→ v5 →v3→v6→v7 显然,这是一个递归的过程。为了在遍历过程中便于区分顶点是否已被访问,需附设访问标志数组visited[0:n-1], ,其初值为FALSE ,一旦某个顶点被访问,则其相应的分量置为TRUE。 6.3.1 深度优先遍历 操作步骤:递归实现 (1)访问顶点i;visited[i]= True;//算法执行前visited[n]= FALSE (2)w=顶点v的第一个邻接点; (3)while(w存在) if(w未被访问) 从顶点w出发递归执行该算法; w=顶点v的下一个邻接点; 从图的某一点v出发,递归地进行深度优先遍历的过程算法: void DFS(Graph G,int i)/*从第i个顶点出发递归的深度遍历图*/ { int w; visited[i]=True; /*访问第i个顶点*/ printf(%d-,i); for(w=First_AdjVex(G,i); w; w=Next_AdjVex(G,i,w)) if(

文档评论(0)

带头大哥 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档