拓扑排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拓扑排序相关的知识,希望对你有一定的参考价值。

参考技术A 拓扑排序主要是用于在一个DAG(有向无环图)中将所有的顶点按照依赖顺序关系构造成一个线性序列。

拓扑排序后的线性序列不止有一种情况适合问题的解,即存在多解的情况。

排序算法都是作用做特定的数据结构上的,分析以上的问题,我们发现,这些问题都可以抽象为一个有向无环图。那么问题就转化成了,如何在一个有向无环图上实现拓扑排序。

即深度优先搜索遍历算法,这个在讲 图 这种数据结构的时候有详细地说过,此处不再赘述。只不过DFS输出的序列正好也是符合拓扑排序的,因此也可以作为拓扑排序的一种解法。

凡是需要通过局部顺序来推导全局顺序的,一般都可以使用拓扑排序来解决。但是要求,图中不能有环,否则就不能使用。那么如何判断图中是否有环呢。

如果我们使用Kahn算法,如果最后输出序列中的顶点个数,少于实际图中的个数,则说明图中还剩下入度不是0的顶点,从而说明了图中存在环。

以上是关于拓扑排序的主要内容,如果未能解决你的问题,请参考以下文章

拓扑排序

『拓扑排序』拓扑排序模板

拓扑排序算法实现

图 - 拓扑排序 (二)

拓扑排序

拓扑排序+关键路径