关键路径(防止题目重复)

DAG(Directed AcyclineGraph) 有向无环图
用来描述一个工程或系统的进行过程。
一个工程可以分为若干个子工程,只有完成了这些子工程,
就可以导致整个工程的完成

怎么表示子工程(活动)?
一种是用节点表示活动
另一种使用便表示活动
AOV网:拓扑排序
顶点表示活动,弧表示活动之间的优先制约关系
称这种有向图为顶点表示活动的网,简称AOV网(Activity On Vertex network)

AOE网:关键路径
以弧表示活动,以节点表示活动的开始或结束事件,
称为边表示活动的网,简称AOE网(Activity On Edge)

拓扑排序:

AOV网不允许有贿赂,若有贿赂,则表明某项活动以自己为先决条件,这是荒谬的

在AOV网中没有回路的奇纳提下,将全部活动排列成一个线性序列,
使得若AOV网中有 弧<i, j>存在, 则这个序列中, i一定排在j的前面
则有这种性质的线性序列称为 拓扑有序序列, 相应的拓扑有序排序的算法成为拓扑排序

如何判断AOV网是否存在回路?

拓扑排序的方法:

在有向图中选一个没有钱去的顶点 且 输出
从图中删除该顶点和所有以他为尾的弧
重复上述两部,知道全部顶点全部取出
或者途中不存在无前驱的节点为止

关键路径

AOE网 弧表示活动 权表示时间 节点表示事件

例一:
某项目的任务是对A公司的办公室重新装修
如果10月1日前完成装修工程,项目最迟应该何时开始?

例二:
准备宴会,晚六点开始,最迟几点开始准备?
压缩哪项活动时间可以失踪事件减少?

关于AOE网,我们关心两个问题:
(1)完成整项工程至少需要多少时间?
(2)哪些活动是影响工程进度的关键?

关键路径——路径长度最长的路径(不唯一)
关键路径上的活动是关键活动

4个描述量

ve(vj)——表示事件vj的最早发生时间
ve(v1) = 0

vl(vj)——表示事件vj的最迟发生时间

e(i)——表示活动ai的最早开始时间
l(i)——表示ai的最迟开始时间

l(i) - e(i) ——表示完成后动ai的时间余量
关键活动——l(i) == e(i)

如何找关键活动?
设活动ai用弧<j, k>表示,其持续时间记为:wj,k
则有:
活动的最早开始时间即为j的最早发生时间
(1)e(i) = ve(j);
活动的最晚开始时间等于k的最晚发生时间 - 活动的时间
(2)l(i) = vl(k) - wj,k
【注意】l(i) != vl(j);

如何求ve(j)和vl(j)?
(1)
从ve(1)==0开始
ve(j) = max(ve(i) + wi, j)
一个顶点的做早开始时间就是 从上一个顶点(可能有好几个)
的最早开始时间 + 弧的权值 的最大值(得等所有的活动都完成)
(2)
从vl(n) = ve(n)开始
最后一个事件 的 最早开始时间 == 最晚开始时间

vl(i) = min(vl(j) - wi, j)
一个节点的最晚开始时间
就是从下一个顶点的(可能有好几个)
的最晚开始时间 - 弧的权值

保证所有的活动都能完成
所以要求最小值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值