关键路径——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.mzph.cn/web/38448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CH32V305FBP6】USBD HS 虚拟串口分析

文章目录 前言分析端点 0USBHS_UIS_TOKEN_OUT 端点 2USBHS_UIS_TOKEN_OUTUSBHS_UIS_TOKEN_IN 前言 虚拟串口&#xff0c;端口 3 单向上报&#xff0c;端口 2 双向收发。 分析 端点 0 USBHS_UIS_TOKEN_OUT 设置串口参数&#xff1a; 判断 USBHS_SetupReqCode CDC_SET_LIN…

从零开始实现大语言模型(一):概述

1. 前言 大家好&#xff0c;我是何睿智。我现在在做大语言模型相关工作&#xff0c;我用业余时间写一个专栏&#xff0c;给大家讲讲如何从零开始实现大语言模型。 从零开始实现大语言模型是了解其原理及领域大语言模型实现路径的最好方法&#xff0c;没有之一。已有研究证明&…

Windows10录屏,教你3个方法,简单快速录屏

“我的电脑系统是Windows10的系统&#xff0c;今晚要进行线上开会&#xff0c;但我实在有事没办法参加会议&#xff0c;想把会议的内容录制下来方便我后续观看。但却找不到电脑录屏功能在哪里打开&#xff1f;求助一下&#xff0c;谁能帮帮我&#xff1f;” 在数字化时代&…

mysql 命令 —— 查看表信息(show table status)

查询表信息&#xff0c;如整个表的数据量大小、表的索引占用空间大小等 1、查询某个库下面的所有表信息&#xff1a; SHOW TABLE STATUS FROM your_database_name;2、查询指定的表信息&#xff1a; SHOW TABLE STATUS LIKE your_table_name;如&#xff1a;Data_length 显示表…

闲聊 .NET Standard

前言 有时候&#xff0c;我们从 Nuget 下载第三方包时&#xff0c;会看到这些包的依赖除了要求 .NET FrameWork、.NET Core 等的版本之外&#xff0c;还会要求 .NET Standard 的版本&#xff0c;比如这样&#xff1a; 这个神秘的 .NET Standard 是什么呢&#xff1f; .NET St…

从零开始搭建spring boot多模块项目

一、搭建父级模块 1、打开idea,选择file–new–project 2、选择Spring Initializr,选择相关java版本,点击“Next” 3、填写父级模块信息 选择/填写group、artifact、type、language、packaging(后面需要修改)、java version(后面需要修改成和第2步中版本一致)。点击“…

工业触摸一体机优化MES应用开发流程

工业触摸一体机在现代工业生产中扮演着至关重要的角色&#xff0c;它集成了智能触摸屏和工业计算机的功能&#xff0c;广泛应用于各种生产场景中。而制造执行系统&#xff08;MES&#xff09;作为工业生产管理的重要工具&#xff0c;对于提高生产效率、降低成本、优化资源利用具…

力扣hot100-普通数组

文章目录 题目&#xff1a;最大子数组和方法1 动态规划方法2 题目&#xff1a;合并区间题解 题目&#xff1a;最大子数组和 原题链接&#xff1a;最大子数组和 方法1 动态规划 public class T53 {//动态规划public static int maxSubArray(int[] nums) {if (nums.length 0…

C++基础知识-编译相关

记录C语言相关的基础知识 1 C源码到可执行文件的四个阶段 预处理(.i)、编译(.s)、汇编(.obj)、链接。 1.1 预处理 预处理阶段&#xff0c;主要完成宏替换、文件展开、注释删除、条件编译展开、添加行号和文件名标识&#xff0c;输出.i/.ii预处理文件。 宏替换&#xff0c;…

【UML用户指南】-26-对高级行为建模-状态图

目录 1、概念 2、组成结构 3、一般用法 4、常用建模技术 4.1、对反应型对象建模 一个状态图显示了一个状态机。在为对象的生命期建模中 活动图展示的是跨过不同的对象从活动到活动的控制流 状态图展示的是单个对象内从状态到状态的控制流。 在UML中&#xff0c;用状态图…

tcpdump命令详解及使用实例

1、抓所有网卡数据包&#xff0c;保存到指定路径 tcpdump -i any -w /oemdata/123.pcap&一、tcpdump简介 tcpdump可以将网络中传送的数据包完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;并提供and、or、not等逻辑语句来去掉无用的信…

【Python】已解决:SyntaxError: positional argument follows keyword argument

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;SyntaxError: positional argument follows keyword argument 一、分析问题背景 在Python编程中&#xff0c;当我们在调用函数时混合使用位置参数&#xff08;p…

RabbitMQ进阶篇

文章目录 发送者的可靠性生产者重试机制实现生产者确认 MQ的可靠性数据持久化交换机持久化队列持久化消息持久化 Lazy Queue(可配置~)控制台配置Lazy模式代码配置Lazy模式更新已有队列为lazy模式 消费者的可靠性消费者确认机制失败重试机制失败处理策略 业务幂等性唯一消息ID业…

西部智慧健身小程序+华为运动健康服务

1、 应用介绍 西部智慧健身小程序为用户提供一站式全流程科学健身综合服务。用户通过登录微信小程序&#xff0c;可享用健康筛查、运动风险评估、体质检测评估、运动处方推送、个人运动数据监控与评估等公益服务。 2、 体验介绍西部智慧健身小程序华为运动健康服务核心体验如…

idea xml ctrl+/ 注释格式不对齐

处理前 处理后 解决办法 取消这两个勾选

核方法总结(三)———核主成分(kernel PCA)学习笔记

一、核主成分 1.1 和PCA的区别 PCA &#xff08;主成分分析&#xff09;对应一个线性高斯模型&#xff08;参考书的第二章&#xff09;&#xff0c;其基本假设是数据由一个符合正态分布的隐变量通过一个线性映射得到&#xff0c;因此可很好描述符合高斯分布的数据。然而在很多实…

ViewBinding的使用(因为kotlin-android-extensions插件的淘汰)

书籍&#xff1a; 《第一行代码 Android》第三版 开发环境&#xff1a; Android Studio Jellyfish | 2023.3.1 问题&#xff1a; 3.2.4在Activity中使用Toast章节中使用到了kotlin-android-extensions插件,但是该插件已经淘汰,根据网上了解,目前使用了新的技术VewBinding替…

UE4_材质_材质节点_DepthFade

一、DepthFade参数 DepthFade&#xff08;深度消退&#xff09;表达式用来隐藏半透明对象与不透明对象相交时出现的不美观接缝。 项目说明属性消退距离&#xff08;Fade Distance&#xff09;这是应该发生消退的全局空间距离。未连接 FadeDistance&#xff08;FadeDistance&a…

光照老化试验箱:材料耐久性的“时间加速器”

光照老化试验箱&#xff1a;材料耐久性的“时间加速器”概述 光照老化试验箱是一种模拟自然光照条件下材料老化过程的设备&#xff0c;广泛应用于材料科学领域的耐久性能评估。通过模拟日光中的紫外线、热辐射等环境因素&#xff0c;加速材料老化过程&#xff0c;以此来验证材…

redhawk:tech file与lefdef layer name不匹配问题

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 一些工艺厂商给的redhawk tech file是加密的&#xff0c;读完tech file再读lef/def会报错&#xff0c;根本不知道问题在哪&#xff0c;他们一般会搭配给一个layer map&#xff…