博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关键路径
阅读量:5824 次
发布时间:2019-06-18

本文共 859 字,大约阅读时间需要 2 分钟。

可能要求解两种问题,一种是完成所有的任务的最早时间,这个其实只是求解关键路径问题的一部分,另一种是要输出关键路径(关键路径不一定是唯一的)

定义:关键路径就是求始点到终点的一条最长路径,通过求各顶点的最早完成时间来求关键路径

两个重要概念(容易混淆,容易越想越糊涂)

1.最早完成时间:自始点(记为V1)开始沿最长路径(按权计算)到达Vi所需要的时间,成为Vi的最早完成时间,记为TE[i]

  TE[1]=0; (准确来说应该是拓扑排序中的第一个点为0,而第1个点不一定只有1个,而且编号不一定为1,这里只是举一个例子,另外时间也不一定是0,看从什么时候开始计时)

  TE[j] = max (TE[i] + Wij)  (有向边i--->j)

     如果是要找所有任务最早什么时候可以全部做完,其实就是找最大的TE[i]

2.最晚完成时间:在保证终点Vn的最早完成时间不增加的条件下,自V1最迟到达Vi的时间,记为TL[i]

     TL[n]=TE[n];  (别忘了看定义,是保证最后一个点的最早完成时间不增加的条件下,否则的话就没意义了)

      TL[i] = min ( TL[j] - Wij)  (有向边i--->j)

3.缓冲时间:由定义可知 TS[i] = TL[i]-TE[i] >= 0 , TS[i]为点i的缓冲时间

   关键路径上的点就是缓冲时间为0的点(也就是说这些事件没有拖拉的余地,一旦这个时间拖拉了,整个任务将被延迟完成) 

 

两句话总结就是:

1.一个事件被一些事件约束着,它什么时候能开始做,决定于这些约束事件最晚完成的那个时刻(最早完成时间)

2.一个事件是一些事件的约束条件(当然那些事情可能不止一个约束条件),它企图拖拉点完成任务,但是至少要保证它的所有后续事件能够在一定时间范围最后完成,也就是要找到最早完成的那个时刻(最晚完成时间)

再不行,画个时间轴吧

转载于:https://www.cnblogs.com/scau20110726/archive/2013/03/23/2977700.html

你可能感兴趣的文章
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
查看>>
解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题
查看>>
多线程day01
查看>>
react-native 模仿原生 实现下拉刷新/上拉加载更多(RefreshListView)
查看>>
MySQL出现Access denied for user ‘root’@’localhost’ (using password:YES)
查看>>
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>
红黑树
查看>>
UIImagePickerController拍照与摄像
查看>>
python调用windows api
查看>>
第四章 mybatis批量insert
查看>>
Java并发框架——什么是AQS框架
查看>>
【数据库】
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>
linux清除文件内容
查看>>