从零开始学数据结构系列之第四章《什么是关键路径二》

文章目录


活动的最早发生事件

注意以下名词:

(1)求所有事件的最早发生时间ve();

(2)求所有事件的最迟发生时间vl();

(3)求所有活动的最早发生事件e();

(4)求所有活动的最迟发生时间l();

(5)求所有活动的时间余量d();

那事件就是我们的顶点,那活动的话就是我们的权值了

事件最早/迟开始时间表:

活动的最早/最晚发生事件:


那简单来说,我们活动的最早发生事件,也就是我们权值(活动时间)的前驱,上一个节点的事件最早发生时间

  • 那首先看我们 a 1的活动的最早发生事件,那它的上个节点也就是我们的 v 一事件,那它的事件最早发生时间是0,那也就意味着我们的活动最早发生事件 a 1也是0

  • 那同理 a2也是跟我们 a 1也是一样的,那它的节点也是我们的 v 1。那所以 a2的最早发生事件是0

  • 那我们的活动时间 a3,那它的发出事件是我们的 v2。那我们看我们 v2的事件的发生最早发生时间,那它是3。那所以我们 a2的活动最早发生事件,那也就是3

  • 同理,我们 a4的发出也是我们 v2,那V4的最早活动发生事件也是3

  • 那我们 a5的话,它的发出者是我们的 v3。那我们看到 v3的事件最早发生时间是2。那所以的话我们 a5的活动最早发生事件,那也就是2

  • a6也是同理,它是由我们 v3节点进行发出的那所以我们可以看到它的活动最早发生事件,也就是2

  • a7a 8节点的话都是由 v4和 v5节点发出的,那所以我们看到 v4和 v5事件最早发生时间中可以从而得知我们的 a7a 8活动最早发生事件,那也都是6

活动的最迟发生事件

注意以下名词:

(1)求所有事件的最早发生时间ve();

(2)求所有事件的最迟发生时间vl();

(3)求所有活动的最早发生事件e();

(4)求所有活动的最迟发生时间l();

(5)求所有活动的时间余量d();

那事件就是我们的顶点,那活动的话就是我们的权值了

事件最早/迟开始时间表:

活动的最早/最晚发生事件:

那简单来说,我们活动的最迟发生事件,是由我们的事件节点减去它的活动发生的时间所得出的值,就是我们的活动最迟发生事件,同理,也是根据我们事件最迟开始时间那样子开始算,我们可以看到反序的拓扑结构来进行推导

  • 我们首先看 a8活动时间,那他本身就是1,那我们的事件是 v6,那 v6的最事件最迟开始时间是八,那八减去一等于七。那从里我们可以得出它的活动最晚发生事件那也就是七
  • 那之后再看我们的 a7节点,a7节点指向的事件也同样是 v6,v6的事件,最迟开始时间是八,那八减去二等于六。所以我们 a7的活动最晚发生事件是六
  • 我们接下来看 a6节点,它是由 v5事件最迟开始时间减去它的活动时间。那由是八减去三那是等于五,那所以我们 a6活动最迟发生事件,那也就是五
  • 那我们的 a4节点的话,它是由 v5节点的节点,最迟开始时间减去它的活动时间,也就是七减去三,那是等于四。那所以我们 a4的活动最迟发生事件,那也就是四
  • a3节点所指向的是我们 v4节点,那 v4节点事件最迟开始时间,它的值是六。那减去我们 a3节点的活动时间,那也就是六减去二,那同样也是等于四
  • a2节点所指向的事件最迟开始时间是我们的 v3节点。那 v3节点的值是二,那它的活动时间也是二。那所以相减的话,那我们可以得出 a2的活动最迟发生事件值是零
  • a 一节点所指向的事件最迟发生时间是 v2,那 v2的值是四,那四减去我们 a 一活动时间的值。那我们可以最终得出我们 a 一活动的最迟发生事件的值是1

☁️ 以上就是所有内容,对大家有用的话点个关注!感谢大家!

往期回顾

