数据结构算法之关键路径

关键路径

文章目录:

  • 基本概念
  • 关键路径的构造过程
  • 关键路径的特点

1.基本概念

首先要了解AOE网和关键路径的基本概念
数据结构算法之关键路径_第1张图片这里详细说明一下,AOE网和AOV网的区别和联系:

  • 联系:都代表的是有向无环图。
  • 区别:
  • 1.AOE网的边表示活动,边有权值,边一般代表的是活动持续时间,顶点表示事件,事件是图中新活动开始或者旧活动结束的标志。
  • 2.AOV网的顶点表示活动,边无权值,边代表活动之间的先后关系。
  • 3.对于一个表示工程的AOE网,只存在一个入度为0的顶点,称为源点,表示整个工程的开始;也只存在一个出度为0的顶点,称为汇点,表示整个工程的结束。

关键路径也就是从源点到汇点的最大路径长度的路径

2.关键路径的构造过程

这里先给出构造过程的详细步骤

  • 求出事件Vk的最早发生时间
  • 求出事件Vk的最迟发生时间
  • 求出活动ai的最早开始时间e(i)
  • 求出活动ai的最迟开始时间I(i)
  • 求出活动ai的差额d(i)=I(i)-e(i)
  • d(i)数组内为0的活动ai构成了这个图的关键路径

1.求出事件Vk的最早发生时间数据结构算法之关键路径_第2张图片
这里默认源点的最早发生时间为0,数组内表示的是顶点(也就是事件)的最早的发生时间(也就是到达下一个顶点路径最长的值);比如说到达v4一共有两条路径,v1-》v2-》v4和v1-》v3-》v4,但到达v4的路径值分别是5和6,所以选取最长的路径值6,即v[4]=6,同样道理依次求出到达每一个顶点的最长路径值并存放到数组内顶点对应的位置。

2.求出事件Vk的最迟发生时间数据结构算法之关键路径_第3张图片这里最迟发生时间与上面叙述的最早发生时间相反,首先从最后一个顶点(事件)开始,默认v[6]=8,也就是上面求出的顶点v6的最早发生时间,然后往回走,找到前面顶点并计算各个顶点的最迟发生时间,而在这里的最迟发生时间是指到达前一个事件的最短路径;正好与上面求最早发生时间相反,求最早发生时间求的是到达下一个顶点的最长路径,这里求的是到达之前顶点的最短路径;比如说v6到达v3有两条路径,分别是v6-》v4-》v3和v6-》v3;而到达v3的路径值分别是6,3,v6的最早开始时间是8,所以他们的最迟开始时间分别是2,5,所以选取最短的2为最迟发生时间,以此类推,分别找到对应顶点的最迟开始时间,并写入数组内。

3.求出活动ai的最早开始时间e(i)
数据结构算法之关键路径_第4张图片这里活动ai也就是边,其各个边的最早开始时间就是其边弧头顶点(事件)的最早发生时间;比如说a7边的最早开始时间就是对应弧头v4顶点(事件)的最早发生时间,即上面求得的6.依次类推,分别找到对应边的最早开始时间,并写入数组e(i)中;

4.求出活动ai的最迟开始时间I(i)

数据结构算法之关键路径_第5张图片这里跟上一步求边的最早开始时间相对应,求边的最迟开始时间就是其边弧尾顶点(事件)的最迟发生时间减去所求边的值。比如说a3边的最迟开始时间就等于v4事件的最迟发生时间减去a3边的值,即4.以此类推,分别求出各边的最迟开始时间,并存入数组I(i)中。

5.求出活动ai的差额d(i)=I(i)-e(i)
数据结构算法之关键路径_第6张图片求出d(i)内对应边的值为0的边所构成的路径就是这个图的关键路径

3.关键路径的特点

数据结构算法之关键路径_第7张图片这里指的是一个图的关键路径是不唯一的,它可以有多条关键路径。
而当其关键路径不唯一时,为了加快关键活动或关键活动组合包括在所有的关键路径上才能缩短工期,如果缩短的关键活动不包含在所有的关键路径上,缩短这个关键活动会使这个图的关键路径发生改变,之前的关键路径不再是关键路径了,这一点注意一下。

之后会更新数据结构除图之外的其他算法和知识的内容,敬请期待!2020.7.14.

你可能感兴趣的:(数据结构,数据结构,算法)