数据结构--关键路径

数据结构--关键路径

AOE⽹

在 带权有向图 \color{red}带权有向图 带权有向图中,以 顶点表示事件 \color{red}顶点表示事件 顶点表示事件,以 有向边表示活动 \color{red}有向边表示活动 有向边表示活动,以 边上的权值表示完成该活动的开销 \color{red}边上的权值表示完成该活动的开销 边上的权值表示完成该活动的开销(如完成活动所需的时间),称之为⽤边表示活动的⽹络,简称 A O E ⽹ \color{red}AOE⽹ AOE⽹ (Activity On Edge NetWork)

AOE⽹具有以下两个性质:

① 只有在某顶点所代表的事件发⽣后,从该顶点出发的各有向边所代表的活动才能开始;

② 只有在进⼊某顶点的各有向边所代表的活动都已结束时,该顶点所代表的事件才能发⽣。

另外,有些活动是可以并⾏进⾏的 \color{green}另外,有些活动是可以并⾏进⾏的 另外,有些活动是可以并⾏进⾏的

在AOE⽹中 仅有⼀个 \color{red}仅有⼀个 仅有⼀个⼊度为0的顶点,称为 开始顶点(源点) \color{red}开始顶点(源点) 开始顶点(源点),它表示整个⼯程的开始;

也 仅有⼀个 \color{red}仅有⼀个 仅有⼀个出度为0的顶点,称为 结束顶点(汇点) \color{red}结束顶点(汇点) 结束顶点(汇点),它表示整个⼯程的结束。

从源点到汇点的有向路径可能有多条,所有路径中,具有最⼤路径⻓度的路径称为 关键路径 \color{red}关键路径 关键路径,⽽把关键路径上的活动称为 关键活动 \color{red}关键活动 关键活动

完成整个⼯程的最短时间就是关键路径的⻓度 \color{purple}完成整个⼯程的最短时间就是关键路径的⻓度 完成整个⼯程的最短时间就是关键路径的⻓度,若关键活动不能按时完成,则整个⼯程的完成时间就会延⻓

有关的信息变量

事件 v k v_k vk的最早发⽣时间ve(k)------决定了所有从 v k v_k vk开始的活动能够开⼯的最早时间

活动 a i a_i ai的最早开始时间e(i)------指该活动弧的起点所表⽰的事件的最早发⽣时间

事件 v k v_k vk的最迟发⽣时间vl(k)------它是指在不推迟整个⼯程完成的前提下,该事件最迟必须发⽣的时间。

活动 a i a_i ai的最迟开始时间l(i)------它是指该活动弧的终点所表示事件的最迟发⽣时间与该活动所需时间之差。

活动 a i a_i ai的最早开始时间e(i)------指该活动弧的起点所表⽰的事件的最早发⽣时间

活动 a i a_i ai的最迟开始时间l(i)------它是指该活动弧的终点所表示事件的最迟发⽣时间与该活动所需时间之差。

活动 a i a_i ai的时间余量d(i)=l(i)-e(i),表⽰在不增加完成整个⼯程所需总时间的情况下,活动ai可以拖延的时间

若⼀个活动的时间余量为零,则说明该活动必须要如期完成,d(i)=0即l(i) = e(i)的活动 a i a_i ai是关键活动

由关键活动组成的路径就是关键路径

求所有事件的最早发⽣时间

① 求所有事件的最早发⽣时间 ve( )

按拓扑排序序列,依次求各个顶点的 ve(k):

ve(源点) = 0
v e ( k ) = M a x { v e ( j ) + W e i g h t ( v j , v k ) } , v j 为 v k ve(k) = Max\{ve(j) + Weight(v_j, v_k)\}, v_j为v_k ve(k)=Max{ve(j)+Weight(vj,vk)},vj为vk 的任意前驱

求所有事件的最迟发⽣时间

② 求所有事件的最迟发⽣时间 vl( )

按逆拓扑排序序列,依次求各个顶点的 vl(k):

vl(汇点) = ve(汇点)
v l ( k ) = M i n { v l ( j ) − W e i g h t ( v k , v j ) } , v j 为 v k vl(k) = Min\{vl(j) - Weight(vk, vj)\} , v_j为v_k vl(k)=Min{vl(j)−Weight(vk,vj)},vj为vk的任意后继

求所有活动的最早发⽣时间

③ 求所有活动的最早发⽣时间 e( )

若边 < v k , v j > 表⽰活动 a i ,则有 e ( i ) = v e ( k ) <vk, vj>表⽰活动a_i,则有e(i) = ve(k) <vk,vj>表⽰活动ai,则有e(i)=ve(k)

求所有活动的最迟发⽣时间

④ 求所有活动的最迟发⽣时间 l( )

若边<vk, vj>表⽰活动ai,则有l(i) = vl(j) - Weight(vk, vj)

求所有活动的时间余量

⑤ 求所有活动的时间余量 d( )
d ( i ) = l ( i ) − e ( i ) d(i) = l(i) - e(i) d(i)=l(i)−e(i)

关键活动、关键路径的特性

若关键活动耗时增加,则整个⼯程的⼯期将增⻓

缩短关键活动的时间,可以缩短整个⼯程的⼯期

当缩短到⼀定程度时,关键活动可能会变成⾮关键活动

注意:可能有多条关键路径,只提⾼⼀条关键路径上的关键活动速度并不能缩短整个⼯程的⼯期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短⼯期的⽬的。 \color{purple}注意:可能有多条关键路径,只提⾼⼀条关键路径上的关键活动速度并不能缩短整个⼯程的⼯期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短⼯期的⽬的。 注意:可能有多条关键路径,只提⾼⼀条关键路径上的关键活动速度并不能缩短整个⼯程的⼯期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短⼯期的⽬的。

知识点回顾与重要考点

相关推荐
CoovallyAIHub4 小时前
港大&字节重磅发布DanceGRPO:突破视觉生成RLHF瓶颈,多项任务性能提升超180%!
深度学习·算法·计算机视觉
感哥4 小时前
C++ STL 常用算法
c++
CoovallyAIHub5 小时前
英伟达ViPE重磅发布!解决3D感知难题,SLAM+深度学习完美融合(附带数据集下载地址)
深度学习·算法·计算机视觉
saltymilk15 小时前
C++ 模板参数推导问题小记(模板类的模板构造函数)
c++·模板元编程
感哥15 小时前
C++ lambda 匿名函数
c++
沐怡旸21 小时前
【底层机制】std::unique_ptr 解决的痛点?是什么?如何实现?怎么正确使用?
c++·面试
感哥1 天前
C++ 内存管理
c++
聚客AI1 天前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v1 天前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工1 天前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法