1.【第一章】《线性表与顺序表》
2.【第一章】《单链表》
3.【第一章】《单链表的介绍》
4.【第一章】《单链表的基本操作》
5.【第一章】《单链表循环》
6.【第一章】《双链表》
7.【第一章】《双链表循环》
8.【第二章】《栈》
9.【第二章】《队》
10.【第二章】《字符串暴力匹配》
11.【第二章】《字符串kmp匹配》
12.【第三章】《树的基础概念》
13.【第三章】《二叉树的存储结构》
14.【第三章】《二叉树链式结构及实现1》
15.【第三章】《二叉树链式结构及实现2》
16.【第三章】《二叉树链式结构及实现3》
17.【第三章】《二叉树链式结构及实现4》
18.【第三章】《二叉树链式结构及实现5》
19.【第三章】《中序线索二叉树理论部分》
20.【第三章】《中序线索二叉树代码初始化及创树》
21.【第三章】《中序线索二叉树线索化及总代码》
22【第三章】《先序线索二叉树理论及线索化》
23【第三章】《先序线索二叉树查找及总代码》
24【第三章】《后续线索二叉树线索化理论》
25【第三章】《后续线索二叉树总代码部分》
26【第三章】《二叉排序树基础了解》
27【第三章】《二叉排序树代码部分》
28【第三章】《二叉排序树代码部分》
29【第三章】《平衡二叉树基础概念》
30【第三章】《平衡二叉树的平衡因子》
31【第三章】《平衡二叉树的旋转基础详解》
32【第三章】《平衡二叉树的旋转类型图文详解》
33【第三章】《平衡二叉树的旋转类型总结及总代码》
34【第三章】《哈夫曼树简单了解》
35【第三章】《哈夫曼树的构造方法》
36【第三章】《哈夫曼编码构造及代码》
37【第四章】《图的定义》
38【第四章】《图的基本概念和术语》
39【第四章】《图的存储结构》
40【第四章】《图的遍历之深度优先遍历》
41【第四章】《广度优先遍历BFS》
42【第四章】《图的遍历总代码》
43【第四章】《最小生成树概念》
44【第四章】《最小生成树的应用举例》
45【第四章】《prim算法(普里姆算法)详解》
46【第四章】《prim算法(普里姆算法)详解2》
47【第四章】《prim算法(普里姆算法)详解3》
48【第四章】《prim算法(普里姆算法)讲解汇总》
49【第四章】《prim算法(普里姆算法)代码讲解》
50【第四章】《prim算法(普里姆算法)总代码》
51【第四章】《克鲁斯卡尔算法思路介绍》
52【第四章】《克鲁斯卡尔算法步骤思路1》
53【第四章】《克鲁斯卡尔算法步骤思路2》
54【第四章】《克鲁斯卡尔算法应用场景-公交站问题》
55【第四章】《克鲁斯卡尔算法判断回路问题》
56【第四章】《克鲁斯卡尔算法步骤回顾》
57【第四章】《克鲁斯卡尔算法代码初始化详解》
58【第四章】《克鲁斯卡尔算法总代码详解》
59【第四章】《了解最短路径》
60【第四章】《迪杰斯特拉算法了解》
61【第四章】《Dijkstra 迪杰斯特拉算法图解》
62【第四章】《Dijkstra 迪杰斯特拉算法总代码》
63【第四章】《弗洛伊德(floyd)算法简介》
64【第四章】《弗洛伊德算法详解》
65【第四章】《弗洛伊德代码详解》
66【第四章】《拓扑排序之AOV网》
67【第四章】《拓扑排序介绍及其方法》
68【第四章】《拓扑排序代码详解》
69【第四章】《什么是关键路径》

相关推荐
rellvera19 分钟前
【强化学习的数学原理】第02课-贝尔曼公式-笔记
笔记·机器学习
售后宝38 分钟前
服务机器人三甲坎德拉:用智能化开启售后服务新篇章
经验分享·制造
肥猪猪爸1 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
linux_carlos1 小时前
环形缓冲区
数据结构
readmancynn1 小时前
二分基本实现
数据结构·算法
yuwinter1 小时前
鸿蒙HarmonyOS学习笔记(2)
笔记·学习·harmonyos
Bucai_不才1 小时前
【数据结构】树——链式存储二叉树的基础
数据结构·二叉树
志-AOX1 小时前
Python编程艺术:优雅与实用的完美平衡(推导式)
经验分享
盼海1 小时前
排序算法(四)--快速排序
数据结构·算法·排序算法
LZXCyrus1 小时前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm