《经典图论算法》卡恩(Kahn)算法
摘要:
1,卡恩(Kahn)算法的介绍
2,卡恩(Kahn)算法的代码实现
1,卡恩(Kahn)算法的介绍
卡恩(Kahn)算法是图的拓扑排序(Topological sorting)算法,它是基于队列实现的,类似于《宽度优先搜索(BFS)》。
拓扑排序就是在一个有向无环图中,对图的顶点的一种线性排序,对于任意一条有向边<v1,v2>,排序的结果中顶点v1一定在顶点v2的前面。如下图所示,对于<起床,洗脸>这条边,排序的结果中起床一定在洗脸的前面。
当且仅当图是有向无环图时,才有可能进行拓扑排序,任何有向无环图至少有一个拓扑排序。如下图所示,在洗脸之前需要刷牙,在刷牙之前需要洗脸,构成了环形,所以没法排序。
2,卡恩(Kahn)算法的代码实现
卡恩(Kahn)算法实现拓扑排序的原理比较简单,步骤如下: