关键路径——C语言(理论)

关键路径,是项目网络中从起始事件到终止事件的最长路径,决定了项目的最短完成时间。

关键路径中的任务没有任何可调整的余地,如果任何一个任务被延迟,整个项目的完成时间也会被延迟。

假设我们现在有一个图:把图的边看作是活动,权值为活动的持续时间;图的顶点看作是事件,事件是指在项目中发生的关键时间点没有时间,即箭头的头是事件开始,箭头末尾是事件完成。这就是所谓的AOE图

在以前我们把边看作是距离,在这里我们把边看作是时间,即顶点到顶点所需的时间,那么接下来我们就要引出几个概念:

事件的最早开始时间和最晚开始时间

        我们假设顶点0是从时间为0时开始的,那么顶点1的最早开始时间为 6(因为需要经过时间为6的活动),顶点 2 为 4 ,顶点 3 为 5 。那么顶点 4 的最早起始时间是什么时候?因为要等活动全部进行完才可以进行下一个活动,所以顶点 4 的最早起始时间为 7,同样对于顶点 8 来说,有多条路径,但是要等前面所有活动都进行完,也就是取时间最长的,所以是(7+9+2)或者(7+7+4)路径而不是走顶点0,3,5,7,这样加起来是17<18。

所以事件(顶点)的最早开始时间为(从0到8):

0,6,4,5,7,7,16,14,18

        接下来是最晚开始时间,最晚时间代表着在不延误项目的情况下,最晚开始的时间。对于最后的事件 8 ,最晚开始时间就是最早开始时间(意思就是后面没得可以做了,要立刻宣布项目的完成,所以最晚也是最早),所以事件 8 的最晚开始时间为 18。

        反推前面的事件,事件 6 的最晚开始时间为 18-2=16,事件 7 的最晚开始时间为 18-4=14,事件 5 的最晚开始时间为 14-4=10,事件 4 的最晚开始时间为 16-9=7 或者 14-7=7,事件 3 的最晚开始时间为 10-2=8,事件 2 和事件 1 的最晚开始事件为7-1=6,那么事件0的最晚开始时间为多少?是6-6=0,6-4=2,还是8-5=3?考虑到不能延误活动,应该是三个中最小的6-6=0。

所以事件的最晚开始时间为(从0到8):

0,6,6,8,7,10,16,14,18

当事件的最早开始时间和最晚开始时间相等时叫做关键事件,这代表着此事件是项目的关键项目,不可拖延。

活动的最早开始事件和最晚开始事件

        对于活动来说,最早开始时间就是箭头起始事件的最早开始时间,意味着这时已经可以开始进行活动了,所以对于ABC活动来说,最早开始时间都是0,D为6,E为4,F为5,那么GH的最早开始时间是多少?这里GH是事件4的最早开始事件,为7,以此类推。

最后,活动的最早开始时间,从(A到K):

0,0,0,6,4,5,7,7,7,16,14

        最晚开始时间是箭头的终止事件的最晚开始时间减去权值,意味着这时必须要开始进行活动了,否则会延误,对于A来说,事件1的最晚开始时间为6,所以6-6=0,B,事件2的最晚开始时间为6,6-4=2,也就是说,B活动最晚要在时间为 2 的时候进行。以此类推。

最后,活动的最晚开始时间,从(A到K):

0,2,3,6,6,8,7,7,10,16,14

讲完这两个概念,才到文章的主题:关键路径。

        关键路径是指活动的最早开始时间减去最晚开始时间为0的活动,也就是没有时间余量。我们可以发现 ADGHJK 活动是最早开始时间等于最晚开始时间的,所以这就是关键路径,如图:

        因为关键路径是最短完成项目的事件,所以在优化项目的时候要着重优化这几个活动,从而提高效率,这就是关键路径的意义。

现在我们可以先思考一下代码的过程:

1.拓扑排序,因为最早最晚时间要考虑前驱后继(事件)

2.计算事件的最早最晚时间,根据是否相等确定关键路径上的事件。

