1
算法与数据结构  C语言版
1.9.5.1 7.5.1 拓扑排序
7.5.1 拓扑排序

在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图,称为顶点表示活动的网(Activity On Vertex Network),简称为AOV网。

设G=(V,E)是一个具有N顶点的有向图,V中的顶点序列v1,v2,v3,…,vn,满足若从顶点vi到vj有一条路径,则在顶点序列中顶点vi必须在顶点vj之前,则我们称这样的顶点序列为一个拓扑序列。

例如,计算机系学生的一些必修课程及其先修课程的关系如图7-27所示,用顶点表示课程,弧表示先决条件,则图7-27所描述的关系可用一个有向无环图表示,如图7-28所示。

如图7-28的AOV网的拓扑序列不止一条。序列C1,C9,C2,C4,C10,C11,C3,C12,C6,C5,C7,C8是一条拓扑序列,序列C9,C1,C10,C11,C12,C2,C4,C3,C6,C5,C7,C8也是一条拓扑序列。

所谓拓扑排序,就是对一个有向图构造拓扑序列的过程。构造时会有两个结果,如果此网的全部顶点都被输出,则说明它是不存在回路的AOV网;如果输出顶点少了,说明这个网存在回路,不是AOV网。

图7-27 课程关系表

图7-28 有向无环图