关键路径 算法

关键路径

定义:关键路径是包含AOE图中所有顶点(事件)的最大路径长度,其长度代表所有活动完成所需最短时间

涉及概念:AOE图,ve,vl,ee,el

  • AOE图:

    • activities on edges
    • 边表示活动(具体的工程内容),边长度(权值)代表活动所花费的时间
    • 顶点表示事件(事件不是工程内容,可以理解为一个状态,用以描述所有活动的完成情况)
  • ve,vl,ee,el分别代表事件最早开始时间、事件最晚开始时间、活动最早开始时间、活动最晚开始时间

    注:AOE图之外还有AOV图,也即顶点表示活动,有向边仅代表活动先后顺序而没有权值,故AOV图不能用来求所有活动完成的最短时间(关键路径)

解释:至于为什么最大长度代表最短时间,主要是因为在AOE图中,当指向一个顶点的所有边所代表的活动都完成后这个事件才能发生。而所有边代表的活动的完成才是整个工程的完成

注意:AOE网是有向无环的,也即不能存在事件之间的相互依赖

计算方法:

  • 按ve,vl,ee,el的次序计算

  • ve,ee从起点到终点顺着边的方向进行计算,vl,el则从终点到起点逆着边的方向进行计算

  • ve[x]=max(ve[x1]+e1,ve[x2]+e2,...,ve[xn]+en)其中xi是有边指向x的顶点,ei是从xi指向x的边

  • vl[x]=min(vl[x1']-e1',vl[x2']-e2',...,vl[xn']-en')

  • ee[x]=ve[x]

  • el[x]=vl[xi']-ei'

    所有ee[x]=el[x]的边x都是关键路径上的边,它们代表关键活动(关键路径可以不止一条)

posted @ 2021-04-16 13:19  moon_touch  阅读(918)  评论(0)    收藏  举报