
- •Иркутский государственный технический университет
- •1. Определения графов
- •7.4.5. Массив дуг
- •8.4.2. Трансверсаль
- •8.5.4. Алгоритм нахождения максимального потока
- •8.6.3. Выделение компонент сильной связности
- •8.7.1. Длина дуг
- •8.7.2. Алгоритм Флойда
- •8.7.3. Алгоритм Дейкстры
- •Глава 9 Деревья
- •9.1. Свободные деревья
- •9.1.1. Определения
- •9.1 .2. Основные свойства деревьев
- •9.2. Ориентированные, упорядоченные и бинарные деревья
- •9.2.1. Ориентированные деревья
- •9.2.2. Эквивалентное определение ордерева
- •9.2.3. Упорядоченные деревья
- •9.2.4. Бинарные деревья
- •9.3. Представление деревьев в эвм
- •9.3.1. Представление свободных, ориентированных и упорядоченных деревьев
- •9.3.2. Представление бинарных деревьев
- •9.3.3. Обходы бинарных деревьев
- •9.3.4. Алгоритм симметричного обхода бинарного дерева
- •9.4. Деревья сортировки
- •9.4.1. Ассоциативная память
- •9.4.2. Способы реализации ассоциативной памяти
- •9.4.3. Алгоритм бинарного (двоичного) поиска
- •9.4.4. Алгоритм поиска в дереве сортировки
- •9.4.5. Алгоритм вставки в дерево сортировки
- •9.4.6. Алгоритм удаления из дерева сортировки
- •9.4.7. Вспомогательные алгоритмы для дерева сортировки
- •9.4.8. Сравнение представлений ассоциативной памяти
- •9.4.9. Выровненные деревья
- •9.4.10. Сбалансированные деревья
- •9.5. Кратчайший остов
- •9.5.1. Определения
- •9.5.2. Схема алгоритма построения кратчайшего остова
- •9.5.3. Алгоритм Краскала
- •Глава 10 Циклы
- •10.1. Фундаментальные циклы и разрезы
- •10.1.1. Циклы и коциклы
- •10.1.2. Независимые множества циклов и коциклов
- •10.1.3. Циклический и коциклический ранг
- •10.2. Эйлеровы циклы
- •10.2.1. Эйлеровы графы
- •10.2.2. Алгоритм построения эйлерова цикла в эйлеровом графе
- •10.2.3. Оценка числа эйлеровых графов
- •10.3. Гамильтоновы циклы
- •10.3.1. Гамильтоновы графы
- •10.3.2. Задача коммивояжера
- •Глава 11 Независимость и покрытия
- •11.1. Независимые и покрывающие множества
- •11.1.1. Покрывающие множества вершин и ребер
- •11.1.2. Независимые множества вершин и ребер
- •11.1.3. Связь чисел независимости и покрытий
- •11.2. Построение независимых множеств вершин
- •11.2.1. Постановка задачи отыскания наибольшего независимого множества вершин
- •11.2.2. Поиск с возвратами
- •11.2.3. Улучшенный перебор
- •11.2.4. Алгоритм построения максимальных независимых множеств вершин
- •11.3. Доминирующие множества
- •11.3.1. Определения
- •11.3.2. Доминирование и независимость
- •11.3.3. Задача о наименьшем покрытии
- •11.3.4. Эквивалентные формулировки знп
- •11.3.5. Связь знп с другими задачами
- •Глава 12 Раскраска графов
- •12.1. Хроматическое число
- •Ух, . . . ,Vn одноцветные классы,доказательство
- •12.2. Планарность
- •12.2.2. Эйлерова характеристика
- •12.2.3. Теорема о пяти красках
- •12.3. Алгоритмы раскрашивания
- •12.3.1. Точный алгоритм раскрашивания
- •12.3.2. Приближенный алгоритм последовательного раскрашивания
- •12.3.3. Улучшенный алгоритм последовательного раскрашивания
Глава 9 Деревья
Деревья заслуживают отдельного и подробного рассмотрения по двум причинам.
Деревья являются в некотором смысле простейшим классом графов. Для них выполняются многие свойства, которые не всегда выполняются для графов в общем случае. Применительно к деревьям многие доказательства и рассуждения оказываются намного проще. Выдвигая какие-то гипотезы при решении задач теории графов, целесообразно сначала их проверять на деревьях.
Деревья являются самым распространенным классом графов, применяемых в программировании, причем в самых разных ситуациях. Более половины объема этой главы посвящено рассмотрению конкретных применений деревьев в программировании.
9.1. Свободные деревья
Изучение деревьев целесообразно начать с самых общих определений и установления основных свойств.
9.1.1. Определения
Граф без циклов называется ациклическим, или лесом. Связный ациклический граф называется (свободным) деревом. Таким образом, компонентами связности леса являются деревья.
ЗАМЕЧАНИЕ
Прилагательное «свободное» употребляется в том случае, когда нужно подчеркнуть отличие деревьев от других объектов, родственных деревьям: ориентированных деревьев, упорядоченных деревьев и т. д.
В связном графе G выполняется неравенство q(G) p(G) — 1. Граф G, в котором q(G)=p(G)-1, называется древовидным.
В ациклическом графе G z(G) = 0. Пусть u, v — несмежные вершины графа G, х = (u, v) Е. Если граф G + х имеет только один простой цикл, z(G + х) = 1, то граф G называется субциклическим.
Пример
На рис. 9.1 показаны диаграммы всех различных (свободных) деревьев с 5 вершинами, а на рис. 9.2 — диаграммы всех различных (свободных) деревьев с 6 вершинами
Рис. 9.1. Свободные деревья с 5 вершинами
Рис. 9.2. Свободные деревья с 6 вершинами
9.1 .2. Основные свойства деревьев
Следующая теорема устанавливает, что два из четырех свойств — связность, ацикличность, древовидность и субцикличность — характеризуют граф как дерево.
ТЕОРЕМА Пусть G(V, Е) — граф с р вершинами, q ребрами, k компонентами связности и z простыми циклами. Пусть далее х — ребро, соединяющее любую пару несмежных вершин в G. Тогда следующие утверждения эквивалентны:
1. G — дерево, то есть связный граф без циклов, k(G)=1&z(G)=0;
2.
любые
две вершины соединены в G единственной
простой цепью, u,
v
! ;
3. G — связный граф, и любое ребро есть мост, k(G) = l&eЕ k(G – е) > 1;.
4. G — связный и древовидный, k(G) = l&q(G)=p(G)-l;
5. G — ациклический и древовидный, z(G) = 0&q(G)=p(G)-l;
6. G — ациклический и субциклический, z(G) =0&z(G + x) = 1;
7. G — связный, субциклический и неполный, k(G) = l&GKp&p3&z(G + x) = 1;
8. G — древовидный и субциклический (за двумя исключениями),
q(G)=p(G)-l&GK1K3&GK2K3&z(G + x) = l.
доказательство
[1
2.] От противного. Пусть существуют две
цепи
(рис. 9.3 слева). Тогда
w1, w2 — простой цикл.
Рис. 9.3. К доказательству теоремы о свойствах деревьев
[2
3.] Имеем: u,v
!
,
следовательно, k(G) = 1. Далее от противного.
Пусть ребро х — не мост. Тогда в G - х концы этого ребра связаны цепью. Само ребро х — вторая цепь.
[3 4.] Индукция по p. База: р=1 q = 0. Пусть q(G) = p(G) —1 для всех графов G с числом вершин меньше р, у которых любое ребро суть мост. Тогда удалим из G ребро х (которое является мостом). Получим две компоненты G' и G", удовлетворяющие индукционному предположению. Имеем:
q' = р' - 1, q" = р" - 1, q = q' + q" + 1 = р' - 1 + р" - 1 + 1 = р - 1.
[4 5.] От противного. Пусть есть цикл с n вершинами и n ребрами. Остальные р - n вершин имеют инцидентные им ребра, которые связывают их с циклом. Следовательно, q р, что противоречит условию q = р - 1.
[51.] Граф без циклов, следовательно, его компоненты — деревья. Пусть их k.
Имеем:
Ho q = p - 1, следовательно, k = 1.
[56.]
По ранее доказанному 5
1
2. Имеем: u,v
!
.
Соединив две
несмежные вершины, получим единственный
простой цикл.
[67.] При р 3 граф Кр содержит цикл, следовательно, G Кр. Далее от противного. Пусть G несвязен, тогда при соединении ребром двух компонент связности цикл не возникнет.
[72.]
Имеем k(G) = 1, следовательно, u,v
.
Пусть цепь не единственная.
Тогда существует цикл Z, причем Z = К3
= C3.
Действительно, пусть
Z > Сз, тогда, соединив две несмежные
вершины этого цикла, получим
два цикла. Но G связен и G
K3,
следовательно, существует
другая вершина w, смежная с Z = К3
(см. рис. 9.3 справа). Если w
смежна с более чем одной вершиной Z, то
имеем больше одного цикла. Если
w смежна только с одной вершиной Z, то
соединив ее с другой вершиной,
получим два цикла.
[78.] Имеем k(G) = 1, следовательно, G К2 K3, G K1 K3. Имеем по доказанному: 723 4, то есть q = р — 1.
[85.]
От противного. Пусть в G есть цикл Z = Сn.
Если n > 3, то если внутри Z
уже есть смежные вершины, имеем два
цикла. Если в Z нет смежных вершин, то,
соединив несмежные вершины в Z, получим
два цикла. Следовательно, Z = К3.
Этот цикл Z является компонентой связности
G. Действительно,
пусть это не так. Тогда существует
вершина w, смежная с
Z. Если w смежна более чем с одной вершиной
Z, то имеем больше одного
цикла. Если w смежна только с одной
вершиной Z, то, соединив
ее с другой вершиной, получим два цикла.
Рассмотрим G': = G — Z. Имеем:
р = р' + 3, q = q' + 3. Но q = р — 1, следовательно,
q' = р' — 1. Отсюда
z(G') = 0, так как один цикл уже есть.
Следовательно, компоненты G' — деревья.
Пусть их fc. Имеем:
но q' = p' - 1, следовательно, k = 1, то есть дерево одно. Если в этом дереве соединить несмежные вершины, то получим второй цикл. Два исключения: деревья, которые не имеют несмежных вершин, — это К1 и К2.
Общая схема доказательства представлена на рис. 9.4. Граф доказательства сильно связен, следовательно, теорема доказана.
Рис. 9.4. Схема доказательства теоремы о свойствах деревьев
СЛЕДСТВИЕ В любом нетривиальном дереве имеются по крайней мере две висячие вершины.
доказательство
Рассмотрим дерево G(V,E). Дерево — связный граф, следовательно, viV d(vi)1.
Далее
от противного. Пусть i
l..p — l d(vi)
> 1. Тогда .
Но q = р — 1, то есть 2q = 2р - 2. Имеем противоречие: 2р - 2 > 2р - 1.