第16讲拓扑排序和关键路径详解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
while (!q.Empty()) { // 队列非空 int v1; q.OutQueue(v1); // 取出一个入度为0的顶点 cout v1 ; count++; // 对输出顶点进行记数 for (int v2 = g.FirstAdjVex(v1); v2 != -1; v2 = g.NextAdjVex(v1, v2)) { // v2为v1的一个邻接点 if (--indegree[v2] == 0)//邻接点入度减1 q.InQueue(v2);//入度为0,v2入队 }; } } delete []indegree; // 释放indegree所占用的存储空间 if (count g.GetVexNum()) return FAIL; // g有回路 else return SUCCESS; // 拓扑排序成功 } 一、有向无环图及其应用 2、关键路径 AOE网:在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动的持续时间,称这样的有向图叫做边表示活动的网,简称AOE网。AOE网中没有入边的顶点称为始点(或源点),没有出边的顶点称为终点(或汇点)。 AOE网的性质: ⑴ 只有在某顶点所代表的事件发生后,从该顶点出发的各活动才能开始; ⑵ 只有在进入某顶点的各活动都结束,该顶点所代表的事件才能发生。 a b c d e f g h k 6 4 5 2 1 1 8 7 2 4 4 例如: 整个工程完成的时间为:从有向图的始点到终点的最长路径 始点 终点 6 1 7 4 V3 V1 V4 V6 V5 V2 a4=3 a1=3 a2=2 a6=3 a5=4 a3=2 a7=2 a8=1 顶点表示事件 边表示活动 事件Vj发生表示 ak已结束 ak Vj Vi 事件Vi发生表示 ak可以开始 AOE网 一、有向无环图及其应用 一、有向无环图及其应用 AOE网可以回答下列问题: 1. 完成整个工程至少需要多少时间? 2. 为缩短完成工程所需的时间, 应当加快哪些活动? 从始点到终点的路径可能不止一条,只有各条路径上所有活动都完成了,整个工程才算完成。因此,完成整个工程所需的最短时间取决于从始点到终点的最长路径长度,即这条路径上所有活动的持续时间之和。这条路径长度最长的路径就叫做关键路径。 一、有向无环图及其应用 事件Vj 的最早发生时间Ve[j],是从源点到顶点Vj的最大路径长度。 事件Vj 的最迟发生时间Vl[j], 指在不推迟整个工期的前提下,事件最晚必须发生的时间。 活动ak的最早开始时间e[k],该活动的尾事件的最早发生时间。 活动ak的最晚开始时间l[k],它的弧头顶点事件允许的最晚发生时间减去该活动持续的时间。 活动ak 的时间余量diff[k] =l[k]-e[k]时间余量为0者即为关键活动 ak Vj Vi ve[k]是指从始点开始到顶点vk的最大路径长度。这个长度决定了所有从顶点vk发出的活动能够开工的最早时间。 ve[1]=0 ve[k]=max{ve[j]+lenvj, vk} (vj, vk∈p[k]) p[k]表示所有到达vk的有向边的集合 ⑴ 事件的最早发生时间ve[k] vj vk AOE网应用:关键路径 v2 v1 v3 v4 v5 v8 v6 v7 v9 a1=6 a4=1 a7=9 a10=2 a11=4 a8=7 a9=4 a5=1 a6=2 a3=5 a2=4 v2 v7 v6 v5 v4 v1 v3 v9 v8 ve[k] 0 6 4 5 7 7 16 14 18 ve[k]=max{ve[j]+lenvj, vk} AOE网应用:关键路径 vl[k]是指在不推迟整个工期的前提下,事件vk允许的最晚发生时间。 ⑵ 事件的最迟发生时间vl[k] vj vj vk vl[k]=min{vl[j]-lenvk , vj}(vk, vj∈s[k]) s[k]为所有从vk发出的有向边的集合 AOE网应用:关键路径 v2 v7 v6 v5 v4 v1 v3 v9 v8 ve[k] vl[k] 0 6 4 5 7 7 16 14 18 18 14 16 10 7 8 6 6 0 v2 v1 v3 v4 v5 v8 v6 v7 v9 a1=6 a4=1 a7=9 a10=2 a11=4 a8=7 a9=4 a5=1 a6=2 a3=5 a2=4 vl[k]=min{vl[j]-lenvk , vj} AOE网应用:关键路径 ⑶ 活动的最早开始时间e[i] 若活动ai是由弧vk , vj表示,则

文档评论(0)

我是兰花草 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档