3.找出关键路径

完整的代码会在下一篇文章,希望对你有所帮助,如有错误欢迎指出。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/771470.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高二的他已通过NOI保送北大了,让我们一起了解他的信息学奥赛学习经历吧!!!

相信关注本号的各位&#xff0c;对于信息学奥赛已经不陌生了&#xff0c;部分同学也已经开始踏入信息学的旅程&#xff0c;但前路茫茫&#xff0c;让我们一起看看已经取得成就的同学的经历吧。 今天要介绍的这位同学&#xff0c;是来自深圳中学的高二某班的欧阳达晟同学&#x…

failed to lazily initialize a collection of role,解决Hibernate查询报错

Hibernate报错&#xff1a; org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.jiuqi.gov.common.attatchment.entity.AttachmentEntity.properties, could not initialize proxy - no Session at org.hibernate.co…

docker私有仓库harbor部署

docker私有仓库harbor部署 概述 Docker 官方镜像源被中国大陆政府封锁&#xff0c;导致无法在中国大陆的计算机上直接使用 Docker 拉取镜像&#xff0c;导致使用者一下子手足无措了&#xff0c;的确一开始会有很大的影响&#xff0c;为了应对这种影响我们可以自己构建私有仓库&…

昇思25天学习打卡营第4天|yulang

今天主要了解了数据集 Dataset&#xff0c;主要包含了&#xff1a;数据集加载、数据集迭代、数据集常用操作、 可随机访问数据集、可迭代数据集、生成器。对于生成器很好理解&#xff0c;用代码来造数据&#xff0c;可以动态地生成数据。主要作用数据集通常被用于训练模型

12个视觉艺术分类

视觉设计可以按照多种方式进行分类&#xff0c;这些分类通常基于设计的目的、风格或应用场景。本文为大家介绍12种视觉设计&#xff0c;分别是平面设计、标志设计、包装设计、用户界面设计 (UI Design)、用户体验设计 (UX Design)、插图设计、网页设计、动画设计、展览设计、环…

云服务出现故障这样处理

无法连接云服务器 服务器远程无法连接时&#xff0c;可通过7ECloud控制台进行连接。 常见故障现象 1、ping不通 2、ping丢包 3、部分端口telnet不通 4、全部端口telnet不通 5、广告、弹窗植入 6、域名无法访问IP访问正常 常见故障原因 1、云服务器过期、关机或者EIP被…

阿里云物联网应用层开发:第三部分,微信小程序和web客户端实现

文章目录 哔哩哔哩视频教程1、阿里云物联网平台对接微信小程序2、阿里云物联网平台对接web客户端2-1MQTT服务器编写2-2 web端Servlet部分编写备注哔哩哔哩视频教程 【阿里云物联网综合开发,STM32+ESP8266+微信小程序+web客户端一篇教程详细讲解】 https://www.bilibili.com/v…

Java中读写文件内容乱码/BufferedReader读文件内容乱码/OutputStreamWriter设置编码集

1、问题概述? 在项目中我们经常会将例如日志信息放入到txt(任意后缀)文档中,然后在项目中通过弹框等形式查看直接的查看这些文档中的信息,然后有时候会出现乱码的情况。 这个时候我们就需要设置写入和写出时候的编码集情况。 2、解决方案 当然编码集的问题,还需要从项目…

ONLYOFFICE8.1版本桌面编辑器的测评(您的私人办公室)

ONLYOFFICE官网链接&#xff1a;ONLYOFFICE - 企业在线办公应用软件 | ONLYOFFICE 在线PDF查看器和转换器 | ONLYOFFICE​​​​​​在线办公套件 | ONLYOFFICE 一&#xff0c;引言 在数字化浪潮中&#xff0c;高效、便捷、安全的办公工具对现代职场至关重要。今天&#xff0c;…

MySQL5.7下载及安装详细教程

