网站大量收购闲置独家精品文档,联系QQ:2885784924

第8章数据结构 图.ppt

  1. 1、本文档共100页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章数据结构 图

9.7 AOE网与关键路径 若用前面介绍过的带权有向图(DAG)描述工程的预计进度,以顶点表示事件,有向边表示活动,边e的权c(e)表示完成活动e所需的时间(比如天数),或者说活动e持续时间。 图中入度为0的顶点表示工程的开始事件(如开工仪式),出度为0的顶点表示工程结束事件。则称这样的有向图为AOE网(Activity On Edge)。 例如,下图表示某工程的AOE网。共有9个事件和11项活动。其中 A表示开始事件,G表示结束事件。 通常每个工程都只有一个开始事件和一个结束事件,因此表示工程的AOE网都只有一个入度为0的顶点,称为源点(source),和一个出度为0的顶点,称为汇点(converge)。 如果图中存在多个入度为0的顶点,只要加一个虚拟源点,使这个虚拟源点到原来所有入度为0的点都有一条长度为0的边,变成只有一个源点。对存在多个出度为0的顶点的情况作类似的处理。所以只需讨论单源点和单汇点的情况。 在AOE网中,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径。完成整个工程的最短时间就是网中关键路径的长度,也就是网中关键路径上各活动持续时间的总和,我们把关键路径上的活动称为关键活动。因此,只要找出AOE网中的关键活动,也就找到了关键路径。 注意:在一个AOE网中,可以有不止一条的关键路径。 本章小结 本章基本学习要点如下: (1)掌握图的相关概念,包括图、有向图、无向图、完全图、子图、连通图、度、入度、出度、简单回路和环等定义。 (2)重点掌握图的各种存储结构,包括邻接矩阵和邻接表等。 (3)重点掌握图的基本运算,包括创建图、输出图、深度优先遍历、广度优先遍历算法等。 (4)掌握图的其他运算,包括最小生成树、最短路径、拓扑排序等算法。 (5)灵活运用图这种数据结构解决一些综合应用问题。 9.5 最短路径 9.5.1 路径的概念 在一个无权的图中,若从一顶点到另一顶点存在着一条路径,则称该路径长度为该路径上所经过的边的数目,它等于该路径上的顶点数减1。 由于从一顶点到另一顶点可能存在着多条路径,每条路径上所经过的边数可能不同,即路径长度不同,我们把路径长度最短(即经过的边数最少)的那条路径叫做最短路径,其路径长度叫做最短路径长度或最短距离。 对于带权的图,考虑路径上各边上的权值,则通常把一条路径上所经边的权值之和定义为该路径的路径长度或称带权路径长度。 从源点到终点可能不止一条路径,把带权路径长度最短的那条路径称为最短路径,其路径长度(权值之和)称为最短路径长度或者最短距离。 8.5.2 从一个顶点到其余各顶点的最短路径 问题:给定一个带权有向图G与源点v,求从v到G中其他顶点的最短路径,并限定各边上的权值大于或等于0。 采用狄克斯特拉(Dijkstra)算法求解 基本思想是:设G=(V,E)是一个带权有向图, 把图中顶点集合V分成两组: 第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径v,…vk,就将vk加入到集合S中,直到全部顶点都加入到S中,算法就结束了) 第二组为其余未确定最短路径的顶点集合(用U表示)。 按最短路径长度的递增次序依次把第二组的顶点加入S中。在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。 此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U中的顶点的距离从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。 狄克斯特拉算法的具体步骤如下: (1) 初始时,S只包含源点,即S={v},v的距离为0。U包含除v外的其他顶点,U中顶点u距离为边上的权(若v与u有边v,u)或∞(若u不是v的出边邻接点)。 (2) 从U中选取一个距离v最小的顶点k,把k加入S中(该选定的距离就是v到k的最短路径长度cvk)。 (3) 以k为新考虑的中间点,修改U中各顶点的距离:若从源点v到顶点u(u∈U)的距离(经过顶点k, cvk+wku)比原来距离(不经过顶点k,cvu)短,则修改顶点u的距离值为 cvk+wku 。 (4) 重复步骤(2)和(3)直到所有顶点都包含在S中。 V到j的最小距离=MIN(cvk+wkj,cvj) S U

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档