Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3714 / 175 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик
Лекция 10:

Раскраски

< Лекция 9 || Лекция 10: 123 || Лекция 11 >

Теорема 1. Для любого графа G справедливы неравенства {\Delta (G)\le \chi'(G)\le \Delta (G)+1}.

Доказательство. Приводимое ниже доказательство дает и план алгоритма для раскрашивания ребер графа не более чем в \Delta
(G)+1 цветов. Оно основано на двух операциях перекрашивания, с описания которых и начнем. Далее будут рассматриваться частичные реберные раскраски, т.е. правильные раскраски, при которых некоторые ребра остаются неокрашенными.

Допустим, ребра графа G правильно (может быть, частично) раскрашены. Пусть \alpha и \beta - два из использованных в этой раскраске цветов. Рассмотрим подграф H, образованный всеми ребрами, имеющими цвета \alpha или \beta. В этом подграфе степень каждой вершины не превосходит 2, следовательно, каждая компонента связности в нем является цепью или циклом. Такую компоненту будем называть (\alpha,\beta) - компонентой. Если в какой-нибудь (\alpha,\beta ) -компоненте поменять местами цвета \alpha и \beta (т.е. все ребра, окрашенные в цвет \alpha, перекрасить в цвет \beta и наоборот), то полученная раскраска тоже будет правильной. Эту операцию назовем перекраской (\alpha,\beta) -компоненты.

Другая операция применяется к частично раскрашенному подграфу, называемому веером. Будем говорить, что при данной раскраске цвет \alpha отсутствует в вершине x, если ни одно из ребер, инцидентных вершине x, не окрашено в этот цвет. Веером называется подграф F(x,y_{1}\ldots y_{k}, \alpha _{1}\ldots \alpha _{k}), состоящий из вершин x,y_{1} \ldots y_{k} и ребер (x,y_{1})\ldots (x,y_{k} ), в котором:

  • ребро (x,y_{1}) не окрашено;
  • ребро (x,y_{i}) окрашено в цвет \alpha_{i-1}, i=2\ldots k ;
  • в вершине y_{i} отсутствует цвет \alpha_{i}, i=1\ldots k ;
  • \alpha_{1}\ldots \alpha_{k-1} все попарно различны.

Перекраска веера состоит в том, что ребра (x,y_{1})\ldots (x,y_{k-1}) окрашиваются соответственно в цвета \alpha_{1}\ldots \alpha_{k-1}, а ребро (x,y_{k}) становится неокрашенным. Очевидно, новая частичная раскраска тоже будет правильной. На рис. 10.3 слева показан веер, а справа - результат его перекраски. Цвета ребер представлены числами, а отсутствующие цвета в вершинах - числами со знаком минус. Неокрашенное ребро изображено пунктиром.


Рис. 10.3.

Покажем, что с помощью этих двух процедур перекрашивания можно ребра любого графа G окрасить в не более чем \Delta (G)+1 цветов. Допустим, что уже построена частичная правильная раскраска, использующая не более чем \Delta (G)+1 цветов, и имеется неокрашенное ребро (x,y). Так как число разрешенных цветов больше, чем максимальная степень вершины, то в каждой вершине какой-нибудь цвет отсутствует. Допустим, в вершине x отсутствует цвет \beta.

Будем строить веер следующим образом. Положим y_{1} =y и пусть \alpha_{1} - цвет, отсутствующий в вершине y. Получаем веер F(x,y_{1},\alpha_{1}). Допустим, веер F(x,y_{1} \ldots y_{k},
\alpha_{1}\ldots \alpha_{k}) уже построен. Если цвет \alpha_{k} отличен от \alpha_{1}\ldots \alpha_{k-1} и имеется инцидентное вершине x ребро (x,z) этого цвета, то увеличиваем k на 1 и полагаем y_{k} =z, \alpha_{k} - цвет, отсутствующий в вершине z. Этот процесс построения веера продолжается до тех пор, пока не наступит одно из следующих событий.

(А) Нет ребра цвета \alpha_{k}, инцидентного вершине x. Перекрашиваем веер, в результате ребро (x,y) становится окрашенным, а ребро (x,y_{k}) - неокрашенным, причем цвет \alpha_{k} отсутствует и в вершине y_{k}, и в вершине x. Но тогда можно это ребро окрасить в цвет \alpha_{k}, и мы получим правильную раскраску, в которой на одно окрашенное ребро больше.

(Б) Цвет \alpha_{k} совпадает с одним из цветов \alpha_{1}\ldots
\alpha_{k-1} (именно этот случай изображен на рис. 10.3). Пусть \alpha_{k} =\alpha_{i}. Рассмотрим вершины x,y_{i},y_{k}. В каждой из них отсутствует какой-нибудь из цветов \beta или \alpha_{k}. Значит, в подграфе, образованном ребрами этих двух цветов, степень каждой из этих вершин не превосходит 1. Следовательно, все три вершины не могут принадлежать одной (\alpha_{k},\beta) -компоненте. Рассмотрим две возможности.

(Б1) Вершины x и y_{i} принадлежат разным (\alpha_{k},\beta ) -компонентам. Перекрасим веер F(x,y_{1}\ldots y_{i},\alpha _{1}\ldots \alpha _{i}). Ребро (x,y_{i} ) станет неокрашенным. Теперь перекрасим (\alpha_{k},\beta ) -компоненту, содержащую вершину y_{i}. После этого цвет \beta будет отсутствовать в вершине y_{i} и ребро (x,y_{i}) можно окрасить в этот цвет.

(Б2) Вершины x и y_{k} принадлежат разным (\alpha_{k},\beta) -компонентам. Перекрасим веер F(x,y_{1}\ldots y_{k},\alpha _{1}
\ldots \alpha _{k}). Ребро (x,y_{k}) станет неокрашенным. Теперь перекрасим (\alpha_{k},\beta) -компоненту, содержащую вершину y_{k}. После этого цвет \beta будет отсутствовать в вершине y_{k} и ребро (x,y_{k}) можно окрасить в этот цвет.

Итак, в любом случае получаем правильную раскраску, в которой добавилось еще одно раскрашенное ребро (x,y).

На рис. 10.4 иллюстрируются случаи (Б1) и (Б2) на примере веера из рисунка 10.3. Здесь k=5, i=3. Левое изображение соответствует случаю (Б1): вершины x и y_{3} принадлежат разным (3,
5) -компонентам. После перекраски веера F(x,y_{1} ,y_{2} ,y_{3} ,1,2,3) и (3,5) -компоненты, содержащей вершину y_{3}, появляется возможность окрасить ребро (x,y_{3}) в цвет 5. Случай (Б2) показан справа: здесь вершины x и y_{5} принадлежат разным (3,
5) -компонентам, поэтому после перекраски веера F(x,y_{1},y_{2},y_{3},
y_{4}, y_{5}, 1, 2, 3, 4,3) и (3,5) -компоненты, содержащей вершину y_{5}, появляется возможность окрасить ребро (x,y_{5}) в цвет 5.


Рис. 10.4.

Итак, все графы делятся на два класса: у одних хроматический индекс равен максимальной степени вершины, у других он на единицу больше. Оказывается, определение принадлежности графа к тому или иному классу является NP-трудной задачей. Алгоритм, который можно извлечь из доказательства теоремы 1, за полиномиальное время находит раскраску в не более чем \Delta (G)+1 цветов. Его можно назвать "идеальным" приближенным алгоритмом - более высокую точность имеет только точный алгоритм.

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.