Сильно связный граф
Орграф G=(V,U) называется сильно связным, если
( vi V ) = V,
т.е. для любых двух вершин vi , vj V существует путь, идущий из vi в vj , например, граф на рис. 7.1 сильно связный, а граф на рис. 6.2,а не является таковым.
Сильно связный граф можно определить также с помощью условия
( vi V ) = V.
Бинарное отношение "существует путь из vi в vj" является отношением транзитивным и рефлексивным. Бинарное отношение "существует путь из vi в vj и обратно" кроме того симметрично, т.е. задает отношение эквивалентности. Как отмечено выше это отношение порождает контуры в графе. Значит сильно связный граф – это граф, содержащий контуры.
Метод разложения орграфа на классы эквивалентностей
Если K(vi ) – класс, содержащий вершину vi , то
K(vi ) = .
Алгоритм метода включает следующие основные этапы.
1. Берем произвольную вершину vi и определяем , и K(vi ) .
2. Удаляем из дальнейшего анализа вершины K(vi ). Берем вершину vj K(vi ) и действуем аналогично этапу 1, пока это возможно.
Предполагается, что класс K(vi ) может состоять и из одной вершины.
Пример.
Для графа G=(V,U), где |V|=11, на рис. 8.1 показаны матрица смежности || S || , 1-й этап получения контура от вершины v1 : , , K(v1) и номера контуров в векторе вершин V после обработки графа.
Описание машинного алгоритма
Возможный вариант машинного алгоритма поиска контуров в орграфе может включать основные шаги, приведенные ниже рис. 8.1.
- 21 -
а) v1
v11 v2
v10 v3
v4
v9
v8 v5
v7 v6
б)
|| S ||:
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
|
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
2 |
-1 |
|
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
3 |
-1 |
|
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
4 |
4 |
|
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
5 |
3 |
|
0 |
0 |
0 |
0 |
0 |
1
|
0 |
1 |
0 |
0 |
0 |
6 |
3 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
7 |
1 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
8 |
4 |
|
0 |
0 |
1 |
0 |
0 |
0
|
0 |
0 |
0 |
0 |
0 |
9 |
-1 |
|
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
10 |
-1 |
|
1 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
11 |
2 |
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
|
|
|
0 |
1 |
2 |
-1 |
-1 |
-1 |
2 |
-1 |
3 |
1 |
1 |
|
|
б) Матрица смежности графа, ,
= {v1 ,v4 ,v5 ,v6 ,v7 ,v8 ,v11 } (транзитивное замыкание – Z)
= {v1 ,v2 ,v3 ,v7 ,v9 ,v10 ,v11 } (обратное транзитивное замыкание – ZO)
K1(v1) = = {v1 ,v7 ,v11} (вершины, составляющие контур K1)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
1 |
2 |
3 |
4 |
4 |
5 |
1 |
6 |
3 |
3 |
1 |
Номера вершин графа:
Вектор номеров контуров V :
Рис. 8.1. Определение контуров в орграфе:
а) орграф G; б) матрица смежности графа, ,
Шаги алгоритма:
1. Ввод матрицы смежности орграфа (S) и ее размера (n).
2. Обнуление вектора вершин (V) как необработанных и счетчика конту- ров (NK).
- 22 -
3. Цикл i=1(1)n (по вершинам вектора V):
{если Vi 0 (вершина обработана), то продолжение цикла i ,
иначе получение по подпрограмме для вершины Vi вектора транзи-
тивного замыкания (Z); транспонирование матрицы S (ST); получе- ние вектора обратного транзитивного замыкания (ZO); изменение счетчика контуров (NK).
4. Цикл j=1(1)n (для определения вершин контура):
{если Zj 0 и ZOj 0 (найдена вершина контура), то Vj =NK
(занесение номера контура в позицию j вектора вершин V).
5. Цикл m=1(1)n (для подавления связей вершин контура в матрице S):
{ Sm j = 0; Sj m =0.
6. Конец циклов: m} j} i}.
7. Вывод результатов: V, NK.
Необходимо изобразить орграф G с выделенными классами эквивалентностей (контурами).