数据结构之关键路径(邻接表):详细阐述每一步

本文深入探讨了关键路径的概念,它在有向无环图(AOE-网)中表示最长路径。介绍了如何计算事件的最早发生时间和最迟发生时间,以及如何通过邻接表结构寻找关键活动。关键路径上的活动决定了工程的完成时间,提前完成非关键活动无法缩短工程进度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关键路径

与AOV-网相对应的时AOE-网即边表示活动的网。AOE-网时一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动的时间。通常,AOE-网可用来估算工程的完成时间。

如图:一个AOE-网

由于在AOE-网中只有一个开始点和一个完成点,故在正常的情况下(无环)下,网中只有一个入度为零的顶点和一个出度为零的顶点。

接下来进入正题,神魔是关键路径:路径最长的路径叫关键路径。假设开始点是v1,从v1到vi的最长路径称为事件vi最早发生时间,这个时间决定了所有以vi为尾的弧所表示的活动的最早开始时间。我们用e(i)表示活动ai的最早开始时间,还可以定义一个最迟开始时间了l(i),这是工程不延期的情况下,活动ai必须进行的时间。两者之间的差值l(i)-e(i)意味着完成活动的时间余量我们把这种相等关系的活动叫做关键活动。

显然,关键路径上的所有活动都叫关键活动,因此,提前完成非关键活动并不能加快工程的进度。

由以上分析可知,辨别关键活动就是要找e(i)=l(i)的活动,为了求得AOE-网中活动的e(i)和l(i),首先应求得时间最早发生时间ve(i)和最迟发生时间vl(i)。如果活动ai有弧<j,k>表示,其持续时间记为dut(<j,k>),则关系如下:

e(i)=ve(i)

l(i)=vl(k)-dut(<j,k>)

求ve(j)和vl(j)需要分两步进行:

(1)从ve(0)=0开始向前递推

   ve(j)=Max{ve(j) + dut(<i,j>)}

      <i,j>属于T,j=1,2,3.......n-1

其中,T是所有以第j个顶点为尾的弧的集合

(2)从vl(n-1)=ve

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值