Дискретная математика

Раздел 1. Математическая логика

Тема 1. Логика высказываний

Тема 2. Булевы функции

Тема 3. Логика предикатов

Тема 4. Метод резолюций

Раздел 2. Теория графов

Тема 5. Раскраски

При решении практических задач с применением графов возникает необходимость в разбиении множества вершин графа на классы попарно несмежных между вершин. Довольно часто дополнительно требуется, чтобы таких классов было наименьшее число. В теории графов подобные задачи формулируются в терминах раскраски вершин графа.

В теме рассматриваются только обыкновенные графы.

§1. Хроматическое число

Определение. Пусть G=(V,E) – обыкновенный граф и k – натуральное число. Функция f: V®{1,…,k} называется раскраской графа. Раскраска называется правильной, если для любых смежных вершин x,yÎV справедливо неравенство f(x) ¹ f(y). Число k – число красок раскраски f.

Мы, как правило, будем представлять себе, что мы раскрашиваем вершины некоторым набором красок (в количестве k штук). Правильность раскраски означает, что смежные вершины раскрашиваются в разные цвета.


Определение. Наименьшее число красок, необходимое для правильной раскраски графа G называется хроматическим числом графа G. Правильную раскраску таким числом красок будем называть оптимальной.

Хроматическое число обозначается через c(G). Рассмотрим примеры графов, изображенных на рис.5.1.


Рис. 5.1


Оба графа содержат трехэлементный полный подграф К3, поэтому для правильной раскраски необходимо, по крайней мере, три краски. Для графа G1 этого достаточно (см. рис. 5.1). Граф G2 имеет цикл длины 5. Нетрудно понять, что для правильной раскраски вершин цикла необходимо три краски. Но центральная вершина графа G2 смежна со всеми вершинами цикла, поэтому для правильной раскраски графа понадобится четвертая краска (см. рис. 5.1). Итак, c(G1)=3 и c(G2)=4.

Очевидно, что если компоненты связности графа G правильно раскрасить k красками, то и сам граф окажется правильно раскрашенным этими красками. Отсюда следует, что если G1,G2,…,Gc – (все) компоненты связности графа G, то

c(G)=max{c(G1),c(G2),…,c(Gc)}.


Оказывается, что аналогичное утверждение справедливо и для компонент двусвязности.


Теорема 5.1. Пусть любой блок графа G можно правильно раскрасить k красками. Тогда и сам граф G можно правильно раскрасить k красками.


Доказательство проведем индукцией по числу блоков. Можно считать, что G – связный граф.

Если граф содержит один блок, то утверждение теоремы, очевидно, справедливо. Предположим, что теорема справедлива для любых графов, имеющих не более k блоков. Пусть граф G имеет k+1 блок. Зафиксируем один из концевых блоков графа G. Этот блок обозначим через В, а объединение остальных блоков – через В' . Графы В и В’ имеют точно одну общую вершину а (которая является точкой сочленения графа G). По предположению индукции графы В и В’ можно правильно раскрасить k красками. Если вершина а в обоих графах В и В’ окрашена одинаково, то в результате получаем правильную раскраску графа G. Если вершина а в графах В и В’ окрашена по-разному, то очевидным образом перекрашиваем граф В так, чтобы новая краска вершины а совпадала с краской этой вершины в графе В’.


Приведем примеры задач, которые сводятся к нахождению хроматического числа и соответствующей оптимальной раскраски.


Задача составления расписаний. Предположим, что в учебном центре надо провести несколько занятий за кратчайшее время. Длительность всех занятий одинакова, скажем, один час. Некоторые занятия не могут проводиться одновременно, например, это занятия в одной и той же учебной группе (по разным предметам), или занятия проводит один и тот же преподаватель. Для решения задачи построим граф G, вершинам которого биективно соответствуют занятия. Две вершины соединены ребром, если соответствующие занятия нельзя проводить одновременно. Ясно, что правильная раскраска графа G определяет расписание, удовлетворяющее требованиям несовместимости по времени: занятия, соответствующие вершинам, окрашенным одинаково, можно проводить одновременно. Справедливо и обратное, любое такое расписание определяет правильную раскраску графа G. Следовательно, кратчайшее время необходимое для проведения всех занятий равно c(G), а из оптимальной раскраски графа G получается необходимое расписание.


Задача распределения ресурсов. Необходимо выполнить некоторое множество V={v1,v2,…,vn} работ. Имеется множество S={s1,s2,…,sr} ресурсов, необходимых для выполнения этих работ. Каждая работа использует часть указанных ресурсов, одновременно могут выполняться работы, использующие разные ресурсы. Все работы выполняются за одно и то же время t. Необходимо распределить ресурсы так, чтобы общее время выполнения всех работ было минимальным.

Рассмотрим граф G с множеством вершин V. Две различные вершины v и v’ графа G смежны тогда и только тогда, когда для выполнения работ v и v’ требуется хотя бы один общий ресурс. Наименьшее время выполнения всех работ равно c(G)·t. Оптимальная раскраска графа G определяет распределение ресурсов.


Задача экономии памяти. Предположим, что необходимо написать программу для вычисления функции j1,x2,…,xn). Вычисление этой функции разбито на ряд блоков, у каждого из блоков имеются входные и выходные переменные (см. рис. 5.2). Так, например, у блока 2 входные переменные a и b, выходная – с, у блока 3 входная переменная a, выходная – d.

Рис.5.2

Верхнюю часть рис. 5.2 можно назвать блок–схемой по информации. Нижняя часть этого рисунка представляет собой «систему координат», где по вертикальной оси отложены введенные в блок–схеме переменные, а по вертикальной «время их жизни» при вычислении значения функции j.

Предположим, что значения переменной занимают одну ячейку памяти. Задача состоит в том, чтобы определить наименьшее число ячеек памяти, необходимое для хранения указанных в блок – схеме переменных. Решить эту задачу можно следующим образом. На множестве переменных V={a,b,…,g,h} введем структуру графа: две переменных соединим ребром, если времена их жизни пересекаются. Полученный граф будем называть графом несовместимости переменных (см. рис. 5.3). Значения переменных не могут занимать одну ячейку

памяти тогда и только тогда, когда переменные соединены ребром в графе несовместимости. Следовательно, задача экономии памяти сводится к нахождению оптимальной раскраски графа несовместимости. В нашем случае достаточно четырех ячеек памяти (см. рис. 5.3).

Рис.5.3


Как мы видели выше, при решении ряда практических задач необходимо уметь вычислять хроматическое число графа. Естественно попытаться найти формулу, которая выражала бы хроматическое число через «привычные» величины: число вершин, ребер, компонент связности, степени вершин. Однако несложные примеры показывают, что такой формулы нет. Рассмотрим графы, изображенные на рис. 5.4.

Рис.5.4


У этих графов одно и то же число вершин, ребер, компонент связности. Распределение степеней вершин тоже совпадает: четыре вершины имеют степень 4, остальные – степень 2. Однако хроматическое число первого графа равно четырем, а второго – двум.

§2. Оценки хроматического числа

§3 Проблема четырех красок

§4. Раскраска пятью красками

Задачи

Ответы, указания и решения

Тема 6. Ориентированные графы и сети


Fair.ru Ярмарка сайтов
Rambler's Top100 Submitter.ru - Free promoting

Дизайн: Alex © 2002
Все вопросы и предложения можно направлять по адресу cad@mail.ustu.ru