相关概念

AOE网

AOE网(Activity On Edge Network)用边表示活动,用顶点表示事件(活动的完成)。边是带权的,表示活动需要的时间。

源点与汇点

源点:入度为0的点,表示一个工程的开始。

汇点:出度为0的点,表示一个工程的结束。

关键活动与关键路径

在AOE网中,从源点到汇点最长的路径称为关键路径,在关键路径上的活动称为关键活动

因为AOE网中的活动是可以并行进行的,所以整个工程的时间开销,其实是最长路径的时间开销。即关键路径制约整个工程的工期。

>_< 看个图理解一下上面的定义吧!!!

加深理解

通过AOV网与AOE网的比较,我们更能够深刻的理解二者。

相同点

都是有向无环图(DAG);都存在拓扑限制。

不同点

AOV网的顶点表示活动,边无权。AOV网用来分析活动之间的制约关系。

AOE网的顶点表示事件(活动的完成),边表示活动,权值为活动的持续时间。AOE网用来分析工程的最小时间限制,也就是说,缩短哪些活动持续时间可以缩短整个工程的工期(关键活动),缩短哪些活动持续时间并没有意义(非关键活动)。

关键路径算法(理论)


在说关键路径算法之前,你需要弄懂下面的几个重要参量及其求法:

事件 vk 的最早发生时间 ve(k) —— 它是从源点v1到某个顶点vk的最长路径长度。它决定了之后的活动能够开工的最早时间。

ve(源点) = 0

ve(k) = max{ve(j) + cost(j, k)}

事件 vk 的最迟发生时间 vl(k) —— 它是指在不推迟整个工期的前提下,该事件最迟必须发生的事件。

vl(汇点) = ve(汇点)

vl(k) = min{vl(j) - cost(k, j)}

活动 ai 的最早开始时间 e(i) —— 它是该活动的起点表示的事件的最早发生时间。

活动为(k, j),则 e(i) = ve(k)

活动 ai 的最迟开始时间 l(i) —— 它是该活动的终点表示的事件的最迟发生事件该活动所需时间之差。

活动为(k, j),则 l(i) = vl(j) - cost(k, j)


好了,下面正式介绍关键路径算法。

1)从源点出发,令 ve(源点) = 0,按拓扑顺序求出所有顶点(事件)的最早发生时间 ve()

2)从汇点出发,令 vl(汇点) = ve(汇点),按拓扑逆序求出所有顶点(事件)的最迟发生时间 vl()

3)根据各顶点的 ve() 值求出所有边(活动)的最早开始时间 e()

4)根据各顶点的 vl() 值求出所有边(活动)的最迟开始时间 l()

5)e() = l() 的边构成关键路径;关键路径上的顶点为关键活动。

关键路径算法(举例)

题目如图:

具体流程:

ve(1) = 0
ve(2) = ve(1) + 3 = 3
ve(3) = ve(1) + 2 = 2
ve(4) = max{ve(2) + 2, ve(3) + 4} = max{5, 6} = 6
ve(5) = ve(2) + 3 = 6
ve(6) = max{ve(5) + 1, ve(4) + 2, ve(3) + 3} = max{7, 8, 5} = 8

vl(6) = ve(6) = 8
vl(5) = vl(6) - 1 = 7
vl(4) = vl(6) - 2 = 6
vl(3) = min{vl(4) - 4, vl(6) - 3} = min{2, 5} = 2
vl(2) = min{vl(5) - 3, vl(4) - 2} = min{4, 4} = 4
vl(1) = min{vl(2) - 3, vl(3) - 2} = min{1, 1, } = 1

e(1) = ve(1) = 0
e(2) = ve(1) = 0
e(3) = ve(2) = 3
e(4) = ve(3) = 3
e(5) = ve(3) = 2
e(6) = ve(3) = 2
e(7) = ve(4) = 6
e(8) = ve(5) = 6

l(1) = vl(2) - 3 = 1
l(2) = vl(3) - 2 = 0
l(3) = vl(4) - 2 = 4
l(4) = vl(5) - 3 = 4
l(5) = vl(4) - 4 = 2
l(6) = vl(6) - 3 = 5
l(7) = vl(6) - 2 = 6
l(8) = vl(6) - 1 = 7

e(2) == l(2)
e(5) == l(5)
e(7) == l(7)

最终结果:

补充说明

① 关键路径上的活动是关键活动,它是决定整个工程工期的关键因素,即通过加快关键活动来缩短整个工程的工期。但是注意关键活动的缩短存在一个下限,因为一旦缩短到一定的程度,这条路径就不再是关键路径,该关键活动就会变成非关键活动。

② AOE网的关键路径并不唯一,即关键路径可能有多条。且对于有几条关键路径的网,只提高一条关键路径上的关键活动并不能缩短整个工程的工期,只有加快那些包括在所有关键路径上的关键活动才能达到缩短工期的目的。

☘️