我下载的是MySQL 5.7.43 &#xff0c;以下是详细下载安装过程 一、下载过程步骤 1、进入官方网站&#xff1a;https://www.mysql.com/ 2、首页滑到最下面&#xff0c;找到MySQL Community server 3、选择你想要的版本和电脑对应配置进行下载 4、下载完后&#xff0c;保存解…

【TB作品】20以内加减法训练机,ATMEGA128单片机,Proteus仿真

题目 7 &#xff1a;玩具电子琴 基于单片机设计一能够发出中音八个音阶的音乐信号的电子琴&#xff0c;能够实现弹奏和音符显示功 能。 具有 8 个音阶按键&#xff0c;每按下一个按键时&#xff0c;所对应的 LED 点亮&#xff0c;音符进行显示。 具体要求如下&#xff1a; &…

tampermonkey插件下载国家标准文件

#创作灵感# 最近在一个系统招标正文中看到了一些国家标准&#xff0c;想要把文章下载下来&#xff0c;方便查阅&#xff0c;但是“国家标准全文公开系统”网站只提供了在线预览功能&#xff0c;没有提供下载功能&#xff0c;但是公司又需要文件&#xff0c;在网上找了一些办法&…

矩阵置零解题

给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,1,1]] 输出&#xff1a;[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xff1a; 输入&…

用户资料门户的构建

1. 需求背景 老的页面停止维护了,且老旧, 功能单一,且页面分散. 急需做功能集成的平台化建设原先的用户资料查询没有做权限管控, 每一次查询都会消耗我们组的人力资源. 2. 项目介绍 2.1. 项目地址 服务地址: [公司内网服务(略)] 工蜂地址: [公司内网仓库(略)] 2.2 项目的价…

Spring Security基本源码解析(超精细版)

一、基本源码解析 1.1 UsernamePasswordAuthenticationFilter 用户名称和密码的过滤器 浏览器发送用户名称和密码 ----》 经过过滤器「UsernamePasswordAuthenticationFitler」 1.2 UsernamePasswordAuthenticationFilter核心方法 重写父类「AbstractAuthenticationProcessing…

数据在内存中的存储方式

&#x1f31f;&#x1f31f;作者主页&#xff1a;ephemerals__ &#x1f31f;&#x1f31f;所属专栏&#xff1a;C语言 目录 前言 一、整数的存储 二、大小端字节序及其判断 1.什么是大小端 2.为什么有大小端 3.用c语言编写程序判断大小端 三、浮点数的存储 1.浮点数…

第7章:Electron文件系统操作(2)

7.2 文件对话框 Electron 提供了 dialog 模块用于显示文件打开和保存对话框。 7.2.1 显示文件打开对话框 主进程代码&#xff1a; const { app, BrowserWindow, ipcMain, dialog } require(electron); const path require(path);let mainWindow;const createMainWindow …

【Unity学习笔记】A*寻路算法

文章目录 图寻路算法BFS广度优先算法DFS深度优先贪心算法 引入权重Dijkstra算法 A*算法C#实现步骤 Unity中的A*算法A*优化建议 图 图的知识盘点 pathfinding 作为一名计算机专业的学生&#xff0c;对于图这种数据结构也是烂熟于心了。图是一种包含了多个结点的数据结构&…

巴图自动化Modbus协议转Profinet协议网关模块连智能仪表与PLC通讯

一、现场要求:PLC作为控制器&#xff0c;仪表设备作为执行设备。执行设备可以实时响应PLC传送的指令&#xff0c;并将数据反馈给PLC&#xff0c;从而实现PLC对仪表设备的控制和监控&#xff0c;实现对生产过程的精确控制。 二、解决方案:通过巴图自动化Modbus协议转Profinet协议…

大模型面试题目

1.为什么需要做位置编码 位置编码&#xff08;Positional Encoding&#xff09;在变换器&#xff08;Transformer&#xff09;模型中非常重要&#xff0c;因为变换器架构本身没有内置的顺序信息。变换器使用的是自注意力机制&#xff0c;它能够捕捉输入序列中所有词之间的相关性…