Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДМ-2 - Методичка (графы).doc
Скачиваний:
15
Добавлен:
11.08.2019
Размер:
678.91 Кб
Скачать

Сильно связный граф

Орграф 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 с выделенными классами эквивалентностей (контурами).