活动网络AOV网络除了一些不能再简单的工程外,所有的工程都可以划分为若干个成为活动(activities)的子工程。比如说大学的课程,得修完了大学英语1才能修大学英语2,也得修完了高等数学才能修线性代数、概率论、离散数学等。将这些作为顶点标记为图时,它便是一个有向图。
顶点表示活动的网(activity on vertex network)或AOV网,是用顶点表示活动或任务,边表示活动或任务之间的优先关系的有向图G。在AOV网络G中,当且仅当从顶点i到j存在一条有向路径,则顶点i称为顶点j的前驱(predecessor);当且仅当<i,j>是G中的一条边,则称顶点i为顶点j的直接前驱(immediate predecessor)。如果顶点i是顶点j的前驱,则称顶点j为顶点i的后继(successor);如果顶点i是顶点j的直接前驱,则称顶点j为顶点i的直接后继。
拓扑排列是由有向图中所有顶点形成一个线性序列,对图中任意两个顶点i和j,如果顶点i是顶点j的前驱,则顶点i在拓扑序列中排在顶点j的前面。
我们在前面已经介绍了拓扑排序,这里给出它的伪代码。
for(i=0;i<n;i++) { if every vertex has a predecessor { fprintf(stderr,"Network has a cycle.n"); exit(1); } pick a vertex v that has no predecessors; output v; delete v and all edges leading out of v from the netwok; }