7.5 拓扑排序及关键路径

时间:2020-08-17 17:26:16   收藏:0   阅读:79

title: 数据结构 | 图-5 | 拓扑排序
date: 2019-11-27 17:14:58

tags: 数据结构

拓扑排序、关键路径

拓扑排序

背景

定义

AOV网

顶点表示活动,用表示活动间优先关系有向图称为顶点表示活动的网(Activity On Vertex network),简称AOV网。

若<vi,vj>是图中有向边,则vi是vj的直接前驱,vj是vi的直接后继;
AOV网中不允许有回路,这意味着某项活动以自己为先决条件;

拓扑排序的定义

把AOV网络中各顶点按照它们相互之间的优先关系排列成一个线性序列的过程叫拓扑排序

-拓扑排序应用
检测AOV网中是否存在环:
对有向图构造其顶点的拓扑有序序列,若网中所有顶点都在它的拓扑序列,则该AOV网必定无环

方法

算法实现

以邻接表作存储结构,

若栈空时输出的顶点个数不是n,则有向图有环;否则,拓扑排序完毕

Status TopologicalSort(ALGraph G) {
   for(i  = 0;i <G.vexnum; ++ i ) //查找入度为为零的顶点
      if(! Indegree[i])                      //把入度为零的顶点进栈
           push (S,i ); 
 	 	count = 0;                                  //计数器置0
   while (! StackEmpty(s)) {
        pop(s, i); 
        printf(i,Gvextices[i].data);
        ++count;//输出顶点、计数
        for(p=G.vextices[i].firstarc;  p ;  p = p->nextarc) {
            k = p->adjvex; //得到与输出顶点相邻接的顶点下标
            if(! (--indegree[k])) 
            	push( S,k);
                                     //将邻接点的入度减1,将为零的入栈
        }//for
     }//while
     if (count<G.vexnum) 
     	return ERROR;//该图有回路
     else return  OK;
}//TopologicalSort

关键路径

背景

技术图片

定义

AOE网(Activity On Edge)

边表示活动的网。AOE网是一个带权的有向无环图,其中顶点表示事件,弧表示活动,权表示活动持续时间

路径长度

路径上各活动持续时间之和。

关键路径

路径长度最长的路径关键路径

Ve——事件Vj的最早发生时间Ve(j)

Vl—事件的最迟发生时间Vl(j)

e(i)——表示活动ai的最早开始时间

l(i)——表示活动ai的最迟开始时间

活动ai用弧<j,k>表示,
持续时间记为:dut(<j,k>)
则有:(1)e(i)=Ve(j) //最早开始时间是弧尾事件的最早发生时间
(2)l(i)=Vl(k)-dut(<j,k>)//最迟开始时间是弧头事件的最晚发生时间减去活动的持续时间,即弧的权值
技术图片

算法实现

描述

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!