数据结构算法之关键路径

关键路径

文章目录:

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

1.基本概念

首先要了解AOE网和关键路径的基本概念
在这里插入图片描述这里详细说明一下,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的最早发生时间在这里插入图片描述
这里默认源点的最早发生时间为0,数组内表示的是顶点(也就是事件)的最早的发生时间(也就是到达下一个顶点路径最长的值);比如说到达v4一共有两条路径,v1-》v2-》v4和v1-》v3-》v4,但到达v4的路径值分别是5和6,所以选取最长的路径值6,即v[4]=6,同样道理依次求出到达每一个顶点的最长路径值并存放到数组内顶点对应的位置。

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

3.求出活动ai的最早开始时间e(i)
在这里插入图片描述这里活动ai也就是边,其各个边的最早开始时间就是其边弧头顶点(事件)的最早发生时间;比如说a7边的最早开始时间就是对应弧头v4顶点(事件)的最早发生时间,即上面求得的6.依次类推,分别找到对应边的最早开始时间,并写入数组e(i)中;

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

在这里插入图片描述这里跟上一步求边的最早开始时间相对应,求边的最迟开始时间就是其边弧尾顶点(事件)的最迟发生时间减去所求边的值。比如说a3边的最迟开始时间就等于v4事件的最迟发生时间减去a3边的值,即4.以此类推,分别求出各边的最迟开始时间,并存入数组I(i)中。

5.求出活动ai的差额d(i)=I(i)-e(i)
在这里插入图片描述求出d(i)内对应边的值为0的边所构成的路径就是这个图的关键路径

3.关键路径的特点

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

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

  • 14
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值