所有DAG具有多个拓扑排序顺序的原因

时间:2019-04-27 07:24:58

标签: sorting graph directed-acyclic-graphs topological-sort

我想知道为什么所有有向无环图都有一个以上的拓扑排序顺序。

我已经搜索了google,并说大部分内容只是因为它们至少具有一种topo类型而轻而易举。但是我正在考虑如何实现单链列表:

A-> B-> C-> D

这可能意味着拓扑排序只能从技术上通过-D,C,B,A ...

但是,可能不是那种有向无环图,但由于它是有向的(A到B等),我不确定如何反驳这种情况,所以是无环的(没有循环回到任何起点) )图表(从技术上讲,它是一棵树)。

非常感谢您提供的任何说明!

1 个答案:

答案 0 :(得分:0)

并非所有DAG都具有一种以上的拓扑类型。请记住,我们可以通过按顺序删除没有输入边的顶点来构造拓扑排序。

请考虑一个DAG,该DAG包含一个连接所有顶点的连续路径(请注意,此路径不会形成循环,否则将不是DAG)。我们可以从删除没有输入边的顶点开始并重复。我们将发现拓扑排序在每对连续的顶点之间都有一条边。如果我们想形成另一种拓扑,我们可以先删除一些没有输入边的顶点,但这将意味着至少有2个没有输入边的边,在这种情况下,将不可能开始一个顶点的路径并连接所有其他顶点。

由于我们从DAG开始,该DAG具有连接所有顶点的路径,因此我们遇到了矛盾。因此,事实证明,具有连接所有顶点的路径的DAG将具有唯一的拓扑排序。