
- •3. Графы
- •3.1. Введение в графы. Задача о кёнигсбергских мостах. Проблема четырёх красок
- •3.2. Графы. Основные понятия
- •Задачи.
- •3.3. Деревья
- •Задачи.
- •3.4. Помеченные графы. Код Прюфера
- •Задачи.
- •3.5. Алгоритм Краскала
- •Задачи.
- •3.6. Метод ветвей и границ
- •3.7. Фундаментальные циклы и разрезы
- •3.8. Линейные пространства, связанные с графами
- •3.9. Матрицы, связанные с графами
- •Задачи.
- •3.10. Планарные графы
- •3.11. Алгоритм плоской укладки графа
3.4. Помеченные графы. Код Прюфера
Определение
1.
Граф
будем называть помеченным, если каждой
вершине присвоена своя метка. Обычно
полагают
.
Два помеченных графа
и
считаются одинаковыми в точности тогда
и только тогда, когда
и
.
Пример
1.
Следующие помеченные графы являются
разными.
А помеченные графы
одинаковы.
Предложение
1.
Число
помеченных
-графов
равно
.
Доказательство.
Существует
неупорядоченных пар вершин, которые
можно соединить ребром. Если нужно
выбрать
рёбер, тоэто можно сделать
способами.
Предложение доказано.
Например,
число помеченных графов с 4-мя вершинами
и 5-ю рёбрами равно
.
Все они изображены в начале этого
параграфа.
Предложение
2.
Число
помеченных графов на
вершинах равно
.
Доказательство.
Множество рёбер каждого помеченного
графа на
вершинах есть некоторое подмножество
в множестве всевозможных рёбер, число
которых, как было сказано выше, равно
.
Число таких подмножеств есть
.
Предложение доказано.
Пример
2.
Число помеченных графов на 3-х вершинах
равно
.
Вот они
Поясним, что помеченное дерево – это помеченный граф, являющийся деревом.
Теорема
(Кэли).
Число
помеченных деревьев на
вершинах равно
.
Доказательство этой теоремы может быть основано на следующем алгоритме, сопоставляющем каждому дереву некоторую последовательность номеров его вершин, которая называется кодом Прюфера этого дерева. Опишем этот алгоритм.
Пусть
имеется помеченное дерево
на
вершинах. Как минимум две его вершины
являются висячими. Пусть
– висячая вершина с наименьшим номером,
а
– соответствующее висячее ребро. Удалив
из дерева
ребро
и вершину
,
получим новое дерево
.
Для
опять найдём висячую вершину
с наименьшим номером. Соответствующее
висячее ребро обозначим
и т.д. Продолжим эту процедуру до тех
пор, пока у нас не останется единственное
ребро
.
Набор
и будет кодом Прюфера дерева
.
Каждый
код Прюфера, т.е. любой набор из
чисел, каждое из которых может принимать
значения от 1 до
,
однозначно соответствует своему дереву.
В этом можно убедиться с помощью следующей
обратной процедуры.
Действительно,
пусть имеется код
.
Запишем последовательность натуральных
чисел от 1 до
:
.
Среди этих чисел находим наименьшее
число, не содержащееся в коде. Пусть это
будет
.
рисуем ребро
.
Число
удаляем из кода, а число
удаляем из набора
.
Далее, в наборе
находим наименьшее число, не содержащееся
в оставшейся части кода
.
Пусть это будет
.
Изображаем ребро
.
Далее, рассматриваем часть кода
и набор
.
Продолжим эту процедуру до тех пор, пока
в наборе
не останутся лишь две вершины
и
.
Соединим их ребром, Мы получили дерево
на
вершинах.
Можно
показать, что указанное соответствие
между помеченными деревьями на
вершинах и всевозможными кодами Прюфера,
состоящими из
чисел, является взаимно однозначным.
Пример 3. Дерево
имеет
код
.
Задачи.
Перенумеруйте вершины дерева и найдите его код Прюфера.
1. |
|
2. |
|
По заданному коду Прюфера восстановите помеченное дерево.
3. .
4. .
3.5. Алгоритм Краскала
На языке помеченных графов формулируются многие виды прикладных задач. В данном и следующем параграфах мы рассмотрим две из них.
Допустим,
нужно построить сеть железных дорог,
которые соединили бы
данных городов так, чтобы из каждого
города можно было бы приехать в любой
другой город. Пусть для каждой пары
городов известна стоимость строительства
дороги между ними. Как построить дерево,
соединяющее эти
городов, чтобы общая стоимость
строительства была минимальной?
Алгоритм решения данной задачи известен под названием алгоритма Краскала.
Определение
1.
Граф
называется взвешенным, если каждому
его ребру
присвоено некоторое действительное
число
,
называемое его весом. Другими словами,
задана функция
.
Если задан подграф
графа
,
то его весом называется
.
Определение
2.
Пусть
имеется связный граф
.
Связный подграф
графа
,
содержащий все вершины графа
и являющийся деревом, называется остовом
графа
.
Связный граф может иметь много остовов.
Таким образом, задача о соединении городов сводится к нахождению остова наименьшего веса.
Теорема.
Пусть
– связный граф на вершинах. Тогда
следующая процедура приводит к решению
задачи о соединении городов:
выберем ребро
, обладающее в
наименьшим весом;
определим по индукции последовательность рёбер
, выбирая на каждом шаге ребро, отличное от предыдущих, не образующее циклов с множеством предыдущих рёбер, и обладающее среди таких ребер наименьшим весом.
Полученный
подграф
графа
,
ребрами которого являются
и есть требуемое дерево.
Доказательство.
Поскольку
без циклов и
,
то
– дерево, что следует из теоремы 1
параграфа 3.2. Покажем, что сумма весом
рёбер дерева
минимальна.
Допустим
противное, т.е. что существует дерево
,
для которого
.
Пусть
– рёбра дерева
,
принадлежащие также и
,
а
– первое ребро из
,
не принадлежащее
.
Подграф графа
,
полученный присоединением ребра
к
даёт единственный цикл
.
Так как
,
то цикл
содержит ребро, не принадлежащее
.
Обозначим его
.
Подграф, полученный из
заменой
на
,
по-прежнему является деревом (как связный
граф, в котором
),
причём
и
и
имеют общие рёбра
.
Продолжая этот процесс, преобразуем
в
.
Но тогда
.
Противоречие.
Теорема доказана.
Пример. Пусть имеется следующая матрица стоимостей строительства дорог
|
1 |
2 |
3 |
4 |
5 |
6 |
1 |
|
13 |
14 |
12 |
15 |
16 |
2 |
|
|
9 |
7 |
5 |
6 |
3 |
|
|
|
8 |
11 |
10 |
4 |
|
|
|
|
1 |
2 |
5 |
|
|
|
|
|
2 |
6 |
|
|
|
|
|
|
Требуется найти остов наименьшего веса.
Сначала
выбираем ребро
наименьшего веса 1. Далее, берём ребро
наименьшего веса 2. Следующим ребром
наименьшего веса является ребро
.
Но оно образует цикл с предыдущими двумя
рёбрами. Поэтому мы его пропускаем и
берём следующее ребро наименьшего веса
.
Далее, рёбра
и
образуют циклы с предыдущими рёбрами.
Мы их пропускаем и берём ребро
.
Рёбра
,
и
мы взять не можем, поэтому следующим
ребром, удовлетворяющим условиям
алгоритма, будет ребро
.
Рёбра
образуют остов наименьшего веса 28.
Соответствующий план дорог изображён
ниже.