- •3.1.2. Задание диграфов с помощью множеств
- •Определения
- •3 .1.3. Полустепени диграфа
- •Определение
- •Определение
- •Обратный диграф d-1(V,e-1) – это диграф, у которого множества вершин совпадает с множеством вершин исходного диграфа, а дуги имеют обратную ориентацию.
- •Определение
- •Определение
- •Определение
- •2 Определения .2.3. Бинарные операции
- •3 Определение .3. Некоторые виды диграфов
- •Определение
- •3 .4. Изоморфизм диграфа
- •Замечание
- •Формулировки и определения класса сложности, алгоритмов нахождения изоморфизм, инвариантов с очевидными изменениями совпадают с формулировками и определениями для графов.
- •3.5. Дипрогулка, дитропа, дипуть, дицикл
- •Теорема
- •Класс сложности
- •2.6. Типы связности диграфа.
- •3.7. Достижимость
- •Матрица достижимости r(u,V) задается следующим образом:
- •Замечание
- •3 .8. Направленные деревья
- •3.10. Топологическое упорядочение
- •2.11. Подструктуры диграфа
- •2 .11.1. Конденсация
- •Класс сложности
- •2 .11.2. База и антибаза диграфа
- •2 .13. Гамильтоновы диграфы
3 .8. Направленные деревья
Диграф D(V,E) называется направленным деревом, если он имеет корень r и если r V и каждая вершина достижима из вершины r, т.е. имеются дипути, которые начинаются на r и заканчиваются на каждой вершине v.
Существуют несколько эквивалентных определений направленного дерева.
Пусть D = (V,E) будет диграфом. Тогда следующие определения эквивалентны:
D является направленным деревом.
D имеет корень, из которого имеется уникальный дипуть к каждой вершине.
D имеет корень r, для которого deg+(r)=0, а для всех других вершин v deg+(v)=1.
D имеет корень, но удаление дуги (но не вершины) нарушает это условие.
Неограф основания диграфа D является связным и D имеет одну вершину r, для которой deg+(r)=0, а для остальных вершин v deg+(v)=1.
Вершины направленного дерева v, имеющие deg –(v)=0, являются его листьями. Направленный лес состоит из направленных деревьев.
Поддиграф H конечного диграфа D называется направленным каркасным деревом, если поддиграф Н является направленным деревом, содержащим все вершины D.
Число направленных каркасных деревьев с корнем r диграфа задается минором его матрицы Лапласа L+, который вычисляется при удалении r-ых строки и столбца.
3.10. Топологическое упорядочение
Направленным ациклическим графом (directed acyclic draph – DAG) является диграф без направленных циклов.
Алгоритм основан на обходе в глубину (DFS) и базируется на следующем утверждении:
диграф будет ациклическим тогда и только тогда, когда обход в глубину не содержит обратных дуг.
В общем случае под топологическим упорядочением вершин диграфа понимается такое разбиение его вершин на группы (ранги, слои), при котором:
вершины первой группы не имеют предшествующих вершин, а вершины последней группы – последующих;
вершины любой другой группы не имеют предшествующих в следующей группе;
вершины одной и той же группы дугами не соединены.
В результате топологического упорядочения вершин диграфа получается диграф, изоморфный данному. Этот диграф называется диграфом зависимостей.
Топологическое упорядочение вершин позволяет выявить причинно-следственные связи диграфа.
Диграф имеет топологическое упорядочение тогда и только тогда, когда он является ациклическим (DAG).
П
роблема
топологического упорядочения вершин
диграфа решается за линейное время.
Обход в глубину позволяет решать две проблемы:
определить, имеются ли циклы в диграфе. Если циклы имеются, алгоритм останавливается после их обнаружения. В случае ацикличности диграфа DFS определяет времена завершения f[n] обхода вершин.
Топологическое упорядочение вершин задается списком времен обнаружения, записанном в порядке уменьшения.
Сложность алгоритма – О(n+m), n=|V|, m=|E|.
Алгоритм Фалкерсона позволяет построить топологическое упорядочение ациклического диграфа (DAG) вместе с разбиением вершин на группы (ранги, слои). Существует две разновидности алгоритма: графическая и матричная.
Графический вариант алгоритма Фалкерсона:
Найти вершины диграфа, в которые не входит ни одна дуга. Эти вершины образуют первую группу. Обозначим вершины первой группы viI. Поместить эти вершины на вертикаль первой группы.
Мысленно вычеркнуть все пронумерованные вершины и дуги, из них выходящие. В получившемся диграфе найдется по крайней мере одна вершина, в которую не входит ни одна дуга. Этой вершине, входящей во вторую группу, присвоить номера viII, поместить их на вертикаль второй группы и соединить дугами вершины первой и второй вертикали.
Повторить шаг 2 для следующих групп до тех пор, пока все вершины не будут пронумерованы, помещены на соответствующие вертикали и не соединены дугами. В результате будет построен диграф зависимостей.
Пример
Шаг 1.
В
вершину Х6не входи ни одна дуга.
Х6 входит в первую группу вершин.
Мысленно вычеркиваемые линии диграфа
обозначены пунктирными линиями.
Шаг 2.
В
вершины не входит ни одна дуга. Вершины
Х2 и Х4 входят во вторую
группу. Обозначим эти вершины Х2II
и Х4II и поместим
их на вертикаль II группы.
Соединяем в диграфе зависимостей вершины
I и II групп
соответствующими дугами. Мысленно
отбрасываемые дуги помечаем в исходном
диграфе пунктирными линиями.
Шаг 3.
В вершины Х3 и Х5 не входит ни одна дуга. Вершины Х3 и Х5 образуют III группу. Помечаем эти вершины как Х3III и Х5III и помещаем их на третью вертикаль диграфа зависимостей. Мысленно отбрасываемые дуги в исходном диграфе помечаем штриховыми линиями.
Шаг 4.
В вершину Х1не входит ни одна дуга. Вершина Х1входит в IV группу. Обозначим эту вершину Х1IV и поместим ее на четвертую вертикаль. Соединяем вершины I,II,III и IV групп соответствующими дугами. Мысленно отбрасываемую дугу помечаем штриховой линией. Непомеченной остается только вершина Х7.
Шаг 5.
О
ставшаяся
вершина Х7 входит в V
группу. Обозначим эту вершину Х7V
и поместим ее на пятую вертикаль.
Соединяем вершины I,II,II,IV
и V групп соответствующими
дугами. В результате получается полный
диграф зависимостей исходного диграфа.
