软件设计师答他人问--最早开始时间和最晚开始时间

题目如图所示,解法如下:


方法:

先求最早开始时间:A是开始节点,所以A的最早开始时间是0,并且最早开始时间等于最晚开始时间。等得到图中红色的部分。

其他节点的最早开始时间为以该节点作为弧尾的所有有向弧的值+弧头的值 的最大值,看例子就明白了:

然后求其B的最早开始时间,由B作为弧尾的有向弧只有<A,B>且值为2A的最早开始时间为0,所以B的最早开始时间为0+2=2,得到绿色的结果。

C的最早开始时间,以C为弧尾的弧只有<B,C>且值为3B的最早开始时间为2,所以C的最早开始时间为2+3=5,得到黄色结果。

同理DGE的最早开始时间如图所示。

F的最早开始时间:以F为弧尾的弧有<E,F> <B,F> <G,F> 所对应的值分别为 13 6 13,MAX{13,6,13}F的最早开始时间为13,得到紫色结果.

后面的都一样...

然后由于J是结束节点,所以最早开始时间与最晚开始时间一样,得到图中的 这个色结果。

 

接着求最晚开始时间从后往前推。

先求I的最晚开始时间。应为以I为弧头的只有弧<I,J>所以,I的最晚开始时间为J的最晚开始时间减去<I,J>的值 18-2=16

同理F H的最晚开始时间也可以得到。

E的最晚开始时间: 以E为弧头的弧有 <E,H> <E,F> H的最晚开始时间减去<E,H>的值为12   F的最晚开始时间减去<E,F>的值为13-3=10 ,取MIN{12,10}得到E的最晚开始时间为10

....

后面都一样了....

完成项目的最少时间就是结束节点的最早或最晚开始时间 18

两条关键路径都画在图中了

BC在关键路径上,所以一天也不能晚;

BF可以耽搁的时间为 F的最晚-B的最早-<B,F>的值,也就是 13-4-2=7

口诀:最早开始从前往后用加法看弧尾最大,最晚开始从后往前用减法看弧头最小


猜你喜欢

转载自blog.csdn.net/u012613903/article/details/80022286