Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000526.doc
Скачиваний:
16
Добавлен:
30.04.2022
Размер:
11.67 Mб
Скачать

4.8.3. Нахождение сильных компонент

Сильная компонента (СК) графа G определяется как максимальный сильно связный подграф графа G. Поскольку в сильно связном графе произвольная вершина xj достижима из любой другой вершины xi, то в ориентированном графе существует одна и только одна СК, содержащая данную вершину xi. В самом деле, если бы вершина xi, принадлежала двум или большему числу сильных компонент, то существовал бы путь из любой вершины одной СК в произвольную вершину другой СК и, следовательно, объединение этих сильных компо­нент было бы сильно связным графом, что противоречит опре­делению СК.

Если вершина xi, одновременно является начальной и конечной вершиной пути, то множество вершин, существенных относительно этих двух идентичных концов (т.е. множество вершин некоторого цикла, содержащего xi), совпадает с пересечением . Поскольку все эти существенные вершины достижимы из xi и, кроме того, из каждой такой вершины достижима вершина xi, то все они взаимно достижимы. Более того, если нет другой вершины, существенной относительно концов xi и xi, то множество , которое может быть построено с использованием соотношений (4.3) и (4.4), однозначно определяет СК графа G, содержащую вершину xi.

Если эти вершины удалить из графа G=(X,V), то в оставшемся порожденном подграфе можно таким же способом выделить новую СК, содержащую xjÎ . Эту процедуру можно повторять до тех пор, пока все вершины графа G не будут сгруппированы в соответствующие СК. После завершения этой процедуры граф G будет разбит на свои сильные компоненты.

Алгоритм нахождения сильных компонент графа можно описать следующей последовательностью шагов

Шаг 1. G = (X, V) – данный граф. Определение сильных компонент графа (СК) начать с произвольной вершины хiХ. Найти R(xi) и Q(xi). Положить СК(хi) = - сильная компонента графа, содержащая вершину хi.

Шаг 2. Определить множество . Если , то и перейти к шагу 1, иначе останов, так как все сильные компоненты определены.

Граф G*=(X*,V*) определяется так: каждая его вершина представляет множество вершин некоторой сильной компоненты графа G, дуга (xi*, xj*) существует в G* тогда и только тогда, когда в G существует дуга (xi, xj), такая, что xi принадлежит ком­поненте, соответствующей вершине xi*, а xj компоненте, соответствующей вершине xj*. Граф G* называют конденсацией графа G.

Совершенно очевидно, что конденсация G* не содержит контуров, поскольку наличие контура означает, что любые вершины этого контура взаимно достижимы. Поэтому совокупность всех вершин контура принадлежит некоторой СК в G* и, следовательно, содержится в СК графа G, что противоречит определению конденсации, в силу которого вершины из G* соответствуют СК в G.

Пример. Для графа G, приведенного на рис. 4.25, найти сильные ком­поненты и построить конденсацию G*.

Найдем СК в G, содержащую вершину x1.

Из соотношений (4.3) и (4.4) получаем

R(x1) = { x1 , x2 , x4 , x5 , x6 , x7 , x8 , x9 , x10 }

Q(x1) = { x1 , x2 , x3 , x5 , x6 }

Следовательно, СК, содержащая вершину x1, является порожденным подграфом

R(x1) Q(x1) = ({ x1 , x2 , x5 , x6 })

Аналогично, СК, содержащая вершину x8, есть порожденный подграф ({x8, x10}), СК содержащая x7 – подграф ({x4, x7, x9}), СК, содержащая x11, подграф ({x11, x12, x13 }) и СК, содержащая x3, – подграф ({x3}). Следует отметить, что последняя СК со­стоит из единственной вершины графа G. Конденсация G* приведена на рис. 4.26.

Рис. 4.26. G* - конденсация графа G

Процедуру, описанную выше и связанную с нахождением СК графа, можно сделать более удобной, если непосредственно исполь­зовать матрицы R и Q. Пусть запись RÄQ означает поэлементное умножение этих матриц. Тогда сразу видно, что строка xi, матрицы RÄQ содержит единицы только в тех столбцах xj, для которых выполняется усло­вие: вершины xi и xj взаимно достижимы; в других местах строки xi стоят нули. Таким образом, две вершины находятся в одной и той же СК тогда и только тогда, когда соответствующие им стро­ки (или столбцы) в матрице RÄQ идентичны. Вершины, кото­рым соответствуют строки, содержащие 1 в столбце xj, образуют множество вершин СК, содержащей xj. Отсюда мгновенно сле­дует, что матрицу RÄQ можно преобразовать путем транспони­рования строк и столбцов в блочно-диагональную. Каждая из диа­гональных подматриц этой матрицы соответствует СК графа G и содержит только единичные элементы, все остальные элементы блочно-диагональной матрицы равны нулю. Для приведенного ранее примера матрица RÄQ, преобразованная соответствую­щим образом, имеет вид

x1 x2 x5 x6

x8 x10

x4 x7 x9

x11 x12 x13

x3

x1

x2

x5

x6

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

0

0

0

0

x8

R Ä Q =

x10

  1. 1

1 1

0

0

0

x4

x7

x9

0

0

1 1 1

1 1 1

1 1 1

0

0

x11

x12

x13

0

0

0

1 1 1

1 1 1

1 1 1

0

x3

0

0

0

0

1