C语言AOE网、关键路径
目录
1.AOE网(Activity On Edge Network)
1.AOE网(Activity On Edge Network)
1.1AOE网的概念
若在带权的有向图中,用有向边表示活动(子工程),边上的权值表示活动持续时间,即完成该活动所需时间;用顶点表示事件,每个事件是活动之间的转接点,即表示它的所有入边活动到此均已完成,它的所有出边活动就此开始这样一种状态,则成此带权的有向图为用边表示活动的网,简称AOE网。
1.2AOE网两个顶点
(1)源点(起点):表示整个工程的开始,只有出边,没有入边
(2)汇点(终点):表示整个工程的结束,只有入边,没有出边
2.关键路径
2.1关键路径的概念
源点到汇点的所有路径中最长的路径长度(路径上各边的权值和)称为关键路径(Critical Path)。关键路径也指完成工程的最短时间。
2.2关键路径的几点说明
(1)Ve(j):时间Vj的最早发生时间,即源点V1到汇点Vj的最长路径长度
(2) :活动 的最早发生时间。 = Ve(j)。(活动 :所有以Vj为起点的各条出边<Vj, Vk>表示的活动)
(3)Vl(k):事件Vk的最迟发生时间。等于汇点Vn的最早发生时间Ve(n)减去Vk到Vn的最长路径长度
(4) :活动 的最迟开始时间。等于 的最迟完成时间减去 的持续时间: = Vl(k)- dur(< j, k >)
(5) :活动 的时间余量。 = -
(6)dur(< j, k >):活动 的持续时间(活动 :边<Vj, Vk>表示的活动)
(7)关键活动:活动的时间余量为0的活动。即 = - = 0
2.3关键路径的求解步骤
(1)计算事件Vj的最早、最晚发生时间Ve(j)、Vl(j)
从源点V1自左向右计算。Ve(1)= 0,Ve(j)= max{ Ve(i)+ dur(< i, j >) }
从汇点Vn自右到左计算。Vl(n)= Ve(n),Vl(j)= min{ Vl(k)- dur(< j, k >) }
(2)计算活动 (边<Vj, Vk>表示的活动)的最早发生、最迟开始时间 、
= Ve(j), = Vl(k)- dur(< j, k >)
(3)确定关键路径
首先:计算活动 的时间余量 = -
其次:找出 = 0 的活动
所有 = 0 的活动 的路径集合即为AOE网中的关键路径。
2.4关键路径求解示例