algorithm - 使用强连接组件进行拓扑排序以查找循环(​​有向图)

标签 algorithm topological-sort connected-components

据我所知,如果您有针对强连通组件的现成高效黑盒方法,那么进行拓扑排序的一种方法是:

(假设——没有自循环)

  1. 运行强连接组件
  2. 如果您有一个或多个大小 > 1 的分量,则此图有环。
  3. 否则(图中只有 1 个大小的组件)这是一个 DAG,恭喜!
  4. 如果是 DAG 运行拓扑排序,否则会提示你做不到。

不管效率如何,以上是一种“技术上正确”的拓扑排序方式吗?

我只是想确保我理解正确。

最佳答案

是的,这在技术上是正确的,因为没有自环的有向图是无环的(即拓扑可排序的)当且仅当所有强分量的大小都是 1。不过,最常见的拓扑排序将循环检测作为一个简单的副产品。

关于algorithm - 使用强连接组件进行拓扑排序以查找循环(​​有向图),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30581633/

相关文章:

algorithm - 对部分排序列表进行排序的最佳方法是什么?

algorithm - 如何在线性时间内找到从 DAG 中的节点可到达的最小值?

algorithm - 我怎样才能稳定地返回一个结构数组?

algorithm - 搜索子目标

python - 将连续的整数组合在一起

image - 如何在 Matlab 中找到二值图像中的所有连通分量?

image - 如何在 Matlab 中找到二值图像中的所有连通分量?

algorithm - 涉及日志的函数的大O复杂度是多少

topological-sort - 反向边的拓扑排序是否与反转拓扑排序结果相同?

matrix - 邻接矩阵邻居