有向无环图之关键路径
**有向无环图之关键路径**
1 AOE-网:边表示活动的网。AOE-网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续的时间。
2 通常AOE-网可用来估算工程的完成时间。
例图:
该图总共有11项活动,9个事件。每个事件表示在它之前的活动已完成,在它之后的活动可以开始,如a表示整个工程开始,i表示整个工程结束,e表示<b,e>活动和<c,e>活动已经完成。网中只有一个入度为零的点(称作源点)和一个出度为零的点(叫做汇点)。
3 AOV-网要研究的问题是:
3.1 完成整个工程至少需要多少时间?
3.2 哪些活动是影响工程进度的关键?
4
4.1 由于在AOV-网中有些活动是可以并行的进行,所以完成工程的最短时间是从开始点到完成点的最长路径的长度(这里所说的路径长度是指路径上各项活动持续时间之和,不是路径上弧的数目)。
4.2 路径长度最长的路径叫做关键路径(Critical Path)。
4.3 假设开始点事a,从a到g的最长路径长度叫做事件g的最早发生时间,这个时间决定了所有以g为尾的弧所表示的活动的最早开始时间。我们可以用e(i)(这个e不是图中的顶点e,只是个代号,当然也可以用其他的字母表示,i表示数字递增,e(i)意思是第几个活动)表示第i个活动的最早开始时间,还可以定义一个活动的最迟开始时间l(i),这是在不推迟整个工程完成的前提下,第i个活动最迟必须开始的时间。两者之差意味着完成第i个活动的时间余量,就是还可以推迟多久必须开始。我们把最迟开始时间和最早开始时间相等的活动叫做关键活动。
4.4 显然,关键路径上的所有活动都是关键活动。该图的一个关键路径是(a,b,e,h,i),源点到汇点的最长路径长度是:18
4.5 第i个活动的最迟开始时间计算:源点到汇点的最长路径的长度-该活动到汇点的最长路径长度
如<d,f>活动的最迟开始时间:18-<d,f>-<f,h>-<h,i>=18-2-4-4=8
4.6 第i 个活动的最早开始时间计算:第i个活动之前的最长路径的长度
如<d,f>活动的最早开始时间:<a,d>=5
4.7 <d,f>的最迟开始时间是8,最早开始时间是5,这就意味着<d,f>活动可以推迟3天开始(8-5),都不会影响整个工程的完成。
4.8 分析关键路径的目的是辨别哪些是关键活动,以便争取提高关键活动的工效,缩短整个工期。
5 AOE-网的关键路径算法思想:求关键活动就是要找e(i)=l(i)的活动。为了求得AOE-网中活动的e(i)和l(i),首先应求得事件的最早发生时间ve(j)和最迟发生时间vl(j),**因为活动是弧,以顶点(事件)为尾,活动所依赖的事件开始,活动也就开始了**。
5.1 如果活动由弧<j,k>表示,其持续时间记为dut(<j,k>),则有如下关系:e(i)=ve(j)l(i)=vl(k)-dut(<j,k>)(vl(k)-dut(<j,k>)其实就是vl(j),上面解释过了为什么)
5.2 ve(j)和vl(j)需要分两步进行:
** 从ve(1)=0开始向前递推ve(j)=Max{ve(i)+dut(<i,j>)},其中<i,j>为图中的弧
** 从vl(n)=ve(n)起向后递推vl(i)=Min{vl(j)-dut(<i,j>)},其中<i,j>为图中的弧
这两个公式的计算必须分别在拓扑有序和逆拓扑有序的前提下进行,也就是说,ve(j)必须在v(j)(第j个顶点)的所有前驱的最早发生时间求得之后才能确定,而vl(j)则必须在v(j)的所有后继的最迟发生时间求得之后才能确定,因此可以在拓扑排序的基础上计算。
6 c语言实现上述算法的代码:git@github.com:hglspace/GetCriticalPath.git
有向无环图之关键路径相关推荐
- 数据结构(六):图的概念、存储方式、基本操作、最小生成树、最短路径、有向无环图、关键路径 | Prim、Kruskal算法 | BFS、Dijkstra、Floyd算法 | 拓扑排序 | 求关键路径
文章目录 第六章 图 一.图 (一)图的定义 (二)图逻辑结构的应用 (三)无向图.有向图 (四)简单图.多重图 (五)顶点的度.入度.出度 (六)顶点-顶点的关系描述 (七)连通图.强连通图 (八) ...
- 有向无环图——AOE网(关键路径)
有向无环图:无环的有向图,简称DAG图(Directed Acycline Graph) 有向无环图常用来描述一个工程或系统的进行过程.(通常吧计划.施工.生产.程序流程等当成是一个工程) 一个工程可 ...
- 有向无环图的拓扑排序 关键路径
拓扑排序:在不违背先决条件的基础上将有向无环图排成线性序列 - 排序结果不唯一 - 用一维数组Indegree存储各顶点的入度 - 采用邻接表与队列 bool TopSort(LGraph Graph ...
- 有向无环图—关键路径详解(最通俗易懂的版本)【数据结构】
文章目录 有向无环图 拓扑排序 AOV-网 AOE-网 关键路径的概念 事件的最早/晚开始时间 事件和活动的区分 活动的最早/晚开始时间 有向无环图 拓扑排序 AOV-网 由于有向无环图可以用一种自然 ...
- 48. 数据结构笔记之四十八的有向无环图的应用关键路径
48. 数据结构笔记之四十八的有向无环图的应用关键路径 "富贵不淫贫贱乐 , 男儿到此是豪雄.-- 程颢" 来看下有向无环图的另一个应用关键路径. 1. 关键路径 与AOV-网相 ...
- 数据结构7.5_有向无环图及其应用
一个无环的有向图称做有向无环图,简称DAG图. 检查一个有向图是否存在环要比无向图复杂. 对于无向图来说,若深度优先遍历过程中遇到回边(即指向已访问过的顶点的边),则必定存在环. 而对于有向图来说,这 ...
- 朋友圈技术范儿装X指南-有向无环图
这是我的第70篇原创 拼奢侈品装名媛,实在是太LOW了.真正的奢侈品不是外物,而是知识!是科学!你看我,从来没告诉过任何人,我开过私人飞机. 所以,今天要给大家分享一个可以在朋友圈装X的词:有向无环图 ...
- 有向无环图——AOV网及拓扑排序
有向无环图--AOV网及拓扑排序 有向无环图 无环的有向图叫有向无环图,简称DAG图 其应用大致如下: 在工程计划和管理方面有着广泛而重要的应用 描述一项工程或系统的进行进程的有效工具 对整个工程和系 ...
- 【数据结构】图4——图的应用(最小生成树、最短路径、有向无环图)
文章目录 生成树 最小生成树 构造最小生成树(MST) 构造最小生成树方法 普里姆(Prim)算法 克鲁斯卡尔(Kruskal)算法 两种算法比较 最短路径 迪杰斯特拉(Bijkstra)算法 弗洛伊 ...
最新文章
- C语言的指针、链表的原理和各类操作
- Java动态代理代码快速上手
- 《最后期限》阅读笔记2
- 用来枚举属性的对象工具函数
- 不到200行代码实现一个不断旋转的椭圆动画效果
- IDEA设置类、方法注释模板
- [Java网络编程基础]端口,协议
- XDP: eXpress Data Path
- AI 修复 100 年前晚清影像喜提热搜,有穿越内味儿了!
- 每一个写博客的程序猿,都应该被温柔对待
- jdk8 32位_HashMap源码分析 jdk8
- windows配置jdk环境变量、mysql环境变量、tomcat环境变量、maven环境变量、git环境变量、node环境变量
- 凯恩帝k1000ti参数设置_凯恩帝公司K1000T系统用户手册.pdf
- 后台api接口幂等防止数据篡改,看完发现心领神会
- Linux 用户 quote 配置 说明
- 如何在百度地图、腾讯地图标注公司地址信息?
- 《MySQL系列》MySQL详细入门教程
- springboot整合德鲁伊
- 鲁大师2022牛角尖颁奖盛典落幕,年度最强产品揭晓!
- 优秀logo设计解析_优秀logo设计作品及寓意解析,国外精品logo设计图片分享