关键路径核心算法

16 篇文章 0 订阅
15 篇文章 0 订阅

关键路径核心算法:求一条不影响整体工程进度的最优路径方案,下面我将分为三个步骤详细讲解该算法。

第一步:求各个事件(结点)的最早时间(在这里我们用一个数组va[]来存储各个事件的最早时间)和最晚时间(在这里我们用一个数组vb[]来存储各个事件的最迟时间),该工程图如下所示。

这里写图片描述

首先进行拓扑排序(0,1,2,3)求最早时间,得到:

va[0]=0;
va[1]=3;
va[2]=max{va[0]+a2,va[1]+a3}=7;
va[3]=max{va[0]+a0,va[1]+a4,va[2]+a5}=12;
然后逆拓扑排列(3,2,1,0)求最迟时间,得到
vb[3]=12;
vb[2]=7;
vb[1]=min{vb[2]-a3,vb[3]-a4}=3;
vb[0]=min{vb[3]-a0,vb[2]-a2,vb[1]-a1}=0;

接下来求该图“边”的最早时间用w(ai)表示,“边”的最迟时间用l(ai)表示;(注意,上面的是结点对应的的最早时间和最短时间,不要混淆)

最早事件时间,过程如下

w(a1)=w(a2)=w(a0)=va[0]=0;
w(a3)=w(a4)=va[1]=3;
w(a5)=va[2]=7;

最迟发生时间,过程如下

l(a0)=vb[3]-a0=7;
l(a1)=vb[1]-a1=0;
l(a2)=vb[2]-a2=5;
l(a3)=vb[2]-a3=3;
l(a4)=vb[3]-a4=11;
l(a5)=vb[3]-a5=7;

最后一步,建一个图表,将边的最早发生时间和边的最晚发生时间对比,如果一样,则这条边就是关键路径上的一条子路径。

最早发生时间最迟发生时间相同点
a007×
a100
a205×
a333
a4311×
a577

将相同的提取出来得到关键路径(a1,a3,a5);

即a1->a3->a5就是这个图的关键路径。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值