AOE网关键路径的算法,最最最最直接的算法,一学就会_aoe网关键路径算法-程序员宅基地

技术标签: 算法  SDUT C语言 数据结构  acm  数据结构  

先了解一下AOE网和关键路径:

如果在有向图中用顶点表示事件,用弧表示活动,用弧上的权表示活动持续时间,称该带权有向图(即有向网)为边表示活动的网(activity on edge network),简称AOE网。

在AOE网中,只有一个顶点代表的事件发生后,从该顶点出发的各个弧所代表的活动才能开始,只有以弧头关联一个顶点的各个弧所代表的活动都已结束,该顶点所代表的事件才能发生。

一项工程可以由若干个子工程活动组成。用AOV网表示这项工程所关心的是各子工程之间的优先次序,即所得到得拓扑有序序列;而用AOE网表示这项工程所关心的是完成整个工程至少需要多少时间,哪些子工程是影响这项工程进度的关键活动,如何加快整个工程的进度等问题。

由于在AOE网中某些活动可以并行进行,所以完成工程的最短时间是从源点到汇点路径的最大长度(指路径上各活动持续时间之和最大,而不是路径上弧的数目最多)。把从源点到汇点路径长度最大的路径称作关键路径(critical path),关键路径上的活动称作关键活动。关键活动的长度是整个工程的最短工期,加快关键活动的完成是加快工程进度缩短工期地关键。

求AOE网关键路径算法的步骤:

(1) 输入e条弧<Vj,Vk>,建立AOE网的存储结构。

(2) 从源点V1出发,令ve[1]=0;按拓扑有序序列次序求其余各顶点的最早发生时间ve[k](2<=k<=n),ve[k]=max{ve[j]+dut(<Vj,Vk>)};如果得到的拓扑有序序列中顶点个数小于网中顶点的个数n,说明网中存在环路,不能求关键路径算法终止,否则执行步骤(3).

(3) 从汇点Vn出发,令vl[n]=ve[n],按逆拓扑有序序列求其余各顶点的最迟发生时间vl[k](n-1>=k>=1),vl[k]=min{vl[Vj]-dut(<Vk-Vj>)}。

(4) 根据各顶点的ve值和vl值,求每条弧的最早开始时间e[s]和最迟开始时间l[s];e[s]等于弧s的弧尾顶点Vk的最早发生时间ve[k],而l[s]等于弧头顶点Vk的最迟发生时间减去弧s的权值;若某条弧s满足e[s]=l[s]则为关键活动,由所有关键活动构成的网的一条或几条关键路径。

举一个例子帮助理解:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Key_MQL/article/details/52237595

智能推荐

YOLOv4的cfg参数及训练_yolov4参数设置-程序员宅基地

文章浏览阅读1.2w次,点赞11次,收藏94次。cfg参数net层[net]batch=96 # 每次iteration训练的时候,输入的图片数量subdivisions=48 # 将每一次的batch数量,分成subdivision对应数字的份数,一份一份的跑完后,在一起打包算作完成一次iterationwidth=512 # width=height,大小为32的倍数momentum=0.9 # 动量,影响梯度下降到最优的速度,一般默认0.9decay=0.0005 # 权重衰减正则系数,防止过拟合angle=0 # 旋转角度,生成更_yolov4参数设置

解决Fiji(image J)无法导出 >4g Tiff格式文件的问题_imagej 4gb-程序员宅基地

文章浏览阅读2.5k次。参考 https://forum.image.sc/t/opening-large-tif/4133利用Fiji带有的Bio-Formats 插件导出Tiff格式文件_imagej 4gb

dataframe的字符类型dtypes为什么是object,而不是str?-程序员宅基地

