Лучшие вопросы
Таймлайн
Чат
Перспективы

Топологическая сортировка

упорядочивание вершин бесконтурного ориентированного графа согласно частичному порядку, заданному ребрами орграфа на множестве его верш Из Википедии, свободной энциклопедии

Топологическая сортировка
Remove ads

Топологическая сортировка — упорядочивание вершин ациклического ориентированного графа согласно частичному порядку, заданному рёбрами орграфа на множестве его вершин.

Например, для графа:

существует несколько согласованных последовательностей его вершин, которые могут быть получены при помощи топологической сортировки, в частности:

В последовательности могут быть переставлены любые две стоящие рядом вершины, которые не входят в отношение частичного порядка .

Thumb
Ациклический ориентированный граф

Топологическая сортировка широко применяется в различных отраслях например, с её помощью можно построить последовательность прохождения учебных курсов студентами, последовательность установки программ при помощи пакетного менеджера, последовательность сборки исходных текстов программ по данным сборочных файлов, можно построить список отображения объектов в изометрической проекции зная парные порядковые отношения между объектами (какой из двух объектов должен быть прорисован раньше).

Remove ads

Алгоритм Кана

Суммиров вкратце
Перспектива

Один из первых алгоритмов, и наиболее приспособленный к исполнению вручную разработан Артуром Каном в 1962 году.

Пусть дан ациклический ориентированный простой граф . Через обозначим множество таких вершин , что . То есть  — множество всех вершин, из которых есть дуга в вершину . Пусть  — искомая последовательность вершин.

пока 
  выбрать любую вершину  такую, что  и 
  
  удалить  из всех 

Наличие хотя бы одного цикла в графе приведёт к тому, что на определённой итерации цикла не удастся выбрать новую вершину .

Thumb

Например, если задан граф:

,

алгоритм выполнится следующим образом:

Подробнее , ...

На втором шаге вместо может быть выбрана вершина , поскольку порядок между и не задан.

Remove ads

Алгоритм Тарьяна

Суммиров вкратце
Перспектива

С использованием вычислительной техники топологическую сортировку можно выполнить за времени и памяти, если обойти все вершины, используя поиск в глубину, и выводить вершины в момент выхода из неё — алгоритм разработан Робертом Тарьяном в 1976 году.

Изначально все вершины помечаются как белые, для каждой вершины осуществляется шаг алгоритма:

  • если вершина чёрная, ничего делать не надо,
  • если вершина серая — найден цикл, топологическая сортировка невозможна,
  • если вершина белая, то:
    • красится в серый,
    • применяется шаг алгоритма для всех вершин, в которые можно попасть из текущей,
    • вершина красится в чёрный и помещается в начало окончательного списка.

Например, на графе:

с порядком обхода алгоритм отрабатывает следующим образом:

Подробнее , ...
Remove ads

См. также

Литература

  • Левитин А. В. Глава 5. Метод уменьшения размера задачи: Топологическая сортировка // Алгоритмы. Введение в разработку и анализМ.: Вильямс, 2006. — С. 220—224. — 576 с. — ISBN 978-5-8459-0987-9
  • Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 22.4. Топологическая сортировка // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 2-е изд. М.: Вильямс, 2005. — С. 632—635. ISBN 5-8459-0857-4.
Remove ads

Ссылки

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads