一、AOV网(Activity On Vertex Network)
在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,称为AOV网。
不能存在回路。
拓扑序列
设G(V,E)是一个具有n个顶点的有向图,V中的顶点序列满足若从顶点v~i~到v~j~有一条路径,则在顶点序列中v~i~必须在v~j~之前,称这样的一个顶点为拓扑序列。
二、拓扑排序算法
基本思路
从AOV网中选择一个入度为0的顶点输出,然后删去此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出全部顶点或者AOV网中不存在入度为0的点为止。
AOV网要一直删除顶点,所以用邻接表表示图比较合适。考虑到算法中要查找入度为0的点,所以在原顶点结点中增加一个入度域即可。
代码如下:
//拓扑排序
private static boolean TopologicalSort(){
EdgeNode edgeNode = new EdgeNode();
int i,k;
int gettop = 0;
int top = 0; //栈指针下标
int count = 0; //输出顶点的个数
Stack<Integer> stack = new Stack<>();
for(i = 0; i < adjList.verNum; i++){
if(adjList.vertexNodes[i].in</