
- •Иркутский государственный технический университет
- •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. Улучшенный алгоритм последовательного раскрашивания
12.2.3. Теорема о пяти красках
ТЕОРЕМА Всякий планарный граф можно раскрасить пятью красками.
доказательство
Достаточно рассматривать связные графы, потому что
Индукция по р. База: если р ^ 5, то х ^ Р ^ 5. Пусть теорема верна для всех связных планарных графов с р вершинами. Рассмотрим граф G с р+ 1 вершиной. По третьему следствию к формуле Эйлера 3 v e V d(v) < 5. По индукционному предположению x(G — v) ^ 5. Нужно раскрасить вершину v.
Если d(v) < 5, то в 5-раскраске G - v существует цвет, свободный для v.
Если d(v) = 5 и для Г+(г>) использованы не все пять цветов, то в 5-раскраске G — v существует цвет, свободный для v.
Остался случай, когда d(v) = 5 и все пять цветов использоданы (вершина vt покрашена в цвет г, рис. 12.2). Пусть Gi3 — правильный подграф G - v, по рожденный всеми вершинами, покрашенными в цвета 1 или 3 в 5-раскраске графа G — v. Если vi и уз принадлежат разным компонентам связности гра фа gis, то в той компоненте, и которой находится v\, произведем перекраску1 «-»• 3. При этом получится 5-раскраска G - v, но цвет 1 будет свободен для v. В противном случае существует простая цепь, соединяющая vi и v3 и состоя щая из вершин, покрашенных в цвета 1 и 3. В этом случае щ и v4 принадлежат разным компонентам связности подграфа G24 (так как граф G — планарный). Перекрасим вершины 2 -и- 4 в той компоненте связности графа G24, которой принадлежит v2, и получим 5-раскраску графа G-v, в которой цвет 2 свободен для v.
Рис. 12.2. Иллюстрация к доказательству теоремы о пяти красках
12.3. Алгоритмы раскрашивания
В этом разделе на примере алгоритмов раскрашивания графов вводится понятие приближенного алгоритма в более широком смысле по сравнению с тем, который обычно подразумевается в вычислительной математике и при проведении численных расчетов на ЭВМ.
12.3.1. Точный алгоритм раскрашивания
Рассмотрим следующую схему рекурсивной процедуры Р:
Выбрать в графе G некоторое максимальное независимое множество вершин S.
Покрасить вершины множества S в очередной цвет.
Применить процедуру Р к графу G - S.
Вход: граф G(V, E), номер свободного цвета г.
Выход: раскраска, заданная массивом C[V], - номера цветов, приписанные вершинам.
if V = 0 then
return { раскраска закончена }
end if
S: = Selectmax(G) {S — максимальное независимое множество }
C[S]: = г { раскрашиваем вершины множества S в цвет г }
P(G — S, г + 1) { рекурсивный вызов }
ЗАМЕЧАНИЕ
Функция Selectmax может быть реализована, например, алгоритмом 11.2.4.
ТЕОРЕМА Если граф G k-раскрашиваемый, то существует такая последовательность выборов множества S на шаге 1 процедуры Р, что применение процедуры Р к графу G построит не более чем k-раскраску графа G.
доказательство
Пусть имеется некоторая fc-раскраска графа G(V,E). Перестроим ее в не более чем /с-раскраску, которая может быть получена процедурой Р. Пусть Vi с V • множество вершин в данной fc-раскраске, покрашенных в цвет 1. Множество Vj - независимое, но, может быть, не максимальное. Рассмотрим множество VJ/, та кое что Vi U V\ — максимальное независимое множество (может оказаться, что V\ = 0). Вершины из V/ не смежны с Уь значит, вершины из У/ можно перекра сить в цвет 1. Пусть далее У2 С V"\(V"i U Vi') — множество вершин, покрашенных в цвет 2. Аналогично рассмотрим множество У2', такое что V2 U У2' — максималь ное независимое в G\(ViUVi')i покрасим вершины Vjj'U.Vj' в цвет 2 и т. д. Всего в исходной раскраске было k независимых множеств. При перекраске их число не возрастет (но может уменьшиться, если x(G) < k). На каждом шаге алгоритма рассматривается одно из множеств, следовательно, процесс закончится. D