2014-11-24 5 views
-3

Я пытаюсь разработать алгоритм, чтобы определить, имеет ли ориентированный граф уникальное топологическое упорядочение. Кто-нибудь знает, как писать псевдо-код для этого?Определение того, имеет ли направленный граф уникальное топологическое упорядочение?

+0

Вы что-то сделали сами? Вы пытались это сделать? Из-за этого его отдал. Есть много алгоритмов, чтобы делать то, что вы хотите. – justanothercoder

+0

Звучит как типичная домашняя задача. – Gumbo

+0

Что касается ваших прав: почему вы активно пытаетесь сделать свой вопрос хуже, чем первоначально? – HugoRune

ответ

2

Напомним, процедура топологического рода, который короче:

  1. результат < - [] // пустой список
  2. Найти узел n, который является стоком в графе
  3. удалить все ребра подключения к n и n из графика
  4. result.addFirst (п)
  5. если есть узлы левых, вернуться к 2

Если на любой итерации на шаге 2 вы можете выбрать 1 из 2 или более узлов, топологическая сортировка не уникальна. Если в какой-то момент вы застряли перед исчерпанием графика - топологического типа вообще нет.

+0

Также, если на втором шаге нет раковины, нет уникального топологического упорядочения (или, фактически, любого топологического упорядочения). –

+0

@Anonymous Спасибо, добавил, чтобы быть явным в ответе. – amit