真的需要一些指导: 通过弧定义进行拓扑排序(来自我的问题) - 是一种排序方向图中所有弧的方法,因此插入顶点的所有弧必须在从该顶点出来的弧之前。
答案 0 :(得分:3)
无需在拓扑排序中更改任何内容,您只需使用它,然后进行后处理。
高级伪代码:
arr
l
v
[有序迭代]中的每个顶点arr
:
(v,u)
中的每个E
:
(v,u) to l
l
这种方法的优点是你可以使用拓扑排序作为黑盒子,而无需修改,只需后期处理即可获得所需的结果。
正确性 [证明草图]:
由于每个边(v,u)
- u
出现在v
之后的拓扑排序中,当您打印它时,它是通过v
完成的,因此{{1在打印附加到(v,u)
的任何顶点之前打印。
<强>复杂性强>:
u
拓扑排序,O(|V|+|E|)
用于后期处理[迭代所有顶点和所有边缘]。
答案 1 :(得分:0)
“传统”拓扑排序是对顶点进行排序,而这是排序弧。否则原则是一样的......