- •Иркутский государственный технический университет
- •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. Улучшенный алгоритм последовательного раскрашивания
Глава 10 Циклы
После рассмотрения ациклических связных графов, то есть деревьев, естественно перейти к рассмотрению графов с циклами.
10.1. Фундаментальные циклы и разрезы
Первый раздел главы посвящен установлению связи векторных пространств со структурой циклов и разрезов в графе.
10.1.1. Циклы и коциклы
Цикл может входить только в одну компоненту связности графа, поэтому далее без ограничения общности граф считается связным. Цикл (простой) рассматривается как множество ребер.
Разрезом связного графа называется множество ребер, удаление которых делает граф несвязным. Простым разрезом называется минимальный разрез, то есть такой, никакое собственное подмножество которого разрезом не является.
В этом параграфе рассматриваются только простые циклы и разрезы, далее слово «простые» опускается. Между циклами и разрезами существует определенная двойственность, поэтому разрезы иногда называют коциклами.
ЗАМЕЧАНИЕ -
Поскольку рассматриваются только простые циклы и коциклы, они могут считаться имен но множествами, а не последовательностями ребер.
ОТСТУПЛЕНИЕ -
Чем больше в графе циклов, тем труднее его разрезать. В дереве, напротив, каждое ребро само по себе является разрезом.
10.1.2. Независимые множества циклов и коциклов
Рассмотрим операцию 0 сложения по модулю 2 или симметрической разности над множествами ребер:
m! еМ2: = {е (е &Мг&е<£ M2)V(e ф Mi&e б М2)}.
Множество М называется зависимым или линейной комбинацией множеств {Мг}?=1, если
Множество разрезов {5^}"=1 называется независимым, если ни один из разрезов Si не является линейной комбинацией остальных.
Множество разрезов {5^}"=1 называется независимым, если ни один из разрезов Si не является линейной комбинацией остальных.
ЗАМЕЧАНИЕ-
Множество подмножеств ребер данного графа образует векторное пространство над двоичной арифметикой. Действительно, ф — ассоциативная и коммутативная операция. Далее Мф0=0фМ=Ми каждый элемент является своим обратным: М ф М = 0. Таким образом, подмножества ребер образуют абелеву группу относительно симметричной разности. Далее определим операцию умножения вектора на скаляр: ОМ : = 0, 1М : = М. Легко видеть, что аксиомы векторного пространства выполнены. Введенные здесь понятия линейной комбинации, зависимости и независимости являются частными случаями одноименных понятий из разделов 2.5 и 2.7.
10.1.3. Циклический и коциклический ранг
Максимальное независимое множество циклов (или минимальное множество циклов, от которых зависят все остальные) называется фундаментальной системой циклов. Циклы фундаментальной системы называются фундаментальными, а количество циклов в (данной) фундаментальной системе называется циклическим рангом, или цикломатическим числом, графа G и обозначается m(G). Максимальное независимое множество коциклов (разрезов) (или минимальное множество коциклов, от которых зависят все остальные) называется фундаментальной системой коциклов (разрезов). Коциклы (разрезы) фундаментальной системы называются фундаментальными, а количество коциклов в (данной) фундаментальной системе называется коциклическим рангом, или коцикломатическим числом, графа G и обозначается m*(G).
Пусть T(V, ЕТ) - остов графа G(V, Т). Кодеревом T*(V, E$) остова Т называется остовный подграф, такой что Е^ = Е \ ет- (Кодерево не является деревом!) Ребра кодерева называются хордами остова.
ТЕОРЕМА Если G — связный граф, то m(G) =g-
m*(G)=p-l.
доказательство
Рассмотрим некоторый остов Т графа G. По теореме 9.1.2 об основных свойствах деревьев каждая хорда е е Т* остова Т порождает ровно один простой цикл ге. Эти циклы независимы, так как каждый из них содержит свое индивидуальное ребро (хорду е).
Покажем, что любой цикл графа G зависит от {Ze}e^T* • Заметим, что любой элемент фундаментальной системы зависит от фундаментальной системы, поэтому далее элементы фундаментальной системы не рассматриваем, то есть Z ^ Ze.
Пусть теперь некоторый цикл Z содержит ребра ег,... ,ek е Т*. Такие ребра в Z обязательно есть, в противном случае Z с Т, что невозможно, так как Т — дерево. Докажем индукцией по k, что Z = Zei ф • • • ф Zek.
База: пусть k = I, тогда ei £ Т, Z\{ei} с Т и Z = Zei, так как если бы Z ф Zei, то концы е\ были бы соединены в Т двумя цепями, что невозможно по теореме 9.1.2.
Пусть (индукционное предположение) Z = Zei ф • • • ® ZErn для всех циклов Z с числом хорд т < k. Рассмотрим цикл Z с k хордами е\,... ,ek 6 Т*. Рассмотрим Zek. Имеем Z': =(Z\{ek})(J(ZEk\{ek}) — тоже цикл (возможно, не простой). Но Z' содержит только k - 1 хорду ei,..., ek-i. По индукционному предположению Z1 = Zei Ф • • • ®-Z£k_J. Добавим к этому циклу Zek. Имеем:
.Z' © Zek = (Z\{ek}) U ((Zek\{ek}) ® ZeJ = (Z\{ek}) U {ek} = Z.
Таким образом, {Ze}e&T' является фундаментальной системой циклов. Поскольку все фундаментальные системы содержат одинаковое количество элементов (как базисы векторного пространства), достаточно ограничиться рассмотрением любой, например, той, которая определяется остовом Т. Пусть теперь е 6 Т. Определим разрез Se следующим образом. Ребро е — мост в дереве Т. Следовательно, удаление ребра е разбивает множество вершин V на два подмножества Vi и V2, так что Vl CV, V2C V, Vl U V2 = V, Vi П V2 = 0. Включим в разрез Se ребро е и все ребра графа G, которые соединяют вершины множества Vi с вершинами множества V2. Тогда Se — это разрез, потому что правильные подграфы, определяемые Vi и V2, являются компонентами связности G — Se. Разрез Se — простой, потому что, если есть ребро, соединяющее Vi и V2, то граф связен.
Аналогично можно показать, что {8е}еет является фундаментальной системой разрезов. Действительно, любой разрез 5 содержит хотя бы одно ребро из Т, так как Т — связный остовной подграф. Разрезы {Зе}е&т независимы, так как каждый содержит уникальное ребро е. Любой разрез 5 зависит от {Se}eeT> S = 0 Se. Далее имеем m*(G) = \{Se}e&T\ = \ЕТ\ = р-1и
m(G) = \{Se}eeT-\ =