AOV网和AOE网

一、AOV网算法

定义:在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,咱们成为AOV网(Activity On Vertex Network),AOV网中的弧表示活动之间的某种约束关系。AOV网中不存在回路(即无环的有向图)。数据结构

拓扑排序排序

定义:设G(V,E)是一个具备n个顶点的有向图,V中的顶点序列v1,v2,.....,vn,知足若从顶点vi到vj有一条路径,则顶点vi必在vj以前。这样的顶点序列成为拓扑序列。事件

拓扑排序其实就是对一个有向图构造拓扑序列的过程。it

对AOV网进行拓扑排序的基本思路是:从AOV网中选择一个入度为0的顶点输出,而后从有向图中删除该定点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出所有顶点或AOV网中不存在入度为0的顶点为止。ast

拓扑排序使用邻接表的数据结构。还用栈做为辅助数据结构,用来存储处理过程当中入度为0的顶点,目的是为了不每次查找时都要去遍历邻接表找有没有入度为0的顶点。test

对一个具备n个顶点e条弧的AOV网来讲,时间复杂度为O(n+e).基础

 

二、AOE网遍历

定义:在一个表示工程的带权有向图中,用顶点表示事件,用弧表示活动,用弧上的权值表示活动持续的时间,这种有向图的弧表示活动的网,咱们称为AOE网(Activity On Edge Network).AOE网中没有入度的顶点称为始点或源点,没有出度的顶点叫作终点或汇点。im

AOV网和AOE网的不一样:

它们都是用来对工程建模的,但它们仍是有很大的区别,主要体如今AOV网是顶点表示活动的网,它只描述了活动之间的约束关系,而AOE网是用有向边表示活动,边上的权值表示活动持续的时间。AOE网是创建在AOV网基础之上(活动之间约束关系没有矛盾),再来分析完成整个工程至少须要多少时间,或者为缩短完成工程所需时间,应当加快那些活动等问题。

路径各个活动所持续的时间之和称为路径长度,从源点到汇点具备最大路径长度的路径叫作关键路径,在关键路径上的活动叫作关键活动。

关键路径的几个参数:

(1)、事件的最先发生时间etv(earliest time of vertex):即顶点Vk的最先发生时间。

(2)、事件的最晚发生时间ltv(lastest time of vertex):即顶点Vk的最晚发生时间。也就是每一个顶点对应事件最晚须要开始的时间,超出此时间将会延误整个工程。

(3)、活动的最先开始时间ete(earliset time of edge):即弧ak的最先开始时间。

(4)、活动的最晚开始时间lte(lastest time of edge):即弧ak的最晚开始时间,也就是不推迟工期的最晚开始时间。

AOE网也用邻接表结构,与AOV网邻接表不一样的是,AOE网的邻接表中增长了weight域,用来存储弧的权值。

计算顶点Vk的最先发生时间etv[k]的公式是:

计算顶点Vk的最晚开始时间ltv[k]的公式:

ete表示活动<Vk,Vj>的最先开始时间,是针对弧来讲的。但只有此弧的弧尾顶点Vk的事件发生了,它才开始,所以ete = etv[k];即以Vk为弧尾的弧(活动)的最先开始时间ete等于弧尾顶点Vk的最先开始时间etv[k]。

lte表示活动<Vk,Vj>的最晚开始时间,但此活动最晚也不能等到Vj(顶点)事件发生才开始,而必须在Vj事件以前发生,因此lte = ltv[j]-len<Vk,Vj>。

当ete与lte相等时,此活动为关键活动。

求关键路径的算法时间复杂度为O(n+e),n个顶点e条边的有向无环图。

注意:有向无环图的关键路径不必定只有一条,也能够有多条。若是有多条关键路径,则单单提升一条关键路径上的关建活动的速度并不能致使整个工期的缩短,而是必须是提升同时在几条关键路径上的活动的速度。

相关文章
相关标签/搜索