Топологическая сортировка.
Топологическая сортировка (ТС) вершин орграфа G заключается в присвоении его вершинам чисел 1, 2,…, | x |, причем должно выполняться следующее условие для орграфов: если имеется дуга (xi, xj), то j > i (i ® j).
Рассмотрим случай для ацикличного графа:
![]() |
Топологическая сортировка может быть использована:
1. При организации толкового словаря. Все понятия при этом располагаются в линейную структуру, т.е. понятия, которые используют первичные понятия (аксиоматические), находились бы ниже.
2. При организации программных систем. Здесь рассматривается совокупность взаимосвязанных процедур (одна процедура вызывает другую, та, в свою очередь, третью, и т.д.). Т.е. процедуры распределяются таким образом, чтобы не было ссылок вперед.
Рассмотрим алгоритм топологической сортировки. Идея его заключается в том, что осуществляется поиск такой вершины, из которой не выходит ни одна дуга. Такой вершине присваивается | x |. Затем эту вершину выбрасывают вместе с дугами и опять осуществляют поиск на | x | - 1, …
Введем массив LABEL размерностью | x |. Он будет обладать следующими свойствами: если вершина не выброшена, то значение LABEL(x)=0; если есть дуга (xi, xj), то LABEL(x j) > LABEL(x i).
Для поиска вершины, из которой не выходят дуги, используют алгоритм прохождения графа в глубину:
" x Î X выполнить: (Num(x)=1; LABEL(x)=0;)
C = | x | + 1;
" x Î X выполнить: если Num(x)=1, то DM(x);
Процедура DM(v);
начало
Num(V)=0;
" t Î M(V) выполнить: если Num(t)=1, то DM(t);
конец;
C = C – 1;
LABEL(V) = C;