我正在尝试为算法创建伪代码,以便能够确定有向图是否具有唯一的拓扑排序。我已经为拓扑排序提出了以下伪代码,但为了确定有向图是否具有唯一的拓扑排序,我还需要添加或编辑什么?
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;
答案 0 :(得分:0)
没有特别的理由使用堆栈而不是其他类型的集合。如果我们不确定地弹出元素,那么我们就可以实现所有可能的拓扑命令。因此,拓扑顺序是唯一的,当且仅当集合每次弹出时都包含一个元素(除非它在结尾时为空)。