|
Топологическая сортировка.Date: 2015-10-07; view: 494.
Топологическая сортировка (ТС) вершин орграфа 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;
|