Федоров В.Н. - Введение в теорию графов, страница 8
Описание файла
Документ из архива "Федоров В.Н. - Введение в теорию графов", который расположен в категории "". Всё это находится в предмете "дискретная математика" из 4 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "дискретная математика" в общих файлах.
Онлайн просмотр документа "Федоров В.Н. - Введение в теорию графов"
Текст 8 страницы из документа "Федоров В.Н. - Введение в теорию графов"
где – множество вершин графа, достижимых из xi за один шаг,
– множество вершин графа, достижимых из xi за два шага и т. д.
– это не что иное, как объединение вершины xi со множеством ее потомков.
Определим обратное транзитивное замыкание в графе для вершины xi
где – множество вершин графа, из которых xi достижима за один шаг,
– множество вершин графа, из которых xi достижима за два шага и т.д.
– это не что иное, как объединение вершины xi со множеством ее предков.
Если в компонентах сильной связности графа G объединить маршруты (xi, xj) и (xj, xi), то образуются циклы, характерной особенностью которых является то, что в них каждая вершина для себя и потомок и предок.
Поэтому для компонент сильной связности справедливо
где Cxi – класс эквивалентности.
Вершины источники не имеют предков, тупиковые вершины не имеют потомков, а изолированные вершины не имеют ни предков, ни потомков, поэтому каждая из таких вершин образует свой класс сильной связности (и их можно исключить из дальнейшего рассмотрения в момент предварительного анализа графа).
Формальными признаками наличия таких вершин являются:
-
для источников – отсутствие 1 в столбце матрицы смежности,
-
для тупиковых вершин – отсутствие 1 в строке матрицы смежности,
-
для изолированных вершин – отсутствие 1 как в строке, так и в столбце матрицы смежности.
После исключения вершин источников и тупиковых вершин в графе снова могут образоваться вершины таких же типов, с ними следует поступить аналогично.
На основании вышеизложенного можно составить такой алгоритм определения компонент сильной связности орграфа.
Алгоритм определения компонент сильной связности орграфа
-
Удалить из графа вершины источники, тупиковые и изолированные вершины, зафиксировав их как отдельные сильные компоненты.
-
Выбрать некоторую вершину xi.
-
Выполнить операцию пересечения
и зафиксировать множество вершин, вошедших в
.
-
Удалить из графа вершины, принадлежащие
и инцидентные им дуги. Если получен подграф G’, то перейти к п. 2. Если граф пуст, то перейти к п. 6.
-
Сформировать множество классов C.
Для определения получим степени строки xi матрицы смежности A, а для определения
степени столбца xi . Максимальный показатель степени n–1, так как учитываются только кратчайшие маршруты. Затем объединим полученные строки (степени строки xi) со строкой, имеющей единственную 1 в позиции вершины xi, а полученные столбцы (степени столбца xi) объединим со столбцом, имеющим единственную 1 в позиции вершины xi.
определяется как множество вершин, имеющих 1 в полученной матрице строке.
определяется как множество вершин, имеющих 1 в полученной матрице столбце.
Пример. Дан граф рис. 9.1.
Найти компоненты сильной связности графа.
Анализируя граф, находим, что вершина 5 тупиковая. Удалив ее, обнаруживаем, что появилась новая тупиковая вершина 4.
После удаления вершины 4 получаем граф на трех вершинах, для которого матрица смежности равна
Выберем вершину 1.
Для этой вершины Г1 = – первая строка матрицы смежности.
Для получения возводим строку вершины 1 матрицы A во вторую степень, т.е. умножаем строку вершины 1 на матрицу A
Поскольку после удаления вершин 4 и 5 в графе осталось только три вершины, то вторая степень – это предел.
Объединим Г1, со строкой
, представляющей вершину 1.
Получаем
В другом представлении = {1, 2, 3}.
В другом представлении = {1, 2, 3}.
Таким образом
Следовательно,
= {1, 2, 3}
{1, 2, 3} = {1, 2, 3}.
Так как ранее были исключены тупиковые вершины 5 и 4, каждая из которых образует свой класс сильной связности, то все классы сильной связности будут такими {1, 2, 3}, {4}, {5}.
9.2. Определение компонент связности
Если для любой вершины xi выполняется условие
то граф сильно связен.
Поскольку связный неорграф всегда сильно связен, то полученный алгоритм определения компонент сильной связности пригоден и для определения компонент связности неорграфов: Каждая компонента неорграфа сильно связана, а между компонентами связи нет.
Связность орграфа проверяется удалением ориентации дуг и установлением связности полученного неорграфа.
Пример. Дан граф рис. 9.2, для которого имеем
В
графе изолированных вершин нет, поэтому исключать ничего не надо.
Выберем вершину 1.
В графе 6 вершин, поэтому для определения и
нужно возводить первую строку и первый столбец матрицы смежности в степени с первой по пятую.
Возводим в степень первую строку матрицы A (сложение и умножение элементов булевские)
Первая строка матрицы смежности
Вторая степень первой строки матрицы смежности
Третья степень первой строки матрицы смежности
При возведении в третью степень получено повторение строки, возводимой в степень, поэтому операцию возведения в степень прекращаем.
Если продолжить возведение в степень, то результат будет повторяться.
В других обозначениях
Результат совпадает с начальным значением, следовательно, возведение в степень надо прекратить.
В других обозначениях
= {1, 3, 5}
{1, 3, 5} = {1, 3, 5}.
Вершины 1, 3, 5 принадлежат отдельной компоненте связности, поэтому на дальнейший процесс поиска других компонент связности влиять не будут. для уменьшения объема вычислений эти вершины, вместе с инцидентными им ребрами, можно исключить. Рассматриваемый пример достаточно простой, поэтому исключать ничего не будем.
Возьмем вершину, не принадлежащую , например, 4.
Действуя аналогично, находим
Получено повторение строки, возводимой в степень, поэтому операцию возведения прекращаем.
В других обозначениях
Результат совпадает с начальным значением, следовательно, возведение в степень надо прекратить.
В других обозначениях
= {2, 4, 6}
{2, 4, 6} = {2, 4, 6}.
Таким образом, все вершины графа вошли в два класса – в две компоненты связности C1 = {1, 3, 5} и C4 = {2, 4, 6}.
9.3. Контрольные вопросы
-
Поясните понятия сильная связность, слабая связность, просто связность? (Для подготовки ответа см. также раздел 1.)
-
Чем отличается компонента связности от компоненты сильной связности?
-
Приведите алгоритм определения компонент сильной связности орграфа.
-
Почему при определении компонент сильной связности орграфа еще на этапе анализа можно исключить изолированные, тупиковые вершины и вершины источники?
-
Почему алгоритм определения компонент сильной связности орграфа можно применить для нахождения компонент связности неорграфа?
-
Как можно определить компоненты связности орграфа?
10. Фундаментальные циклы и разрезы графа
10.1. Остов графа
Остов – минимальное множество ребер, которые связывают все вершины связного графа.
Остов это дерево.
Часть G' графа G называется остовом (каркасом, скелетом), если V’ = V и все они связаны без циклов. Остов обычно обозначают буквой T.
Для орграфов остов – часть G, которая является остовом в неорграфе, полученном из G удалением ориентации дуг.
Остов получается из графа разрушением циклов. Число удаляемых при этом ребер: (G) = m – n + 1 – называется цикломатическим числом или цикломатическим рангом графа (или просто рангом графа).
Если граф состоит из нескольких компонент, то его остов лес, а число удаляемых при определении остова ребер будет равно
где ρ – количество компонент связности графа.
Количеств ребер в остове графа
называется коциклическим рангом.
(У связного графа *(G) = n – 1.)
Для дерева цикломатическое число равно 0.
10.2. Нахождение остова минимальной длины
Имеется связный граф G(V, E).
-
Строим начальный остов Ti , который состоит из всех вершин и одного ребра с минимальным весом.
-
Имеем Ti, среди всех ребер находим ребро с минимальным весом такое, которое смежно с одним из ребер из Ti и которое не образует циклов. Добавляем его к Ti .
-
Повторяем п. 2, пока находятся нужные ребра.
10.3. Фундаментальные циклы
Фундаментальным циклом графа G(V,E) с остовным деревом T(V,E') называется простой цикл, получаемый в результате добавления к T одного из ребер G, не принадлежащего E'. Количество фундаментальных циклов графа G = (V,E) при любом остовном дереве T равно цикломатическому числу (G).
Пусть G(V, E) связный неорграф с n вершинами и m ребрами, T – остов графа, имеющий n – 1 ребро, которые называются ветвями T (ведь остов – это дерево) и обозначаются bj.
Не входящие в остов (G) = m – n + 1 ребер называются хордами и обозначаются hi.