algorithm - 按弧的拓扑排序

标签 algorithm topological-sort

真的只需要一些指导: 按弧定义的拓扑排序(来 self 的问题)- 是一种对有向图中所有弧进行排序的方法,因此所有插入顶点的弧都必须在从该顶点出来的弧之前出现。

最佳答案

无需更改拓扑排序中的任何内容,您可以直接使用它并进行后处理。

高级伪代码:

  1. 运行拓扑排序,让结果数组为arr
  2. 创建空边列表,让它成为l
  3. 对于 arr 中的每个顶点 v [有序迭代]:
    3.1。对于 E 中的每个 (v,u):
    3.1.1.将 (v,u) 附加到 l
  4. 返回 l

此方法的优点是您可以将拓扑排序用作黑盒,无需修改,只需进行后处理即可获得所需结果。

正确性 [证明草图]:
因为对于每条边 (v,u) - u 在拓扑排序中出现在 v 之后,当你打印它时,它是通过 v 完成,因此 (v,u) 在打印附加到 u 的任何顶点之前打印。

复杂性:
O(|V|+|E|)拓扑排序,O(|V|+|E|)后处理[迭代所有顶点和所有边缘]。

关于algorithm - 按弧的拓扑排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9864450/

相关文章:

java - 在不排序的情况下找到中间值

algorithm - 将 DAG 的大部分黑色顶点合并在一起,使其仍然是 DAG?

algorithm - 如果拓扑排序使用 DFS,它如何在断开连接的图上成功?

cycle - 如何使用拓扑排序在有向图中找到循环?

c++ - 拓扑排序中的邻接表表示

Java:从匿名内部类访问局部变量? (优先队列)

c - 从 C 中的通用 (void *) 列表中删除元素

c++ - 匹配集的数据结构

algorithm - 可供使用的图表数据来源

algorithm - O(n) 具有 O(1/epsilon) 空间的重击手?