Говорят, что диграф обладает свойством достижимости, если между любыми вершинами диграфа существует хотя бы один путь.
Матрица достижимости R(u,v) задается следующим образом:
Решение проблемы достижимости диграфа требует полиномиального времени, т.е. относится к Р-классу.
Построить матрицу достижимости можно с помощью алгоритма BFS, выполнив его из каждой вершины диграфа D(V,E).
Сложность – О(n(n+m).
o Начало BFS – вершина 1.
o Исследуются все вершины {1,y} A. Из вершины 1 доступны вершины 2 и 4. Эти вершины заносятся в специальную запись
String={2,4}.
o Затем исследуются все вершины {2,y} A. Из вершины 2 доступны вершины 3 и 5, которые заносятся в специальную запись:
String= {2,3,4,5}.
o Исследуются все вершины {4,y} A. Из вершины 4 доступна только вершина 5. Т.к. такая вершина уже есть в специальном списке, то запись остается неизменной.
o Следующими вершинами будут {3,y} A. Из вершины 3 доступна вершина 6. Эта вершина заносится в специальный список:
|
|
String={2,3,4,5,6}.
o Рассматриваются вершины {5,y} A. Доступными будут вершины 2 и 6, которые есть в специальном списке.
o Следующие вершины будут {6,y} A. Доступная вершина – вершина 5, которая имеется в специальном списке.
o BFS из вершины 1 завершен. В результате выполнения BFS сформирована специальная запись
String={2,3,4,5,6},
которая показывает вершины, доступные из вершины 1.
o Данная запись позволяет записать первую строку матрицы достижимости:
(0 1 1 1 1 1).
o Если повторить BSF из всех оставшихся вершин диграфа, то результатом будет следующая матрица достижимости:
Матрицу смежности A(D) диграфа можно рассматривать как булевскую матрицу, т.к. элементы A(D) равны нулю или единице.
Матрица достижимости вычисляется следующим образом:
R(D) = A(D) Ú A2(D) Ú … Ú An-1, |V|=n,
где Ú - операция поэлементного булевского сложения строк матриц A(D),
A2(D), …, An-1;
Для облегчения вычисления степеней матриц A2(D), …, An-1 осуществляется с использованием булевских операций (умножение заменяется на Ù, а сложение – на Ú).
Сложность алгоритма – О(n4).
Правомочность использование булевских операций в данном алгоритме доказывается в целом ряде книг по диграфам.
Пусть [A(D)] – матрица смежности диграфа D=(V,E), n=|V|.
1. Пусть [Q0]=[A(D)].
2. Сложить (булевская операция ) строку 1 матрицы [Q0] к каждой строке [Q0], которая имеет 1 в первом столбце. В результате получится матрица [Q1]. Если первый столбец имеет только 0, тогда [Q1]= [Q0].
3. Сложить строку матрицы [Q1] к каждой строке этой матрицы, которая имеет 1 во втором столбце. В результате получится матрица [Q2]. Если втором столбце имеет только 0, тогда [Q2]= [Q3].
|
|
4. Для каждого j=3,…,n рассматривается матрица [Qj-1]. Сложить строку j к каждой строке матрицы [Qj-1], у которой j-ый столбец имеет 1. В результате получится матрица [Qj]. Если j-ый столбец имеет только 0, тогда [Qj]= [Qj-1].
5. Записать [R(D)]=[Qn].
Сложность алгоритма – O(n3).
· [Q0]=[A(D)].
· Первая строка [Q0] не имеет 1 в первом столбце. Поэтому [Q1]=[Q0].
· Строка 2 суммируется со строками 1 и 5 (имеют 1 во втором столбце):
· Строка 3 суммируется со строками 1,2 и 5:
· Сложить строку 4 со строкой 1. Результат – [Q3]=[Q4].
· Сложить строку 5 со строками 1,2,4,5 и 6:
· Сложить строку 6 со всеми строками:
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-ых строки и столбца.