- •Введение
- •1 Множества
- •1.1 Способы определения множеств
- •1.2 Операции над множествами
- •1.3 Диаграммы Эйлера-Венна
- •1.4 Основные законы и тождества алгебры множеств
- •1.5 Доказательства тождественности формул
- •1.6 Соответствия и их свойства
- •1.7 Функция, функционал, оператор
- •1.8 Отображения, преобразования и перестановки
- •1.9 Отношения
- •2.1 Вершины, ребра (дуги), графы
- •Подграфы и части графа
- •Гомоморфизм и изоморфизм графов. Пусть имеем граф g (V, e) (рис. 2.10). И пусть имеется отображение: : V V, при котором
- •2.2 Матричная форма представления графов
- •2.3 Операции над графами
- •Произведение графов
- •Композиция графов
- •Метрические характеристики графа
- •Есть ли в графе маршруты длины k? Для того, чтобы это определить составим матрицу смежности графа а. Далее необходимо возвести а в степень k, используя бинарные операции, ,:
- •2.5 Кратчайший маршрут во взвешенном связном графе
- •Волновой алгоритм
- •2.6 Обходы графа
- •2.7 Гамильтоновы и эйлеровы графы
- •2.8 Эйлеровы графы
- •Алгоритм построения эйлерова цикла
- •Алгоритм построения эйлеровой цепи
- •Модифицированный алгоритм построения эйлерова цикла
- •Покрытие графа непересекающимися по ребрам цепями
- •2.9 Внешне устойчивые множества вершин графа
- •Алгоритм определения внешне устойчивых множеств вершин
- •2.10 Раскраска вершин графа
- •Реберная раскраска графа
- •2.11 Связность графов
- •Определение компонент сильной связности орграфа
- •Алгоритм определения компонент сильной связности орграфа:
- •2.12 Определение компонент связности
- •2.13 Остов графа
- •2.14 Планарные графы
- •2.15 Двудольные графы
- •Минимальное покрытие двудольного графа.
- •Условие существования паросочетания.
- •Дискретная математика
- •Московский государственный университет приборостроения и информатики
- •107996, Москва, ул. Стромынка, 20
Алгоритм определения компонент сильной связности орграфа:
Удалить из графа вершины источники, тупиковые и изолированные вершины, зафиксировав их как отдельные сильные компоненты.
Выбрать некоторую вершину xi.
Определить для xi
.Выполнить операцию пересечения и зафиксировать множество вершин, вошедших в
.Удалить из графа вершины, принадлежащие и инцидентные им дуги. Если получен подграф G’, то перейти к п. 2. Если граф пуст, то перейти к п. 6.
Сформировать множество классов C.
Для определения получим степени строки xi матрицы смежности A, а для определения степени столбца xi . Максимальный показатель степени n–1, так как учитываются только кратчайшие маршруты. Затем объединим полученные строки (степени строки xi) со строкой, имеющей единственную 1 в позиции вершины xi, а полученные столбцы (степени столбца xi) объединим со столбцом, имеющим единственную 1 в позиции вершины xi.
определяется как множество вершин, имеющих 1 в полученной матрице строке. определяется как множество вершин, имеющих 1 в полученной матрице столбце.
2.12 Определение компонент связности
Если для любой вершины xi выполняется условие
,
то граф сильно связен.
Поскольку связный неорграф всегда сильно связен, то полученный алгоритм определения компонент сильной связности пригоден и для определения компонент связности неорграфов: Каждая компонента неорграфа сильно связана, а между компонентами связи нет.
Связность орграфа проверяется удалением ориентации дуг и установлением связности полученного неорграфа.
Дан граф рис. 2.34, для которого имеем
A
=
.
Р
исунок
2.34
В графе изолированных вершин нет, поэтому исключать ничего не надо.
Выберем вершину 1.
В
графе 6 вершин, поэтому для определения
и
нужно
возводить первую строку и первый столбец
матрицы смежности в степени с первой
по пятую.Возводим в степень первую
строку матрицы A
(сложение и умножение элементов булевские)
Первая строка матрицы смежности
=
.
Вторая степень первой строки матрицы смежности:
=
*
=
.
Третья степень первой строки матрицы смежности:
=
*
=
.
При возведении в третью степень получено повторение строки, возводимой в степень, поэтому операцию возведения в степень прекращаем.
Если продолжить возведение в степень, то результат будет повторяться.
Найдем .
= {1} =
=
=
.
В других обозначениях
= {1, 3, 5}.
Определим .
=
.
=
*
=
.
=
*
=
.
Результат совпадает с начальным значением, следовательно, возведение в степень надо прекратить.
Найдем
=
{1}
=
=
.
В других обозначениях
= {1, 3, 5}.
=
{1, 3, 5}
{1,
3, 5} = {1, 3, 5}.
Вершины 1, 3, 5 принадлежат отдельной компоненте связности, поэтому на дальнейший процесс поиска других компонент связности влиять не будут. для уменьшения объема вычислений эти вершины, вместе с инцидентными им ребрами, можно исключить. Рассматриваемый пример достаточно простой, поэтому исключать ничего не будем.
Возьмем
вершину, не принадлежащую
,
например, 4.
Действуя аналогично, находим
=
.
=
*
=
.
=
*
=
.
Получено повторение строки, возводимой в степень, поэтому операцию возведения прекращаем.
Найдем
.
= {4} =
=
=
.
В других обозначениях
= {2, 4, 6}.
Определим
.
=
.
=
*
=
.
=
*
=
.
Результат совпадает с начальным значением, следовательно, возведение в степень надо прекратить.
Найдем
=
{4}
=
=
.
В других обозначениях
= {2, 4, 6}.
=
{2, 4, 6}
{2,
4, 6} = {2, 4, 6}.
Таким образом, все вершины графа вошли в два класса – в две компоненты связности C1 = {1, 3, 5} и C4 = {2, 4, 6}.
