源点和汇点
关键路径和路径长度
求解关键路径
ve:early最早开始时间
源点最早开始时间定义成0:ve(v1)=0
vl:late最迟发生时间:和最晚结束时间是同一个时间,结束了才能开始
这是关于顶点的,即事件的。
接下来是活动的:
时间余量:活动的最迟开始时间-活动的最早开始时间
没有时间余量:最早开始时间和最晚开始时间是一样的,差值为0,称为关键活动
怎么求活动的最早和最晚开始时间?
i是第i个活动,e(i)等于弧尾顶点的最早发生时间ve(j):e(i)=ve(j)
最晚开始时间l(i):
k顶点的最晚发生时间减去边的权值:vl(k)-w
要计算e(i)和l(i),就要计算ve(i)和vl(k)
所以接下来就要看如何计算ve(i)和vl(k),即某一个顶点的最早发生时间和最晚发生时间
最早发生时间:
从第一个顶点往前推,它自己规定为0,从这一刻就可以开始
下一个顶点怎么算呢?上一个顶点(可能不止一个)加上当前活动持续的时间,结果可能不一样,那就从这里头选一个最大的(因为后一个事件的开始必须是要所有分支活动都完成),作为这一个顶点的最早发生时间
最晚发生时间:
公式有点难理解,看一下例子
从i顶点到j顶点的一条弧:也是找到j顶点的最晚发生时间,减去这条弧的权值,由i发出的弧也可能有很多个,那就在若干个里头找最小的
要找某一个顶点的最早发生时间,我们从源点开始(为0,不用求了)
边表示活动,如果后面还有活动,这些活动最早什么时候开始?得等最长的活动结束了才能开始,所以要找到当中的最大值,
这里vj什么时候开始?去求其他的所有顶点,即以vj为弧尾的所有顶点的最早发生时间,再加上权值,找最大,
最晚是从汇点往前推:
现在已知汇点在第10天结束,对于第一条路径,它最迟可以在第8天开始,它再用两天时间,第8天就可以结束了,对于第二条路径,最迟在第6天开始,经过4天,第10天就可以结束,第3条路径,最迟得在第7天开始,要是第8天,还要3天,那就完不成了,最后一条,第3天就要开始,不然经过7天,完成不了,所以3就是最晚开始。要保证它最迟在第10天结束,那就要保证他的前一个活动最迟在--10-权值得最小值--开始
(用网友的例子:用ddl- 花费时间=最迟开始天数,而又因为时间越长被减数越大所得差就越小(都是十二月考试学那么多内容,你学的越慢你就得越早开始复习,所以取最小值)
v5:选7还是选5?选最大值7,最早可以什么时候开始。
每个顶点得最晚发生时间:
从汇点算,v9的不用求,和他的最早发生时间相同
用前一个顶点的最晚时间减去权值......继续往前推,v5就要分别计算和比较,但7=7,不用理;v1,连接的顶点有3个,6-6=0最小,通常最后一个顶点一般也不用算,就是0
总结:一个取最大,一个取最小,一个正着来,一个倒着来
然后,我们每个活动的最早和最晚开始时间就可以开始求了
i表示第i个活动,即从j到k的一个边,ve(j)求的是j顶点最早发生时间--刚才已求,查阅填即可
a2,a3,a1的弧尾都是v1,所以都是0
接下来是a4活动,直接查v2的最早发生时间......依次查就行了
再看每个活动的最迟开始时间:
公式:从j到k的弧,vl(k)是弧头顶点的最晚发生时间-弧
a1查到v2的vl是6,减去权值6=0,所以a1最迟现在开始
差值直接减就行,a1,a4,a7,a8,a10,a11,是关键活动,关键活动构成的路径(蓝色)就是关键路径
总结:
1.
2.
3.不能缩短太多