文章目录
- 1.有向无环图(前置知识)
- 2. 拓扑排序
- 2.1 AOV网
- 2.2 排序序列
- 3.关键路径
- 3.1 AOE网
- 3.2 关键活动
- 3.2.1 事件v~k~的最早发生时间v~e~(k)
- 3.2.2 活动a~I~的最迟开始时间l(i)
- 3.2.3 事件v~k~的最迟发生时间v~l~(k)
- 3.2.4 活动a~I~的最早开始时间e(i)
- 3.2.5 活动时间差额d(i)
- 3.3 真题实战讲解(直接看就行)
本节重点:
- 有向无环图(前置知识)
- ⭐️拓扑排序
- ⭐️关键路径
1.有向无环图(前置知识)
有向无环图:若一个有向图中不存在环,则称为有向无环图,简称DAG图
2. 拓扑排序
2.1 AOV网
AOV网(用顶点表示活动的网)
DAG图表示一个工程。顶点表示活动。有向边<Vi,vj>表示活动vi必须先于活动vj进行
2.2 排序序列
如何排序?
首先明确每个顶点只出现一次
拓扑排序序列,就是找入度为0的结点输出,并把由它出去的边删除,直到AOV网空或当前网中不存在无前驱的顶点为止
逆拓扑排序序列,就是找到出度为0的结点输出,并把指向它的边删除,直到AOV网空或当前网中不存在无后继的顶点为止
可用另一种实现方式:DFS实现拓扑排序序列
3.关键路径
3.1 AOE网
在带权有向图中,以顶点表示事件,有向边表示活动,以边上的权值表示完成该活动的开销(所需时间),简称AOE网
AOE网的性质:
1️⃣事件发生后,活动才能开始
2️⃣活动都结束,事件才能发生,有些活动可以并行进行。
3.2 关键活动
关键活动:决定这个工程最快完成的活动,也是整个工程中最慢的活动。
求关键活动的几个重要参数:
事件记做vk,活动记做ai
- 事件vk的最早发生时间ve(k)
- 事件vk的最迟发生时间vl(k)
- 活动aI的最早开始时间e(i)
- 活动aI的最迟开始时间l(i)
- 活动时间差额d(i)
明确两点:
1️⃣关键活动的最早开始时间和最迟开始时间相等,字面意思上理解,它之所以关键,是因为它中间没有弹性时间。
2️⃣我们通过计算事件的时间,可以推出活动的时间,即求事件最早发生时间,推出活动最迟开始时间,求事件最迟发生时间,推出活动最早开始时间。
3.2.1 事件vk的最早发生时间ve(k)
寻找最慢的路径决定事件的最早发生时间
通过拓扑排序,我们可以得知事件发生的先后顺序
从起点出发,到下一个事件,可能有多个路径,计算耗时最长的活动+上一个事件所用的时间=下一个事件的最早发生时间。
3.2.2 活动aI的最迟开始时间l(i)
活动的最迟开始时间,是由事件最早发生事件反推,比如v3事件最早开始于5分钟,指向它的活动由2个,一个需要2分钟,一个需要3分钟,那么活动的最迟开始时间就是5-2和5-3,活动最迟开始时间不能影响事件的发生时间
3.2.3 事件vk的最迟发生时间vl(k)
最迟发生时间是由终点反推回到起点
终点事件的最迟发生时间=终点事件的最早发生时间
因为终点肯定是关键活动,在关键路径上,所以终点事件的最迟发生时间=终点事件的最早发生时间
由终点的最迟发生时间,反推前一个事件的最迟发生时间。减去前置活动耗时最长的时间,就是前一个事件的最迟发生时间
3.2.4 活动aI的最早开始时间e(i)
活动的最早开始时间,就是它起点事件的最迟开始时间
3.2.5 活动时间差额d(i)
活动最迟开始时间-活动最早开始时间,差值就是弹性的时间,如果它的弹性时间=0,他就是关键活动,关键活动组成的路径就是关键路径。
注意:
1️⃣可能存在多条关键路径,只提高一条关键路径上的活动并不能缩短整个工程的工期,只有加快包括所有关键路径上的关键活动才能缩短工期。
3.3 真题实战讲解(直接看就行)
解题思路:
拓扑排序决定了事件最早的发生的顺序
逆拓扑排序决定了事件最晚发生的顺序
起点和终点的事件最早发生时间和事件最晚发生时间相同。
做题逻辑顺序:
1.写出拓扑排序和逆拓扑排序
2.由拓扑排序写出事件的发生顺序,开始算事件最早发生时间。起点的最早发生时间是0,从这开始写。下一个事件的最早发生事件,看前面的事件+最长的活动时间(就是最晚),到达下一个事件的时间就是算事件最早发生时间,以此类推。总结就是**,从前往后找最大**
3.从逆拓扑排序开始写,事件的最晚发生事件,由起点和终点的事件最晚发生时间相同,开写,看看前面最短的活动时间,前面事件的最早开始事件-最短的活动时间,总结就是从后往前找最小
4.活动最早的开始时间:就是活动弧尾指向事件的最早发生事件
5.活动最晚的开始时间:是活动弧头指向事件的最晚发生时间-活动时间
大总结,小口诀:
事件时间起手求,从前往后找最大,从后往前找最大
活动时间用箭头,最早弧尾,最晚弧头减活动。
注意:
终点事件的最晚发生时间就是关键路径长度
事件最早发生时间和最晚发生时间相同的事件就是关键事件
活动时间差值为0的活动就是关键路径,它的路径就是关键路径