- 1、本文档共106页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《算法与数据结构》教学课件-第9章 图--C语言描述(第2版)张乃孝编著汇
张乃孝 算法与数据结构——C语言描述 9.7.2 关键路径 问题提出 定义 AOE网(Activity On Edge)——也叫边表示活动的网。AOE网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续时间 路径长度——路径上各活动持续时间之和 关键路径——路径长度最长的路径叫~ Ve(j)——表示事件Vj的最早发生时间 Vl(j)——表示事件Vj的最迟发生时间 e(i)——表示活动ai的最早开始时间 l(i)——表示活动ai的最迟开始时间 l(i)-e(i)——表示完成活动ai的时间余量 关键活动——关键路径上的活动叫~,即l(i)=e(i)的活动 问题分析 如何找e(i)=l(i)的关键活动? 求关键路径步骤 求Ve(i) 求Vl(j) 求e(i) 求l(i) 计算l(i)-e(i) 作业: P.317复习题3—9 网络课堂:9 图 上机实验:7.1 7.2 例子:AOV网的邻接表表示如图所示。按上述算法进行拓扑排序 C 0 C 1 C 2 2 2 5 7 ∧ 3 6 ∧ C 3 C 4 C 5 C 6 ∧ ∧ C 7 8 ∧ 4 ∧ 3 ∧ 5 ∧ 0 0 2 2 1 2 2 1 C 8 6 ∧ 1 拓扑序列为∶C1, C4, C0, C7, C8, C2, C3, C6, C5 设AOV网有n个 顶点,e条边,算法最初首先检查入度为零的顶点,并将这些顶点压栈,花费的时间为O(n)。 下面进行拓扑排序时,每个顶点都入栈一次,且每个顶点边表中的边结点都被检查一遍,运行时间为O(n+e)。 因此,拓扑排序算法的时间复杂度为O(n+e) 算法复杂度: 9.7 关键路径 9.7.1 AOE网 9.7.2 关键路径 AOE网:如果在带权的有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动持续的时间,则此带权的有向图称为AOE网(Activity on edge network)。顶点所表示的事件实际上就是它的入边所表示的活动都已完成,它的出边所表示的活动可以开始这样一种状态。 9.7.1 AOE网 把工程计划表示为有向图,用顶点表示事件,弧表示活动; 每个事件表示在它之前的活动已完成,在它之后的活动可以开始 例 设一个工程有11项活动,9个事件 事件 V1——表示整个工程开始 事件V9——表示整个工程结束 问题:(1)完成整项工程至少需要多少时间? (2)哪些活动是影响工程进度的关键? 9 8 7 6 4 5 3 2 1 a1=6 a2=4 a3=5 a4=1 a5=1 a6=2 a7=9 a8=7 a9=4 a10=2 a11=4 设活动ai用弧j,k表示,其持续时间记为:dut(j,k) 则有:(1)e(i)=Ve(j) (2)l(i)=Vl(k)-dut(j,k) j k ai 如何求Ve(j)和Vl(j)? (1)从Ve(1)=0开始向前递推 (2)从Vl(n)=Ve(n)开始向后递推 9 8 7 6 4 5 3 2 1 a2=4 a3=5 a5=1 a6=2 a9=4 a1=6 a4=1 a7=9 a8=7 a10=2 a11=4 V1 V2 V3 V4 V5 V6 V7 V8 V9 顶点 Ve Vl 0 6 4 5 7 7 16 14 18 0 6 6 8 7 10 16 14 18 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 活动 e l l-e ? ? ? ? ? ? 0 0 0 0 2 2 6 6 0 4 6 2 5 8 3 7 7 0 7 7 0 7 10 3 16 16 0 14 14 0 0 3 3 例:AOE网包括11项活动,9个事件,事件v0表示整个工程可以开始这样一个状态;事件v4表示活动a3、a4已经完成,活动a6、a7可以开始这个状态,事件v8表示整个工程结束。如果权所表示的时间单位是天,则活动a0需要6天完成,活动a1需要4天完成,等等。整个工程一开始,活动a0、a1、a2就可以并行进行,而活动a3、a4、a5只有当事件v1、v2、v3分别发生后才能进行,当活动a9、a10完成时,整个工程也就完成 关键路径算法 计算ee(j)必须在顶点vj所有前驱顶点的最早发生时间都已经求出的前提下进行,而计算le(i)必须在顶点vi所有后继顶点的最迟发生时间都已经求出的前提下进行,因此,顶点序列必须是一个拓扑序列 算法复杂度:设AOE网有n个顶点,e条边,在求事件可能的最早发生时间及允许的最迟发生时间,以及活动的最早开始时间和最晚开始时间
文档评论(0)