首先,之前讲的拓扑排序中:
#DAG图:有向无环图(一个有向图中不存在环)
#AOV网:用DAG来表示一个工程,顶点表示活动,用有向边<Vi,Vj>表示活动Vi必须先于活动Vj发生的这样一种关系,
则这种有向图称为「顶点表示活动的网络」,记为:AOE网。
#拓扑排序:由一个DAG的顶点组成的序列,当且仅当满足如下条件时,称为该图的一个拓扑序列:
【1】每个顶点出现、且出现一次;
【2】若顶点A在序列中排在顶点B的前面,则在图中不存在从顶点B到顶点A的路径
时间复杂度为:O(|V|+|E|)
在学习如上知识定义后,介绍关键路径:
#AOE网:在带权有向图中,以顶点表示事件,有向边表示活动,边上的权值表示完成该活动的开销,
则称这种有向图为「用边表示活动的网络」的网络AOE网。
~AOE网中,只有一个入读为0的顶点:源点;
只有一个出度为0的顶点:汇点;
#关键路径:AOE网中,从源点到汇点的有向路径可能有多条,并且这些路径长度可能不同;(注意,虽然每条路径活动时间不同,但是只有所有路径上的活动都完成了,整个工程才能算结束。) 因此,从源点到汇点的所有路径中,具有最大路径长度的路径称为关键路径,把关键路径上的活动称为关键活动。
因此,完成整个工程的最短时间就是关键路径的长度。
#关于关键果活动的几个参量定义:
ve(k):事件Vk的最早发生时间;ve(源点)=0,ve(k)= Max{ ve(j) + weight(vj,vk)} 从前往后计算
vl(k):事件Vk的最晚发生时间;vl(汇点)= ve(汇点),vl(j)= Min{vl(k)- weight(vj,vk)} 从后往前计算
e(i):活动ai的最早开始时间;边<vj,vk>表示活动ai,e(i)= ve(k)
l(i):活动ai的最晚开始时间;边<vj,vk>表示活动ai,l(i)= vl(j)- weight(vk,vj)
d(i)= l(i)- e(i)
#求关键路径:
分别求出上述参量定义,然后找出所有d()= 0的关键活动构成关键路径。
练习题:
因此,这个AOE网的关键路径为:(v1,v3,v4,v6)