图的应用——拓扑排序
AOV 网(Activity On Vertices)
在一个表示工程的有向图中,用顶点表示活动,用有向边<Vi, Vj>表示活动 Vi 必须先于活动 Vj 进行。这种有向图叫做顶点表示活动的 AOV 网络 。
AOV 网特点:
AOV 网中的弧表示活动之间存在的某种制约关系
AOV 网中不能出现回路
算法思想
输入 AOV 网络。令 n 为顶点个数。
在 AOV 网络中选一个没有直接前驱的顶点, 并输出之;
从图中删去该顶点, 同时删去所有它发出的有向边;
重复以上 2、3 步, 直到:
全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;或:
图中还有未输出的顶点,但已跳出处理循环。这说明图中还剩下一些顶点,它们都有直接前驱,再也找不到没有前驱的顶点了。这时 AOV 网络中必定存在有向环。
算法实现
为避免每次都要搜索入度为零的顶点,在算法中设置一个**“栈”**,以保存“入度为零”的顶点。
复制代码
版权声明: 本文为 InfoQ 作者【若尘】的原创文章。
原文链接:【http://xie.infoq.cn/article/44055935f56372512ac7ec83e】。文章转载请联系作者。
评论