关键路径与最短路径_C重点.ppt

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

关键路径 对整个工程和系统,人们关心的是两个方面的问题: 1)工程能否顺利进行 对AOV网进行拓扑排序 2)估算整个工程完成所必须的最短时间 对AOE网求关键路径 AOE-网 AOE-网(Activity On Edge Network):即边表示活动的网。AOE网是一个带权的有向无环图。其中: 顶点表示事件(Event) 弧表示活动(Activity) 权值表示活动持续的时间 通常可用AOE网来估算工程的完成时间。 上图AOE-网中: 共有11项活动:a1,a2,a3,…a11; 共有9个事件:v1,v2,v3,…v9,每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。 v9 表 示 整 个 工 程 的 结 束 v5表示a4和a5已经完 成, a7和a8可以开始 与每个活动相联系的数是执行该活动所需的时间 v1 表 示 整 个 工 程 的 开 始 由于整个工程只有一个开始点和一个完成点,在正常的情况(无环)下,网中只有一个入度为零的点(称作源点)和一个出度为零的点(称作汇点) 汇点 源点 依据AOE-网可以研究什么问题? (1)完成整项工程至少需要多少时间? (2)哪些活动是影响工程进度的关键? 完成工程的最短时间是从源点到汇点的最长路径的长度。路径长度最长的路径叫做关键路径。 从v1到v9的最长路径是(v1,v2,v5,v8,v9),路径长度是18。 假设开始点是v1,从v1到vi的最长路径长度叫做事件vi的最早发生时间。这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。 用e(i)表示活动ai的最早开始时间。 V9的最早发生时间是18 事件vi的最早发生时间 l(i)-e(i)两者之差意味着完成活动ai的时间余量。我们把l(i)=e(i)的活动叫做关键活动。 显然,关键路径上的所有活动都是关键活动,因此提前完成非关键活动并不能加快工程的进度。 a6的最早开始时间是5,最迟开始时间是8。如a6推迟3天开始或延迟3天完成,都不会影响整个工程的完成。 活动的最迟开始时间l(i),这是在不推迟整个工程完成的前提下,活动ai最迟必须开始进行的时间。 由此可知:辨别关键活动就是找e(i)=l(i)的活动。为求得AOE网中活动的e(i)和l(i),首先应求得事件的最早发生时间 ve(j)和 最迟发生时间vl(j)。 若活动ai由弧i,j表示,持续时间记为dut(i,j),则有如下关系: 活动i的最早开始时间等于事件j的最早发生时间 e(i)= ve(i) 活动i的最迟开始时间等于事件k的最迟时间减去活动i的持续时间 l(i)= vl(j) - dut(i,j) 求ve(j)和 vl(j)需分两步进行: ai Vi Vj ve[j]和vl[j]可以采用下面的递推公式计算: (1)向汇点递推 ve(源点) = 0 ; ve(j) = Max{ ve(i) + dut(i, j)} 公式意义:从指向顶点Vj的弧的活动中取最晚完成的一个活动的完成时间作为Vj的最早发生时间ve[j] p Vj Vi (2) 向源点递推 由上一步的递推,最后总可求出汇点的最早发生时间ve[n]。因汇点就是结束点,最迟发生时间与最早发生时间相同,即vl[n]=ve[n]。从汇点最迟发生现时间vl[n]开始,利用下面公式: vl(汇点) = ve(汇点); vl(i) = Min{ vl(j) – dut(i, j) } 公式意义:由从Vi顶点指出的弧所代表的活动中取需最早开始的一个开始时间作为Vi的最迟发生时间。 Vj S Vi 由此得到下述求关键路径的算法: 1)输入e条弧i,j,建立AOE网的存储结构。 2)从源点v0出发,令ve[0]=0按拓扑有序求其余各顶点的最早发生时ve[i](1≤i≤ n-1)。如果得到的拓扑有序序列中顶点个数小于网中顶点数n,则说明网中存在环,不能求关键路径,算法终止;否则执行步骤(3)。 3)从汇点vn出发,令vl[n-1]= ve[n-1],按逆拓扑有序求其余各顶点的最迟发生时间vl[i] (n-2 ≥i≥ 0); 4)根据各顶点的ve和vl值,求每条弧s的最早开始时间e(s)和最迟开始时间l(s)。若某条弧满足条件e(s)=l(s),则为关键活动。 如上所述,计算顶点的ve值是在拓扑排序的过程中进行的,需对拓扑排序的算法作如下修改: 1)在拓扑排序之前设初值,令ve(i)=0(0=in-1); 2)在算法中增加一个

文档评论(0)

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

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

1亿VIP精品文档

相关文档