一、相关概念
AOV网
在一个表示工程的邮有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们称为AOV网
。
拓扑序列
设G = (V, E)
是具有n个顶点的有向图,V中的顶点序列v1, v2, ……, vn
,若满足从vi
到vj
有一条路径,则在顶点序列中顶点vi
必在vj
之前,则我们称这样的顶点序列为一个拓扑序列。
拓扑排序
对一个有向图构造拓扑序列的过程,主要是为了解决一个工程能否顺序进行的问题。
二、拓扑排序算法
基本思路
从AOV网中选择一个入度为0
的顶点输出,然后删去此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出全部顶点或者AOV网中不存在入度尾0的顶点为止。
算法实现
相关数据结构的说明:
程序实现:
个人理解
1、首先将入度为0的顶点入栈;
2、出栈,并将该出栈顶点对应的弧删除(即相邻接的顶点入度减一),判断如果该邻接的顶点入度为0,将该顶点入栈;
3、循环执行第2步,直到栈空,如果出栈顶点数等于图中所有顶点数,表示该图是一个无环图,否则表示图中有环。