在我学会了如何确定有向图是否具有1个拓扑排序之后,如果有一种方法可以确定是否存在具有2的图,我有点好奇。首先,是否存在有2个图的真实情况拓扑排序?
我学会了使用哈密尔顿路径来确定DAG是否具有唯一的拓扑排序。这是否适用于此? 感谢
答案 0 :(得分:5)
如果在第(*)行,你可以从2个不同的节点中选择一次 - 有两个拓扑排序
L ← Empty list that will contain the sorted elements
S ← Set of all nodes with no incoming edges
while S is non-empty do
remove a node n from S (*)
add n to tail of L
for each node m with an edge e from n to m do
remove edge e from the graph
if m has no other incoming edges then
insert m into S
if graph has edges then
return error (graph has at least one cycle)
else
return L (a topologically sorted order)
更准确地引用R. Sedgewick:
当且仅当存在时,有向图才具有唯一的拓扑排序 在每对连续顶点之间的有向边 拓扑顺序(即,有向图具有哈密顿路径)。如果 有向图具有多个拓扑排序,然后是第二个拓扑 可以通过交换一对连续的顶点来获得顺序。