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

若存在多条关键路径,则需同时提高这些关键路径上某些关键活动的速度,才能缩短整个工程的工期。 提高非关键活动的速度是不能加快整个工程进度的。 为了求出关键活动,首先定义几个变量: 事件的最早发生时间Ve(j) 事件的最晚发生时间Vl(i) 活动(边)的最早开始时间Ee(i) 活动(边)的最晚开始时间El(i) 关键路径 ① 事件的最早发生时间Ve(j):Vj的最早发生时间 从源点V0到Vj的最长路径长度 决定了所有以Vj为起点的弧所表示的活动能开始的最早时间 Ve(j)的计算方法(递推): Ve(0) = 0 Ve(j) = max{Ve(i) + wij}, 1=j=n-1, n为顶点数 i 弧Vi, Vj的权值 即从所有以Vj为终点的弧的集合中,找一个Ve(i)+wij最大的作为Ve(j) 显然,必须在Vj的所有前驱顶点的Ve计算出来后,才能求出Ve(j)。 因此,需对AOE网进行拓扑排序,按拓扑序列逐个求出各顶点事件的最早发生时间。 关键路径 Ve(0) = 0 源点 汇点 V0 V1 V5 V2 V4 V3 a1=3 a2=2 a3=2 a5=4 a4=3 a7=2 a8=1 a6=3 Ve(1) = 3 Ve(2) = 2 Ve(3) = 6 关键路径 ...... ② 事件的最晚发生时间Vl(i) 在不推迟整个工程完成日期的前提下,事件Vi所允许的最晚发生时间 Vl(i)的计算公式(从汇点Vn-1开始向源点方向递推): Vl(n-1) = Ve(n-1) Vl(i) = min{Vl(j) - wij}, 0=i=n-2, n为顶点数 j 即从所有以Vi为起点的弧的集合中,找一个Vl(j)-wij最小的作为Vl(i) 因此,需对AOE网进行逆拓扑排序,然后按逆拓扑序列逐个求出各顶点事件的最晚发生时间Vl。 关键路径 ③ 活动(边)的最早开始时间Ee(i) ④ 活动(边)的最晚开始时间El(i) 设活动ai由弧Vj, Vk表示,则Ee(i) = Ve(j) 即活动ai的最早开始时间 = 事件Vj的最早发生时间 设活动ai由弧Vj, Vk表示,则El(i) = Vl(k) - wjk 对于活动ai,若El(i) = Ee(i),则ai是关键活动。不能延误! 关键路径 (3) 求关键路径的算法 AOE 网用什么数据结构表示合适?怎么求关键路径? 算法步骤: ① 从源点V0出发, 令Ve(0)=0, 按拓扑排序的序列依次计算其余顶点的Ve(j) (1=j=n-1); ② 从汇点Vn-1出发, 令Vl(n-1)=Ve(n-1), 按逆拓扑序列求其余顶点的Vl(i) (0=i=n-2); ③ 根据各顶点的Ve和Vl, 求每个活动ai的Ee(i)和El(i)。若Ee(i)==El(i), 则ai为关键活动。依次输出这些关键活动可得关键路径; 关键路径 AOE 网用十字链表表示 存储结构 邻接矩阵 邻接表 十字链表 邻接多重表 图的遍历 DFS BFS 最小生成树 Prim Kruskal 最短路径 Dijkstra Floyd 定义、术语、操作 图 有向无环图的应用 关键路径 拓扑排序 7.7 小结 第7章 作业 1. 设有向图G1: 2. 设无向图G2: 写出从顶点V0出发,按“DFS”和“BFS”方法遍历G2所得到的顶点序列。 试构造出G1的“邻接矩阵”、“邻接表”和“十字链表”结构。 V0 V3 V6 V7 V5 V4 V1 V2 V0 V1 V2 V3 V4 V5 V6 V7 第7章 作业 3. 设无向网G3: 4. 设有向网G4: 用Floyd算法求出G4中任意两点间最短路径长度的矩阵,即: D-1,D0 ,D1 ,D2 ,D3 ,D4 ,D5=? 画出从a 出发,按Prim算法产生的一棵最小生成树。 a b c d f e h g 2 3 2 1 2 4 1 2 2 1 1 V0 V1 V2 V5 V3 V4 100 30 50 5 10 10 60 20 5. 设有向图G5: A B C E F D 写出G5的所有拓扑序列。 * 递归。 设从V0出发,V0的邻接点为V1, V2, ..., Vt 1) 访问V0; 2) 从V1出发,按DFS遍历; 从V2出发,按DFS遍历; ...... 从Vt出发,按DFS遍历; 算法思路: 深度优先搜索算法 void DFS(Vnode G[], int v) //对图G从序号为v的顶点出发,按DFS搜索 { int u; visit(G

文档评论(0)

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

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

1亿VIP精品文档

相关文档