- •4.1. Основные понятия и определения теории графов
- •4.2. Типы графов
- •4.3. Матричные представления графов
- •4.5. Операции над графами
- •4.6. Метрические характеристики графа. Расстояние в графах
- •Затем, изымая степень, соответствующую вершине , получим
- •4.8. Достижимость и связность
- •4.8.1. Основные определения
- •4.8.2. Матрицы достижимостей
- •4.8.3. Нахождение сильных компонент
- •Алгоритм нахождения сильных компонент графа можно описать следующей последовательностью шагов
- •Таким образом, сильные компоненты графа можно находить по следующему алгоритму.
- •4.8.4. Базы и антибазы
- •4.9. Независимые и доминирующие множества
- •4.9.1. Нахождение всех максимальных независимых множеств
- •Опишем алгоритм нахождения всех максимальных независимых множеств вершин графа.
- •4.10. Покрытия и раскраски
- •4.11. Деревья, остовы и кодеревья
- •4.11.1. Основные определения
- •4.11.2. Алгоритм построения остова неорграфа
- •4.11.4. Обходы графа по глубине и ширине
- •Доказательство.
- •4.11.5. Упорядоченные и бинарные деревья
- •4.12. Эйлеровы циклы. Гамильтонов контур
- •4.12.1. Метод Флёри построения эйлерова цикла
- •Матрица м данного графа имеет вид
- •4.12.3. Алгебраический метод выделения гамильтоновых путей и контуров
- •4.13. Плоские и планарные графы
- •4.13.1. Формула Эйлера
- •4.13.2. Критерии анализа планарности
- •4.13.3. Алгоритм укладки графа на плоскости
- •Задачи и упражнения
- •5. Разрешимые и неразрешимые проблемы
- •Библиографический список
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) = .
Шаг 2. Рассмотреть множество и для произвольной вершины xk найти СК(хi) на . Перейти к шагу 3.
Шаг 3. Если 0, то перейти к шагу 2, иначе останов, так как все сильные компоненты определены.
Граф 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 |
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 |