关键路径

来源:互联网 发布:下载源码的网站 编辑:程序博客网 时间:2024/04/30 11:25

AOE网是一个带权的有向无环图。
这里写图片描述

求关键路径

弧  a<i,j>    i --> j弧尾 i弧头 j 权值 、活动的持续时间:dut(<i,j>)
  • 事件(顶点vertex)的最早发生时间:ve( j )
    • ve( j ) = 从源点到顶点 j 的最长路径长度
    • ve( j ) = Max{ve( i ) + dut(a)}
    • 所有以 j 为弧头的活动的弧尾最早发生时间 + 弧的权值 的最大值
    • 源点的ve 为 0
  • 事件(顶点vertex)的最迟发生时间:vl( i )
    • vl( i ) = 从顶点 i 到 汇点 的最短路径长度
    • vl( i ) = Min{vl( j ) - dut(a)}
    • 所有以 i 为弧尾的活动的弧头的最迟发生时间 - 弧的权值 的最小值
    • 汇点的 vl 为 汇点的 ve
  • 活动(弧(tail–>head))的最早开始时间:e( a )
    • e( a ) = ve( i )
    • 活动最早开始时间 = 弧尾的最早发生时间
    • i 是弧 a 的弧尾
  • 活动(弧(tail–>head))的最迟开始时间:l( a )
    • l( a ) = vl( j ) - dut( a )
    • 活动最迟开始时间 = 弧头的最迟发生时间 - 弧的权值(活动持续时间)

  1. 求图的拓扑有序序列,按拓扑有序序列的顺序求ve( j )
    • 拓扑有序序列:v1,v2,v6,v3,v5,v4
    • ve(1) = 0 ,ve(2) = 8, ve(6) = 6,ve(3) =13,ve(5) = 10,ve(4) = 16
  2. 求图的逆拓扑有序序列,按逆拓扑有序序列的顺序求vl( i )
    • 算法,在求把拓扑有序序列存入栈中,出栈序列即为逆拓扑有序序列
    • 逆拓扑有序序列:v4,v5,v3,v6,v2,v1
    • vl(4) = 16,vl(5) = 10,vl(3) = 15,vl(6) = 6,vl(2) = 8,vl(1) = 0
  3. 对照ve(..) 求e( a )
    • e(a1) = 0,e(a2) =0,e(a3) = 8,e(a4) = 8,e(a5) = 6,e(a6) = 6,e(a7) = 10,e(a8) = 13
  4. 对照vl(..) 求l( a )
    • l(a1) = 0,l(a2) =0,l(a3) = 8,l(a4) = 10,l(a5) = 6,l(a6) = 9,l(a7) = 10,l(a8) = 15
  5. 最后对比 e( a ) 和 l( a ) ,若v( a ) = l( a ),则为关键活动。
vertex v1 v2 v3 v4 v5 v6 ve 0 8 13 16 10 6 vl 0 8 15 6 10 16
active a1 a2 a3 a4 a5 a6 a7 a8 e 0 0 8 8 6 6 10 13 l 0 0 8 10 6 9 10 15
e = l a1 a2 a3 a5 a7

关键路径:v1-v2-v5-v4(a1,a3,a7) 和 v1-v6-v5-v4(a2,a5,a7)