关键路径

让编程改变世界

Change the world by program


关键路径

上节课小甲鱼讲的这个拓扑排序主要是为了解决一个工程能否顺序进行的问题,但有时我们还需要解决工程完成需要的最短时间问题。 譬如说,造一辆汽车,我们需要先造各种各样的零件(一般的轿车由一万多个不可拆解的独立零件组成,F1赛车更是高达两万多个),最终再组装成整车。   请问汽车厂造一辆汽车,最短需要多少时间呢?

我们这里简单给大家参考,其中生产轮子:0.5天,发动机:3天,底盘:2天,外壳:2天,其他零部件:2天,全部零部件集中到一处:0.5天,组装成车并测试:2天

有童鞋说时间不就是全部加起来嘛,这显然不对,因为现在生产普遍是引进了流水线模式,就是所有的零部件是再不同的流水线上同时生产的,也就是说,在发动机生产的这3天里,已经生产了6个轮子,1.5个外壳和1.5个底盘,而组装车是在这些零部件都生产好后才可以进行的。 因此最短的时间其实是零部件中生产时间最长的发动机3天+集中零部件0.5天+组装车的2天,一共5.5天可以完成一辆汽车的生产。

AOE网:

在上节课讲了AOV网的基础上,我们来介绍一个新的概念。 在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,用边上的权值表示活动的持续时间,这种有向图的边表示活动的网,我们称之为AOE网(Activity On Edge Network)。   我们把AOE网中没有入边的顶点称为始点或源点,没有出边的顶点称为终点或汇点。

其实有些童鞋可能会觉得这么多鸟文的缩写怎么才能记住丫,坑爹的英语伤不起啊,大家不妨可以试试联想记忆:例如上节课讲的AOV网,小甲鱼不是举了“我想拍一部色情电影”的例子嘛,那刚好AOV里边有个AV,AVAV,***嘛,这就联想起来了。这节课我们开头就整了个法拉利F40,刚好出现了个AOE网,里边有个AE,丫~~,这让小甲鱼很容易又想到了最喜欢的游戏:极品飞车就是由EA sports发行的,所以也很容易挂钩起来了,想忘记或者混淆都难,你说呢?

No Pic You Say A J8:   这就是一个AOE网,1是源点,表示一个工程的开始,9是汇点,表示整个工程的结束。顶点1,2,3,4,5,6,7,8,9分别表示事件,这里有9个事件,11 项活动 a 1 , a 2 , … , a 11 。 每个事件表示在它之前的活动已经完成,在它之后的活动可以开始。如 1 表示整个工程开始, 9 表示整个工程结束。 5 表示活动 a 4 和 a 5 已经完成,活动 a 7 和 a 8 可以开始。 与每个活动相联系的权表示完成该活动所需的时间。如活动 a 1 需要 6 天时间可以完成。   [caption id="attachment_2669" align="alignnone" width="600"] AOV网和AOE网对比[/caption] [caption id="attachment_2670" align="alignnone" width="600"] AOV网和AOE网对比[/caption]   我们把路径上各个活动持续的时间之和称之为路径长度,从源点到汇点具有最大长度的路径叫做关键路径,在关键路径上的活动叫关键活动。图中:从开始到发动机完成到部件集中到位到组装完成就是一条关键路径,路径长度为5.5。 如果说我们想要缩短整个工程的工期,你去改进轮子生产效率,哪怕一个轮子改进到只需要0.1天就可以完成,也是没有用的,只有缩短关键路径上的关键活动时间才可以减少整个工期的长度。例如你把发动机制造缩短为2天,那么关键路径长度一下子就降低到4.5了,整整缩短了一天的时间。   那么现在的问题是如何找出关键路径,对于我们来说,这个AOE图就傻瓜也能看得出来,但如果是刚才举例源点和汇点那个图,想必就没有那么容易了吧?现实生活中的工程往往都是比这个复杂很多,所以我们必须找出某种算法,让电脑去做这种费神费力的事儿(怪不得那么多科幻片里机器人要造反……)。

课后思考

1. 关键路径如何建立在拓扑序列上。 2. 谷歌、百度、维基以下关键词

etv(Earliest Time Of Vertex) ltv(Latest Time Of Vertex) ete(Earliest Time Of Edge) lte(Latest Time Of Edge)

