拓扑排序

2020-12-06  本文已影响0人  文景大大

一、拓扑排序的使用场景

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

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

二、拓扑排序及其适用范围

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

2.1 Kahn算法

2.2 DFS算法

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

2.3 适用范围

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

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

上一篇下一篇

猜你喜欢

热点阅读