文章浏览阅读8.7k次。data = pd.DataFrame({"A": [True, False, True], "B": [1.1, 2.2, 3.33], "C": ["c1", "c2", "c3"] })print("data : \n", data.

Flutter自定义功能强大的下拉筛选菜单gzx_dropdown_menu-程序员宅基地

文章浏览阅读1.9k次。gzx_dropdown_menu是一个Flutter自定义功能强大的轻量级下拉筛选菜单Package,它支持iOS和Android。_gzx_dropdown_menu

【MySQL】mysql | MySQL5.7升级到MySQL8.0 | docker安装mysql8 | docker mysql8 连接失败问题 | docker mysql8 表名大小写不敏感问_docker环境mysql5.7升级mysql8.0-程序员宅基地

文章浏览阅读289次。1、安全扫描MySQL5.7安全漏掉较多,要求将数据库升级到指定的8.0版本2、MySQL已经存有大概6个库的正在跑业务3、时间要求紧迫,需要尽快处理4、5.7用的是物理机yum安装。_docker环境mysql5.7升级mysql8.0

paip.php的调试--attilax总结-程序员宅基地

文章浏览阅读151次。paip.php的调试--attilax总结php的调试可用PDT与XDEBUGGER,或者与zend debugger来。。如果是php WEB项目,只能进行远程调试,XDEBUGGER/zend debugge 加载起来后,把PHP的信息截获,然后连接PDT的9000/10000端口,把内部信息发往ECLIPSE PDT了。。---------1.使用xdebugger--..._dllhopst

随便推点

Linux系统及编程基础有答案,linux系统及编程基础习题答案-程序员宅基地

文章浏览阅读376次。linux系统及编程基础习题答案 第 1 章 Linux 基础及安装 1. 什么是 Linux ? Linux 是一款优秀的计算机操作系统,支持多用户、多进程、多线程,实时性好,功能强大且稳定。 同时,它又具有良好的兼容性和可移植性,被广泛应用于各种计算机平台上。作为 Internet 的产物, Linux 操作系统由全世界的许多计算机爱好者共同合作开发,是一个自由的操作系统。 2. Linux ..._linux编程基础黑马程序员课后答案

图像处理基础知识_图像处理理论基础-程序员宅基地

文章浏览阅读1.7w次,点赞29次,收藏174次。图像1、模拟图像模拟图像,又称连续图像,是指在二维坐标系中连续变化的图像,即图像的像点是无限稠密的,同时具有灰度值(即图像从暗到亮的变化值)。2、数字图像数字图像,又称数码图像或数位图像,是二维图像用有限数字数值像素的表示。数字图像是由模拟图像数字化得到的、以像素为基本元素的、可以用数字计算机或数字电路存储和处理的图像。通常的二维数字图像是一个矩阵,可以用一个二维数组 f(x,y) 来表示,其中 x,y 是二维空间中的某坐标系的坐标,f(x,y) 表示图像在该点处的灰度值等性质。3、颜_图像处理理论基础

c语言 dos 文件夹,如何dos 下遍历文件目录-程序员宅基地

文章浏览阅读217次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼首先先看两个函数函数名:findfirst,findnext功能:搜索磁盘目录;取得下一个匹配的findfirst模式的文件用法:intfindfirst(char*pathname,structffblk*ffblk,intattrib);intfindnext(structffblk*ffblk);程序例:/*..._dos 遍历 目录下 所有文件

用robot framework + python实现http接口自动化测试框架_python robotframework-程序员宅基地

文章浏览阅读2.1k次,点赞11次,收藏23次。前言下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了bug,所以需要一遍遍回归case,过程一直手工去执行,苦不堪言。所以,对于即将开始的http接口测试需求,立马花了两天时间搭建了一个http接口自动化测试框架用于测试后期回归测试,实在是被大量的重复手工执行搞怕了。基础框架选择最方便的方法就是用python直接写代码,代码和测试数据分离,测试数据放在_python robotframework

Dubbo入门示例原生API版_原生api实现dubbo调用-程序员宅基地

文章浏览阅读364次。有关dubbo的基础、架构等介绍请参考之前博客:Dubbo背景及架构简介XML版(官方推荐)示例请参考:Dubbo入门示例XML版(官方推荐)注解版本示例请参考:Dubbo入门示例注解版1. 创建暴露服务模块(dubbo-demo-api)本模块下没有实际的业务逻辑,主要是定义提供者和消费者公用服务接口/** * 需要暴露出去的服务 * */public interface ..._原生api实现dubbo调用

python基于图像颜色的火焰识别_基于火焰颜色的识别-程序员宅基地

文章浏览阅读4.9k次,点赞8次,收藏77次。基于图像颜色,本文主要结合RGB和HSI两种判断依据进行火焰识别。判断依据参考了以下文章,实在是非常感谢!:OpenCV学习记录之视频中的火焰检测识别python版基于颜色的火焰识别判断条件如下:R>redThreR>=G>=BS>0S>(255-R)/20S>=((255-R)*sThre/redThre)具体代码实现:img = cv2.imread('fire/fire4.jpeg')redThre = 115 # 115~135红色分_基于火焰颜色的识别