Я пытаюсь создать псевдокод для алгоритма, который сможет определить, имеет ли направленный граф уникальное топологическое упорядочение. Я уже придумал следующий псевдокод для топологической сортировки, но что мне нужно добавить или отредактировать, чтобы определить, имеет ли орграф уникальное топологическое упорядочение?Определить, имеет ли направленный граф уникальное топологическое упорядочение?
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;
Ну ладно, поэтому каждый раз, когда я поплю, сохраняю элемент, которым он был, и если есть какие-то дубликаты, граф не имеет уникальной топологической сортировки? Это правильно? – Vimzy
@Vimzy Да, если вы делаете два нажатия на одной итерации внешнего цикла, то топологический порядок не является уникальным. –