我的书定义了一种在线性时间内找到有向图的强连通分量的方法。此外,其他几种寻找强连通组件的算法(即Tarjan算法)也能够在线性时间内找到组件。
然而,所有这些算法都要求图形的顶点按递减 post 值排序(顶点留下的时间)。常见的排序算法(如Mergesort)需要O(n log n)时间。
因此,如果按 post 值排序顶点列表需要O(n log n)时间,这些算法如何设法完成在线性时间内完成强连接组件的定位?
答案 0 :(得分:2)
由于“时间”(测量后期值的类型)作为时间的函数(深度优先搜索程序执行的步数)单调不减,因此将每个节点附加到列表就足够了在遍历之后立即离开它。在遍历结束时,列表按排序顺序排列。
或者,由于post值是以多项式为界的整数,因此在某些机器模型上可以使用例如线性时间对它们进行排序。基数排序。