【学习分享】通俗易懂!最早(晚)开始时间
- 前言
- 一、什么是最早(晚)开始时间?
- 二、什么是关键路径?
- 三、实例
- 四、小结
前言
看了这么多篇求解最早开始时间和最晚开始时间的文章,结果一篇没看懂,索性自己写一篇吧!
能看懂下面省流版的就不必往下看了哈-,-。
省流版
1、关键路径上节点的最早和最晚时间都是相同的,不能调整否则项目将延期。
2、计算最早时间用正推迭代,当出现多条分支时,上一个最早时间+最长分支路径时间计算,否则时间不够用。
3、计算最晚时间用反向迭代,当出现多条分支时,后一个最晚时间-最长分支路径时间计算,否则时间不够用。
没看懂?那继续往下看,看完再回头来看是不是能看懂了。
一、什么是最早(晚)开始时间?
假设有一个项目,a->b节点需要1天,b->c节点需要2天。所以我们的这个项目需要3天时间来完成。
为了保证项目正常完成,abc的最早(晚)开始时间是多少呢?
最早开始时间计算:
1、因为a是项目的起点,所以ab最早开始时间就是0天,这个可以理解吧?
2、b要完成a->b节点的时间后才能开始,所以bc最早开始时间就是a+(a->b节点的时间1天)=1天。
3、c要完成b->c节点的时间后才能开始,所以c最早开始时间就是1+(b->c节点的时间2天)=3天。
最晚开始时间计算:
1、因为c是项目的终点,所以c最晚开始时间就是项目规定的3天,这个可以理解吧?
2、b->c的时间是2天,那么bc的最晚开始时间就是3-(b->c的时间2天) = 1天。
3、a->b的时间是1天,a的最晚开始时间就是1-(a->b的时间1天) = 0天。
我们可以发现一个规律,a,b,c的最早(晚)开始时间都是相同的!为什么呢?因为a,b,c每一条路径都是影响项目的关键路径,所以a,b,c的最早和最晚开始时间都会影响项目进度,所以是不能调整时间的!
二、什么是关键路径?
上面的例子a->b->c就是关键路径,因为每个节点的延误都会影响项目进度。
我们再举个例子,增加一个节点d,所以现在有a,b,c,d四个项目节点,那么这个项目的的关键路径是哪个呢?
因为出现了节点d,所以我们可以看下,出现了一条新的路径,a->b->d->c。使用的时间是4天。
比a->b->c的3天多了1天。所以我们想一下,整个项目所需要花费的时间是3天还是4天呢,答案很明显是4天,因为你无法绕过d而完成这个项目。所以我们的关键路径是a->b->d->c。
所以ab,bd,dc都不能延期,那么bc可以延期吗?
a->b->c一共才花了3天时间,a->b->d->c一共花了4天时间,是不是b->c可以延期了呢?我们来看,ab的最早和最晚开始时间是都是1天,所以其实b是无法延期的,假设b延期到第二天执行,那么b->d->c就延期了!
可以思考下,如果b->c是4天的情况下,d能不能延期。
三、实例
下面我们来实战一下,看是否已经理解。
首先找到关键路径。
1-3-4-6-7-9-10,这个根据我们上面的例子进行迭代计算就可以得出来了,也就是说通过前面节点的最长所需时间,然后计算后面节点的最早时间。
所以关键路径上的最早/最晚时间都是不能变动的,否则会出现项目延期。
那么节点5的最早时间是多少呢?
节点5的路径有2->5,3->5,4->5,如果要最早,那么必须取这三条路径的最大值,否则会有路径时间不够用。所以很明显4->5的时间最早,4的最早时间是10,所以节点5的最早时间是10+(4->5的时间5周)=15周。
那么节点5的最晚时间是多少呢?
因为5不在关键路径上,最晚开始时间可以从节点5后面的关键路径进行倒推。有两条路径5->7->9->10和5->9->10,要最晚,那么必须取这两条路径的最大值,否则处理较长路径的时间会不够用。所以是5->7->9->10,所以节点5的最晚开始时间是21-(5->7的时间5)=16周。
四、小结
通过本文的例子相信彦祖们已经掌握了最早(晚)开始时间的计算方法了。找到关键路径,问题自然就可以解决了。觉得写的不错的彦祖帮忙一键三连哈~~