【数据结构】AOE网——关键路径相关推荐

  1. [图] AOE网-关键路径|关键活动-原理、手算举例、C语言实现

    文章目录 AOE网 AOE的应用(AOE的相关概念) 原理:求关键活动和关键路径 求ve.vl(顶点) 求ee.el(边) 求关键路径,关键活动 手算举例 C语言实现 AOE网 [有向无环图]活动在边 ...

  2. 教你轻松计算AOE网关键路径(转)

    原文链接:http://blog.csdn.net/wang379275614/article/details/13990163 本次结合系统分析师-运筹方法-网络规划技术-关键路径章节,对原文链接描 ...

  3. 有向无环图——AOE网(关键路径)

    有向无环图:无环的有向图,简称DAG图(Directed Acycline Graph) 有向无环图常用来描述一个工程或系统的进行过程.(通常吧计划.施工.生产.程序流程等当成是一个工程) 一个工程可 ...

  4. 选择题快速求解AOE网的关键路径

    #引言 求解AOE网关键路径时,书上的方法为先从源点到汇点求解事件最早发生时间ve,再从汇点到源点求解事件最迟发生时间vl,再利用ve和vl求解每个活动的最早开始时间e(i)和最迟开始时间l(i),e ...

  5. 【数据结构和算法笔记】AOE网和关键路径

    目录 AOE网的概念: 关键路径:(critical  path) 求关键路径和关键活动: 事件的最早开始时间(event early): 事件的最迟开始时间(event late): 活动的最早开始 ...

  6. AOE网与关键路径简介

    前面我们说过的拓扑排序主要是为解决一个工程能否顺序进行的问题,但有时我们还需要解决工程完成需要的最短时间问题.如果我们要对一个流程图获得最短时间,就必须要分析它们的拓扑关系,并且找到当中最关键的流程, ...

  7. AOE网活动的最早、最迟发生时间及关键路径问题

    免费浏览请前往:https://zhuanlan.zhihu.com/p/337438327 上个学期学数据结构的时候有学到,这学期的离散数学又要考..复习复习 有向图中,用顶点表示事件,用有向边表示 ...

  8. AOE网(求关键路径)(c/c++)

    工程中想要知道完成工程至少需要多少时间以及影响工程进度的关键子工程,通过AOE网来解决.其中边表示活动,顶点表示事件. 如下图:       其中入度为0的点v0称为源点,出度为0的点v5称为汇点.当 ...

  9. aoe网最早开始时间和最迟开始时间_关键路径(AOE)网 通俗易懂

    关键路径 关键路径是求「工程上时间最短的问题」的方法 阅读本文前请先了解 拓扑排序 拓扑排序主要解决「工程是否能顺序进行」的问题,关键路径在拓扑排序的基础上解决「工程最短时间的问题」. 一.工程最短时 ...

  10. 图论 —— AOE 网与关键路径

    [AOE 网] 在表示一个工程时,用顶点表示事件,用弧表示活动,权值表示活动的持续时间,这样的有向图即为 AOE 网. 其有两个性质: 在顶点表示事件发生之后,从该顶点出发的有向弧所表示的活动才能开始 ...

最新文章

  1. 浅析机器视觉在安防行业的应用
  2. 对于存放数据库时带有html标签问题
  3. Spring--IoC(1)
  4. Transformer太深不行?NUS字节发现注意力坍缩,提出重注意机制!
  5. 园子里关于罗辑树与视觉树的文章
  6. unity vscode没有智能提示_GAMES101课程环境搭建(Win10+VSCode)
  7. c语言c98标准,1.3.2 C语言标准
  8. 数据分析实战:数据分析的5大关键环节
  9. 【Linux】tail: inotify cannot be used, reverting to polling: Too many open files
  10. 解决request.getSession().getServletContext().getRealPath(“/“)为null问题
  11. idea springboot启动报SLF4J:Failed to load class “org.slf4j.impl.StaticLoggerBinder”
  12. 10通信端口感叹号_开源企业级微信小程序实时通信聊天室技术架构演练
  13. Pandas Learning
  14. 图画日记怎么画_画画日记(通用10篇)
  15. 安装基于Ubuntu的微信小程序开发工具
  16. 物联网——WIFI热点配网
  17. 莫纳什大学招收AI/CV/ML/计算生物信息学和生物医学方向全奖博士研究生
  18. html水平线段hr标记详解,HTML标记【水平分隔线hr标记的使用】!
  19. POJ 2152 树型DP //很棒的题
  20. 用transform:scale();缩放

热门文章

  1. 雅虎邮箱(yahoo):应用程序专用密码登录
  2. 量子计算机 因数分解,中国实现绝热量子质因数分解 或建量子计算机
  3. 湛江景点旅游攻略!究竟有哪些你不容错过的景点?
  4. 全面解析《嵌入式程序员应该知道的16个问题》
  5. 微信小程序 Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded(二)
  6. python的扩展名是_python文件扩展名是什么
  7. 自组织映射(SOM)聚类分析Python第三方库实现<minisom>
  8. 【SpringBoot】62、SpringBoot中接入xxl-job实现分布式任务调度
  9. ​【火星传媒报道】李笑来归来:不做韭菜的生意
  10. 最全DNS域名解析流程及域名注册(细节!)