确定有向图是否具有唯一的拓扑排序?

时间:2014-11-29 02:51:11

标签: algorithm pseudocode directed-graph topological-sort

我正在尝试为算法创建伪代码,以便能够确定有向图是否具有唯一的拓扑排序。我已经为拓扑排序提出了以下伪代码,但为了确定有向图是否具有唯一的拓扑排序,我还需要添加或编辑什么?

Input: A graph G
Output: A list L that contain the sorted vertices

 define an empty list L;
 create a stack Stack;
 push all vertices with no incoming edges into Stack;
 while Stack is not empty do

v ← Stack.pop();
add v to the list L;

for all the vertices w with an edge e from v to w do
remove edge e from G;
 if w has no other incoming edges then
push w into Stack;
 if G has edges left then
 return error (graph G can’t be topological ordered);
 else
 return L;

1 个答案:

答案 0 :(得分:0)

没有特别的理由使用堆栈而不是其他类型的集合。如果我们不确定地弹出元素,那么我们就可以实现所有可能的拓扑命令。因此,拓扑顺序是唯一的,当且仅当集合每次弹出时都包含一个元素(除非它在结尾时为空)。