3. 想想代码如何构成,下节课我们谈代码编写! [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/BdsUAwLndACZoMhRab3']视频下载[/Downlink]

转载于:https://www.cnblogs.com/LoveFishC/p/3846343.html

关键路径 - 数据结构和算法67相关推荐

  1. 【数据结构与算法基础】AOE网络与关键路径

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  2. 数据结构与算法 | 青岛大学 | 王卓

    来源链接:https://space.bilibili.com/40323036/video?tid=0&page=6&keyword=&order=pubdate https ...

  3. 数据结构与算法(C语言)

    第一章: 数据结构绪论 1.什么是程序:程序 = 数据结构 + 算法 2.逻辑结构&物理结构的区别用法 基本的目标就是将数据及其逻辑关系存储到计算机的内存中 一:逻辑结构: 逻辑结构是指数据对 ...

  4. 数据结构与算法-C++实现

    前沿 1.数据结构和算法的理解 答: 我们如何把现实中大量而复杂的问题,以特定的数据类型和特定的存储结构保存到主存储器(内存)中. (注:数据结构解决了数据存储的问题,比如要存储一个班级50人的成绩, ...

  5. Java数据结构和算法(六)——前缀、中缀、后缀表达式

    前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...

  6. Java数据结构和算法(四)——栈

    前面我们讲解了数组,数组更多的是用来进行数据的存储,纯粹用来存储数据的数据结构,我们期望的是插入.删除和查找性能都比较好.对于无序数组,插入快,但是删除和查找都很慢,为了解决这些问题,后面我们会讲解比 ...

  7. Java数据结构和算法(二)——数组

    上篇博客我们简单介绍了数据结构和算法的概念,对此模糊很正常,后面会慢慢通过具体的实例来介绍.本篇博客我们介绍数据结构的鼻祖--数组,可以说数组几乎能表示一切的数据结构,在每一门编程语言中,数组都是重要 ...

  8. 看图轻松理解数据结构与算法系列(合并排序)

    前言 推出一个新系列,<看图轻松理解数据结构和算法>,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握.本系列包括各种堆.各种队列.各种列表.各种树.各种图.各种排序等等几十篇的 ...

  9. 数据结构与算法之“之”字型打印矩阵和矩阵中找数

    数据结构与算法之"之"字型打印矩阵和矩阵中找数 目录 "之"字型打印矩阵 在行列都排好序的矩阵中找数 1. "之"字型打印矩阵 题目描述 思 ...

最新文章

  1. 广度优先搜索(BFS)模板
  2. ASP.NET中随机数生成及应用
  3. 为什么每个邮件收到后都会有一个htm的附件_Python 发送邮件各种姿势
  4. Mule学习笔记(二)
  5. 快手抢占“短视频第一股”,宿华都有哪些底牌?
  6. How to find all event handler list for a given event
  7. 0day的NFO文件名的含义大全
  8. 【转】github中origin和upstream的区别
  9. 信息奥赛一本通的递推练习
  10. The NVIDIA driver on your system is too old (found version 10000). Please update your GPU driver by
  11. Magento 默认排序为最新 How to sort Magento products by date added as default
  12. springmvc线程安全问题
  13. 主流编解码器(H.264 AVC, H.265 HEVC, VP8, VP9)比较
  14. linux挂载NTFS格式硬盘
  15. 心情感受(倍压抑 不想上课)
  16. ‘EagerTensor‘ object has no attribute ‘reshape‘处理图像数据
  17. 以后再也去不论坛灌水了
  18. MindMapper中如何添加备注
  19. matlab21世纪论坛,compressive sensing 压缩感知(转) 21世纪最火的研究方向
  20. 【Docker】docker镜像的获取、制作方法、Dockerfile

热门文章

  1. php查询sql语句错误,Thinkphp3.2.3在SQL执行错误时查看SQL语句
  2. 因果推断笔记——uplift建模、meta元学习、Class Transformation Method(八)
  3. R︱Linux+Rstudio Server尝鲜笔记(打造最佳Rstudio体验+报错的解决方案)
  4. Java面试的基础题20190301
  5. Windows live Writer的安装配置
  6. angularJs解决跨域问题-最简单的完美实例
  7. cvc-complex-type.2.3: Element 'beans' cannot have character [children]
  8. Sweet Home 3D 是Web三维效果图
  9. javaWeb企业分布式、互联网、云开发平台-Jeesz
  10. 词形变换和词干提取工具(英文)