
- •Тема 7. Теория графов
- •7.1. Основные понятия теория графов
- •7.2. Матричные способы задания графов
- •7.3. Изоморфизм графов
- •7.4. Маршруты и пути
- •7.5. Связность графа
- •7.6. Экстремальные пути в нагруженных ориентированных графах
- •Алгоритм Форда-Беллмана нахождения минимального пути в нагруженном ориентированном графе d из в ( )
- •7.7. Эйлеровы и гамильтоновы графы
- •7.8. Деревья. Основные определения
- •7.9. Минимальные остовные деревья нагруженных графов
- •7.10. Задачи для самостоятельного решения
- •Литература
7.8. Деревья. Основные определения
Неориентированным деревом (или просто деревом) называется связный граф без циклов. Этому определению эквивалентны, следующие определения:
а) дерево есть
связный граф, содержащий
вершин и
ребер;
б) дерево есть граф, любые две вершины которого можно соединить простой цепью.
Пример. Графы, изображенные на рис. 34, являются деревьями.
Рис. 34
Если граф несвязный и не имеет циклов, то каждая его связная компонента будет деревом. Такой граф называется лесом.
Остовным деревом связного графа называется любой его подграф, содержащий все вершины графа и являющийся деревом.
Пример. Для графа, изображенного на рис. 35а), графы на рис. 35б) и 35в) являются остовными деревьями.
Рис. 35
Пусть граф
имеет n
вершин и
ребер. Так как всякое дерево с
вершинами по определению имеет
ребер, то любое остовное дерево графа
получается из этого графа в результате
удаления
ребер. Число
называется цикломатическим
числом
графа.
7.9. Минимальные остовные деревья нагруженных графов
Пусть – связный нагруженный граф. Задача построения минимального остовного дерева заключается в том, чтобы из множества остовных деревьев найти дерево, у которого сумма длин ребер минимальна.
Приведем типичные случаи, когда возникает необходимость построения минимального остовного дерева графа.
а) Нужно соединить городов железнодорожными линиями (автомобильными дорогами, линиями электропередач, сетью трубопроводов и т.д.) так, чтобы суммарная длина линий или стоимость была бы минимальной.
б) Требуется построить схему электрической сети, в которой клеммы должны быть соединены с помощью проводов наименьшей общей длины.
Задачу построения минимального остовного дерева можно решить с помощью следующего алгоритма Краскала.
Алгоритм Краскала.
Шаг 1.
Установка начальных значений. Вводится
матрица длин ребер
графа
.
Шаг 2.
Выбрать в графе
ребро
минимальной длины. Построить граф
,
состоящий из данного ребра и инцидентных
ему вершин. Положить
.
Шаг 3.
Если
,
где
– число
ребер графа, то закончить работу (задача
решена), в противном случае перейти к
шагу 4.
Шаг 4.
Построить граф
,
добавляя к графу
новое ребро
минимальной длины, выбранное среди
всех ребер графа
,
каждое из которых инцидентно какой-нибудь
вершине графа
и одновременно инцидентно какой-нибудь
вершине графа
,
не содержащейся в
.
Вместе с этим
ребром включаем в
и инцидентную
ему вершину, не содержащуюся в
.
Присваиваем
и переходим к шагу 3.
Пример. Найдем минимальное остовное дерево для графа, изображенного на рис. 36.
Рис. 36
Шаг 1. Установка начальных значений. Введем матрицу длин ребер :
С =
.
Шаг 2.
Выберем ребро минимальной длины.
Минимальная длина ребра равна единице.
Таких ребер три:
.
В этом случае можно взять любое. Возьмем
.
Построим граф
,
состоящий из данного ребра и инцидентных
ему вершин
и
.
Положим
.
Шаг 3.
Так как
,
то
,
поэтому переходим к шагу 4.
Шаг 4.
Строим граф
,
добавляя к графу
новое ребро
минимальной длины, выбранное среди всех
ребер графа
,
каждое из которых инцидентно одной из
вершин
,
и одновременно инцидентно какой-нибудь
вершине графа
,
не содержащейся в
т. е. одной из вершин
,
,
.
Таким образом, нужно выбрать ребро
минимальной длины из ребер
.
Таких ребер длины единица два:
и
.
Можно выбрать любое. Возьмем
.
Вместе с этим ребром включаем в
вершину
,
не содержащуюся в
.
Полагаем
и переходим к шагу 3.
Шаг 3. Так как , поэтому переходим к шагу 4.
Шаг 4.
Строим граф
,
добавляя к графу
новое ребро
минимальной длины из ребер
.
Такое ребро длины два одно:
.
Вместе с этим ребром включаем в
вершину
,
не содержащуюся в
.
Полагаем
и переходим к шагу 3.
Шаг 3. Так как , поэтому переходим к шагу 4.
Шаг 4.
Строим граф
,
добавляя к графу
новое ребро
минимальной длины из ребер
.
Таких ребер длины три два:
и
.
Возьмем
.
Вместе с этим ребром включаем в
вершину
,
не содержащуюся в
.
Полагаем
и переходим к шагу 3.
Шаг 3.
Так как
,
то граф
– искомое минимальное остовное дерево.
Суммарная длина ребер равна
.
Процесс построения минимального остовного дерева изображен ниже.