logo
кр одмита

3.8. Раскраска графа

Раскраской некоторого графа G = (VЕ) называется такое разбиение множества вершин V на непересекающиеся подмножества V1V2, … , Vk, что никакие две вершины из одного, любого, из этих подмножеств не смежны. Считается, что вершины, принадлежащие одному и тому же подмножеству Vi, выкрашены при этом в один и тот же цвет i. Задача состоит в том, чтобы раскрасить вершины графа G в минимальное число цветов. Оно называется хроматическим числом графа и обозначается χ(G).

Задача раскраски графа имеет много приложений в различных областях человеческой деятельности. К задаче раскраски сводятся составление расписания занятий в учебном заведении, распределение оборудования на предприятии, выбор расцветки проводов в сложных электрических схемах и многие другие практические задачи. Например, при минимизации числа ячеек памяти вычислительной машины для хранения промежуточных результатов в процессе выполнения программы можно построить граф, вершины которого соответствуют промежуточным результатам вычисления и две вершины связаны ребром, если и только если соответствующие величины используются одновременно и не могут храниться в одной и той же ячейке. Хроматическое число данного графа представляет минимум упомянутых ячеек.

Иногда ставится задача раскраски ребер графа G = (VЕ), где требуется получить такое разбиение множества ребер Е на непересекающиеся подмножества Е1Е2, … , Ер, что ни одна пара ребер из одного и того же Еi (i = 1, 2, … , р) не имеет общей инцидентной вершины. Данная задача сводится к раскраске вершин. Для этого надо построить реберный граф L(G) графа G. Вершины графа L(G) соответствуют ребрам графа G, и две вершины графа L(G) связаны ребром, если и только если соответствующие ребра графа G имеют общую инцидентную вершину в G. Раскраска ребер графа G соответствует раскраске вершин графа L(G).

Метод раскраски графа. Очевидно, всякое множество одноцветных вершин графа является независимым множеством. Поэтому получить минимальную раскраску можно следующим образом: найти все максимальные независимые множества; получить кратчайшее покрытие множества вершин графа максимальными независимыми множествами; удалить некоторые вершины из элементов полученного покрытия, добившись того, чтобы каждая вершина входила в одно и только в одно из выделенных независимых множеств. Для графов, число независимых множеств которых невелико, этот способ является приемлемым. Однако, как показывает оценка, приведенная в предыдущей главе, это число для некоторых графов может оказаться настолько большим, что данный способ вообще не сможет быть реализован. Существует немало методов раскраски, не использующих задачу покрытия и получающих точно минимальное число цветов, но и их применение существенно ограничено размерностью задачи.

Иногда можно получить раскраску графа, минимальную или близкую к минимальной, с помощью так называемого «жадного» алгоритма, где на каждом шаге в текущий цвет раскрашивается как можно больше вершин. Желательно для этого брать наибольшее независимое множество. Раскрашенные вершины удаляются из графа, вводится новый цвет, в него раскрашивается опять как можно больше вершин и так далее до тех пор, пока множество вершин графа не станет пустым. Однако есть пример графа, для которого число цветов, полученное при такой раскраске, может отличаться от минимального на сколь угодно большую величину.

Рассмотрим неограниченную последовательность деревьев Т1Т2, … , Тi, …, начало которой изображено на рис. 3.7. Дерево Т1 состоит из трех вершин и двух ребер. Дерево Ti получается из Ti  1 присоединением к каждой вершине Ti  1 двух смежных с ней вершин. Наибольшее независимое множество дерева Ti  составляют все вершины, не принадлежащие Ti  1. Число цветов, получаемое при раскраске дерева Ti данным способом, равно i + 1, хотя ясно, что всякое дерево можно раскрасить в два цвета.

Т1 Т2 Т3

Рис. 3.7. Деревья, раскрашиваемые «жадным» алгоритмом

Граф G называется k-хроматическим, если χ(G) = k. Очевидно, пустые и только пустые графы являются 1‑хроматическими. Особый класс составляют бихроматические графы, т. е. такие, у которых χ(G) = 2.

Т е о р е м а К ё н и г а. Непустой граф является бихроматическим тогда и только тогда, когда он не содержит циклов нечетной длины.

Допустим, что G = (VE) – связный бихроматический граф. Это не нарушает общности, так как в случае несвязного графа последующие рассуждения можно провести для каждой его компоненты в отдельности. Пусть V 1 и V 2 – множества вершин графа G, раскрашенных соответственно в цвета 1 и 2. Всякое ребро соединяет вершину из V 1 с вершиной из V 2. Следовательно, всякая цепь, начинающаяся и оканчивающаяся в одном и том же множестве V i (i = 1, 2), имеет четную длину. Пусть теперь G – связный граф, не имеющий циклов нечетной длины. Возьмем любую вершину v из графа G. Сформируем множество V 1 из вершин, отстоящих от v на четном расстоянии в графе G, и множество V 2 из всех остальных вершин. Ни одна пара вершин из V 2 не связана ребром. Действительно, если имелось бы ребро vivj  E, у которого vi  V 2 и vj  V 2, то цикл, составленный из цепи, соединяющей v с vi, ребра vivj и цепи, соединяющей vj с v, имел бы нечетную длину, что противоречит условию.

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

Бихроматичность графа легко установить, используя способ последовательной раскраски. Для этого произвольно выбирается вершина v и красится в цвет 1. Вершины ее окрестности N(v) красятся в цвет 2, неокрашенные вершины из окрестностей вершин, принадлежащих N(v), красятся в цвет 1 и т. д. В результате либо граф раскрашивается в два цвета, либо на каком-то шаге смежные вершины оказываются окрашенными в один и тот же цвет. Это говорит о том, что граф не является бихроматическим.