- •Иркутский государственный технический университет
- •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. Улучшенный алгоритм последовательного раскрашивания
11.3.4. Эквивалентные формулировки знп
ЗНП может быть сформулирована многими разными способами.
1. Пусть имеется конечное множество V = {«i,..., vp} и семейство подмножеств этого множества Е = {Еь..., Ер}. Каждому подмножеству Ei приписан вес. Найти покрытие Е' (Е' с Е) наименьшего веса.
ЗАМЕЧАНИЕ
Из этой формулировки происходит название «задача о наименьшем покрытии».
Рис 11.1 связь различных задач
2. ЗНП можно сформулировать как задачу линейного программирования:
р min Y^ CiXi
i=l
при ограничениях
где
с. > 0 - J1' если^еЕ",
|0, в противном случае,
1, если Vi е ej,
О, в противном случае.
3. Дана булева матрица Т : array [l..p,l..p] of 0..1. Каждому столбцу приписан вес Cj. Найти такое множество столбцов минимальной стоимости, чтобы любая строка содержала единицу хотя бы в одном из выбранных столбцов.
11.3.5. Связь знп с другими задачами
Известно, что ЗНП относится к числу трудоемких задач, и для ее решения применяются переборные алгоритмы с теми или иными улучшениями. На рис. 11.1 приведена схема (см. [И]), показывающая связь ЗНП и некоторых Других задач. На этой схеме стрелка от задачи А к задаче Б означает, что решение задачи А влечет за собой решение задачи Б.
Комментарии
Обсуждение переборных задач в этой главе носит в основном ознакомительный характер. Для получения более точной и детальной информации следует обратиться к специальной литературе, прежде всего к фундаментальной книге [4]. Алгоритм построения максимальных независимых множеств заимствован из [11]. Здесь этот алгоритм использован прежде всего в качестве примера для иллюстрации способов и особенностей решения переборных задач.
Упражнения
Доказать, что а0 ^ fti,a\ ^ Аз-
Написать алгоритм построения всех клик графа.
Доказать, что наименьшее доминирующее множество является независимым.
Глава 12 Раскраска графов
Задача раскрашивания графов, которая на первый взгляд кажется просто праздной головоломкой, имеет неожиданно широкое применение в программировании, особенно при решении фундаментальных теоретических проблем (см., например, [7]).
12.1. Хроматическое число
Способ явного выражения хроматического числа через другие инварианты графа неизвестен. Известны только некоторые оценки, часть из которых приведена в данном разделе.
Раскраской графа называется такое приписывание цветов (натуральных чисел) его вершинам, что никакие две смежные вершины не получают одинаковый цвет. Наименьшее возможное число цветов в раскраске называется хроматическим числом и обозначается \(G). Очевидно, что существует та-раскраска графа G для любого m в диапазоне \(G) < т ^ р. Множество вершин, покрашенных в один цвет, называется одноцветным классом. Одноцветные классы образуют независимые множества вершин, то есть никакие две вершины в одноцветном классе не смежны.
Пример
Х(КР} = 1, х(Кр)=р, х(Кт,п)=2, = 3, Х(Т) = 2, где Т — свободное дерево.
ТЕОРЕМА X(G) ^ 1 + Д(С).
один цвет в A(G) + 1 раскраске графа G - v свободен для и. Покрасив v в этот цвет, имеем A(G) + 1 раскраску G. n
ТЕОРЕМА
x(G) <р- Po(G] + 1.
доказательство
1. Пусть x(G) = п и V = Vi U • • • UVn, где Vi — одноцветные классы. независимое множество вершин, значит, |Vj| < /?o(G). Имеем:
2. Пусть 5 С V — наибольшее независимое множество, |5| = /3Q(G). Тогда x(G-S) ^ |V — 5| = р - /?o(G). Из n-раскраски G - 5 можно получить (п + 1)-раскраску G, так как все вершины из 5 можно покрасить в один новый цвет. Следовательно,
ТЕОРЕМА Пусть x-=x(G),X- = x(G). Тогда