赞
踩
若用DAG图 (有向无环图) 表示一个工程,顶点表示活动,有向边<i,j>表示顶点i必须先与顶点j进行,则将这种有向图称为顶点表示活动的网络,简称AOV网络。
AOV网络是一个不带权的DAG图、边仅表示活动的先后关系。
例如:
若用带权DAG图表示一个工程,顶点表示事件,有向边表示活动,有向边<i,j>的权值表示活动 i -> j 的开销,则将这种带权有向图称为用边表示活动的网络,简称AOE网。
AOE网络是一个带权的DAG图,用边表示事件的先后顺序和活动的开销。
在AOE网络中,仅有一个入度为0的顶点,称为开始顶点(源点),它表示整个工程的开始,也仅有一个出度为0的顶点,称为结束顶点(汇点),它表示整个工程的结束。
例如:
在AOE网络中,有些活动是可以并行进行的。从源点到汇点的路径可能有多条,并且这些路径的长度可能不同。只有所有路径上的活动都已完成,整个工程才算结束。
因为活动是可以并行执行的,所以完成整个工程所需的开销取决于路径长度最长的那条路径。于是,我们把从源点到汇点的所有路径中,路径长度最长的路径称为关键路径,关键路径上的活动称为关键活动
如果不需要写计算过程,那么寻找关键路径,我们可以直接根据定义式来肉眼观察(这也是软考中找关键路径的常用技巧)
例如:
根据肉眼观察,1->3->5的路径长度为8,是最长的路径,那么关键路径就是1->3->5。
注意:关键路径不是只有唯一的一条,所有的路径长度是最长的路径都是关键路径
如果需要写计算过程,那么非常的繁琐了,我们先介绍一下计算中常用的几个参量:
v e ( k ) v_e(k) ve(k)表示事件 v k v_k vk 的最早发生时间,指的是从源点到顶点 v k v_k vk的最长路径长度,具体可由下面的公式来从源点开始往后递推:
v e ( 源点 ) = 0 v_e(源点) = 0 ve(源点)=0,
v e ( k ) = M a x { v e ( j ) + w e i g h t ( v j , v k ) } v_e(k)=Max\{v_e(j) + weight(v_j, v_k)\} ve(k)=Max{ve(j)+weight(vj,vk)}, v k v_k vk为 v j v_j vj的任意后继, w e i g h t ( v j , v k ) weight(v_j, v_k) weight(vj,vk)表示 < v j , v k > <v_j, v_k> <vj,vk>上的权值。
最迟发生时间指在不推迟整个工程完成的情况下,事件 v k v_k vk的发生时间,具体可按照下面的公式,从汇点开始往前递推:
v l ( 汇点 ) = v e ( 汇点 ) v_l(汇点) = v_e(汇点) vl(汇点)=ve(汇点),
v l ( k ) = M i n { v l ( j ) − w e i g h t ( v k , v j ) } v_l(k)=Min\{v_l(j) - weight(v_k, v_j)\} vl(k)=Min{vl(j)−weight(vk,vj)}, v k v_k vk为 v j v_j vj的任意前驱。
若用边 < v k , v j > <v_k, v_j> <vk,vj> 表示活动 a i a_i ai,则 e ( i ) = v e ( k ) e(i)=v_e(k) e(i)=ve(k)
若用边 < v k , v j > <v_k, v_j> <vk,vj> 表示活动 a i a_i ai,则 l ( i ) = v l ( j ) − w e i g h t ( v k , v j ) l(i)=v_l(j) - weight(v_k, v_j) l(i)=vl(j)−weight(vk,vj)
d ( i ) = l ( i ) − e ( i ) d(i) = l(i) - e(i) d(i)=l(i)−e(i)
若 l ( i ) − e ( i ) = 0 l(i) - e(i) = 0 l(i)−e(i)=0则称活动 a i a_i ai是关键活动
求关键路径的算法步骤如下:
虽然计算简单,但是过程是真的非常麻烦啊!!!!!
例如:
1、从源点出发,计算各顶点的 v e ( ) v_e() ve():
v e ( 1 ) = 0 v_e(1)=0 ve(1)=0
v e ( 2 ) = v e ( 1 ) + 2 = 2 v_e(2)=v_e(1) + 2 = 2 ve(2)=ve(1)+2=2
v e ( 3 ) = v e ( 1 ) + 3 = 3 v_e(3)=v_e(1) + 3 = 3 ve(3)=ve(1)+3=3
v e ( 4 ) = v e ( 2 ) + 1 = 3 v_e(4)=v_e(2) + 1 = 3 ve(4)=ve(2)+1=3
v e ( 5 ) = M a x { v e ( 4 ) + 3 , v e ( 3 ) + 5 , v e ( 2 ) + 4 } = v e ( 3 ) + 5 = 8 v_e(5)=Max\{v_e(4)+3, v_e(3)+5, v_e(2)+4\} = v_e(3)+5 = 8 ve(5)=Max{ve(4)+3,ve(3)+5,ve(2)+4}=ve(3)+5=8
2、从汇点出发,计算各顶点的 v l ( ) v_l() vl()
v l ( 5 ) = v e ( 5 ) = 8 v_l(5)= v_e(5) = 8 vl(5)=ve(5)=8
v l ( 4 ) = v l ( 5 ) − 3 = 5 v_l(4)= v_l(5)-3 = 5 vl(4)=vl(5)−3=5
v l ( 3 ) = v l ( 5 ) − 5 = 3 v_l(3)= v_l(5)-5 = 3 vl(3)=vl(5)−5=3
v l ( 2 ) = M i n { v l ( 4 ) − 1 , v l ( 5 ) − 4 } = 4 v_l(2)=Min\{v_l(4)-1, v_l(5)-4\}=4 vl(2)=Min{vl(4)−1,vl(5)−4}=4
v l ( 1 ) = 0 v_l(1)=0 vl(1)=0
3、根据 v e ( ) v_e() ve() 求各活动的 e ( ) e() e()
e ( 1 − > 2 ) = v e ( 1 ) = 0 e(1->2) = v_e(1) = 0 e(1−>2)=ve(1)=0
e ( 1 − > 3 ) = v e ( 1 ) = 0 e(1->3)=v_e(1)=0 e(1−>3)=ve(1)=0
e ( 2 − > 4 ) = v e ( 2 ) = 2 e(2->4)=v_e(2)=2 e(2−>4)=ve(2)=2
e ( 2 − > 5 ) = v e ( 2 ) = 2 e(2->5)=v_e(2)=2 e(2−>5)=ve(2)=2
e ( 3 − > 5 ) = v e ( 3 ) = 3 e(3->5)=v_e(3)=3 e(3−>5)=ve(3)=3
e ( 4 − > 5 ) = v e ( 4 ) = 3 e(4->5)=v_e(4)=3 e(4−>5)=ve(4)=3
4、根据 v l ( ) v_l() vl() 求各活动的 l ( ) l() l()
l ( 1 − > 2 ) = v l ( 2 ) − 2 = 2 l(1->2)=v_l(2)-2=2 l(1−>2)=vl(2)−2=2
l ( 1 − > 3 ) = v l ( 3 ) − 3 = 0 l(1->3)=v_l(3)-3=0 l(1−>3)=vl(3)−3=0
l ( 2 − > 4 ) = v l ( 4 ) − 1 = 4 l(2->4)=v_l(4)-1=4 l(2−>4)=vl(4)−1=4
l ( 2 − > 5 ) = v l ( 5 ) − 4 = 4 l(2->5)=v_l(5)-4 = 4 l(2−>5)=vl(5)−4=4
l ( 3 − > 5 ) = v l ( 5 ) − 5 = 3 l(3->5)=v_l(5)-5=3 l(3−>5)=vl(5)−5=3
l ( 4 − > 5 ) = v l ( 5 ) − 3 = 5 l(4->5)=v_l(5)-3=5 l(4−>5)=vl(5)−3=5
5、求所有活动的 d ( ) d() d()
d ( 1 − > 2 ) = l ( 1 − > 2 ) − e ( 1 − > 2 ) = 2 d(1->2)=l(1->2)-e(1->2)=2 d(1−>2)=l(1−>2)−e(1−>2)=2
d ( 1 − > 3 ) = l ( 1 − > 3 ) − e ( 1 − > 3 ) = 0 d(1->3)=l(1->3)-e(1->3)=0 d(1−>3)=l(1−>3)−e(1−>3)=0
d ( 2 − > 4 ) = l ( 2 − > 4 ) − e ( 2 − > 4 ) = 2 d(2->4)=l(2->4)-e(2->4)=2 d(2−>4)=l(2−>4)−e(2−>4)=2
d ( 2 − > 5 ) = l ( 2 − > 5 ) − e ( 2 − > 5 ) = 2 d(2->5)=l(2->5)-e(2->5)=2 d(2−>5)=l(2−>5)−e(2−>5)=2
d ( 3 − > 5 ) = l ( 3 − > 5 ) − e ( 3 − > 5 ) = 0 d(3->5)=l(3->5)-e(3->5)=0 d(3−>5)=l(3−>5)−e(3−>5)=0
d ( 4 − > 5 ) = l ( 4 − > 5 ) − e ( 4 − > 5 ) = 2 d(4->5)=l(4->5)-e(4->5)=2 d(4−>5)=l(4−>5)−e(4−>5)=2
6、找出 d ( ) = 0 d() = 0 d()=0的活动构成关键路径
d ( 1 − > 3 ) = d ( 3 − > 5 ) = 0 d(1->3) = d(3->5) = 0 d(1−>3)=d(3−>5)=0 所以关键路径为 1->3->5 关键路径长度为8
全篇结束,感谢阅读!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。