拓扑排序
有向无环图
无环的有向图,简称DAG图(Directed Acycline Graph)
常用来描述一个工程或系统的进行过程(流程)。
AOV网:拓扑排序
用一个有向图表示一个工程的各子工程及其相互制约关系,其中以顶点表示活动,弧表示活动之间的优先制约关系,称这种有向图为顶点表示活动的网(Activity On Vertex network)
拓扑排序例子:
AOV网的特点
- 若从 i 到 j 有一条路径,则 i 是 j 的 前驱;j 是 i 的后继
- 若 < i , j > 是网中有边,则 i 是 j 的直接前驱,j 是 i 的直接后继
- AOV网中不允许有回路,因为如果有回路存在,则表明某项活动以自己为先决条件,这是荒谬的。
拓扑排序
在AOV网没有回路的前提下,我们将全部活动排列成一个线性序列,使得若AOV网中有弧< i , j >存在,则在这个序列中,i 一定在 j 的前面,具有这种性质的线性序列称为拓扑有序序列,相应的拓扑有序排序的算法称为拓扑排序。
拓扑排序的方法
- 在有向图中选一个没有前驱的顶点且输出:c1
- 从图中删除该顶点和所有以它为尾巴的弧;
- 重复上述两步,直至全部顶点均已输出或当图中不存在五前驱的顶点为止
拓扑序列:c1 c2 c3 c4 c5 c7 c9 c10 c11 c6 c8 c12
一个AOV网的拓扑序列不是唯一的
检测AOV网中是否存在环
对有向图构造其顶点的拓扑有序序列,若 网中所有顶点都在它的拓扑有序序列中,则该AOV网必定不存在环
环上的顶点互为前驱,均无法加入拓扑序列