Двудольные графы и раскраска в 2 цвета — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 12: Строка 12:
 
{{Теорема  
 
{{Теорема  
 
|statement=
 
|statement=
Если множество вершин двудольного графа можно разделить на два независимых подмножества так, что ни одна из вершин ни в одном из этих подмножеств не является смежной к вершине из этого же подмножества, тогда граф <tex>G = (W, E)</tex>  —  2-раскрашиваем. <tex>\chi(G) = 2</tex>.
+
Если множество вершин двудольного графа можно разделить на два независимых подмножества так, что ни одна из вершин ни в одном из этих подмножеств не является смежной к вершине из этого же подмножества, тогда граф <tex>G = (W, E)</tex>  —  2-раскрашиваем. <tex>\chi(G) = 2</tex>. Это эквивалентно тому, что граф будет двудольным, если он 2-раскрашиваем, а значит множество его вершин можно разделить на два непересекающихся множества так, чтобы в каждом из них не нашлось двух смежных вершин.
 
 
Так же, если граф 2-раскрашиваем, значит множество его вершин можно разделить на два непересекающихся множества так, что в каждом из них не найдется двух смежных вершин, то граф является двудольным.
 
 
}}
 
}}
  
Строка 27: Строка 25:
 
''Достаточность.''  
 
''Достаточность.''  
  
Рассмотрим двудольный граф. Начнем цикл в доли <tex> U </tex>. Нужно пройти по четному числу ребер, чтобы подняться в <tex> U </tex> снова. Следовательно, при замыкании цикла число ребер будет четным.
+
Рассмотрим двудольный граф. Начнем цикл в доли <tex> U </tex>. Нужно пройти по четному числу ребер, чтобы вернуться в <tex> U </tex> снова. Следовательно, при замыкании цикла число ребер будет четным.
  
 
''Необходимость.''
 
''Необходимость.''
  
Пусть ненулевой граф <tex> G </tex> связен и не имеет циклов нечетной длины. Выберем произвольно вершину <tex> u </tex> и разобьем множество всех вершин на на два непересекающихся множества <tex> U </tex> и <tex> V </tex> так, чтобы в <tex> U </tex> лежали вершины <tex> v_0 </tex>, такие что кратчайшая цепь <tex>(u, v_0)</tex> была чётной длины, а в <tex> V </tex> соответственно вершины <tex>v_1</tex>, для которых длина цепи <tex>(u, v_1)</tex> - нечётная. При этом <tex> u \in U </tex>.
+
Пусть ненулевой граф <tex> G </tex> связен и не имеет циклов нечетной длины. Выберем произвольно вершину <tex> u </tex> и разобьем множество всех вершин на на два непересекающихся множества <tex> U </tex> и <tex> V </tex> так, чтобы в <tex> U </tex> лежали вершины <tex> v_0 </tex>, такие что кратчайшая цепь <tex>(u, v_0)</tex> была чётной длины, а в <tex> V </tex> соответственно вершины <tex>v_1</tex>, для которых длина цепи <tex>(u, v_1)</tex> - нечётная. При этом <tex> u \in U </tex>.  
  
В графе <tex> G </tex> нет ребер <tex>ab</tex>, таких что <tex>a, b </tex> лежат одновременно в <tex> U </tex>  и <tex>V</tex>. Поведем доказательство от противного. Пусть <tex>a, b \in V_0 </tex>. Зададим <tex> P_0 </tex> - кратчайшая <tex> (u, a) </tex> цепь, а <tex> P_1 </tex>- кратчайшая <tex> (u, b) </tex> цепь. Обе цепи четной длины. Пусть <tex> u </tex> - последняя вершина цепи <tex> P_0 </tex>, принадлежащая <tex> P_1 </tex>. Тогда подцепи от <tex> u </tex> до <tex> v_0  </tex> в <tex> P_0</tex> и <tex>P_1</tex> имеют одинаковую длину (иначе бы противоречили выбору <tex> P_0 </tex> и <tex> P_1 </tex>). А так как подцепи одинаковы, то чётность у них одинакова, а значит в сумме с ребром <tex> ab </tex> они образуют цикл нечётной длины, что невозможно.
+
В графе <tex> G </tex> нет ребер <tex>ab</tex>, таких что <tex>a, b </tex> лежат одновременно в <tex> U </tex>  и <tex>V</tex>. Поведем доказательство от противного. Пусть <tex>a, b \in U </tex>. Зададим <tex> P_0 </tex> - кратчайшая <tex> (u, a) </tex> цепь, а <tex> P_1 </tex>- кратчайшая <tex> (u, b) </tex> цепь. Обе цепи четной длины. Пусть <tex> v_0 </tex> - последняя вершина цепи <tex> P_0 </tex>, принадлежащая <tex> P_1 </tex>. Тогда подцепи от <tex> u </tex> до <tex> v_0  </tex> в <tex> P_0</tex> и <tex>P_1</tex> имеют одинаковую длину (иначе бы, пройдя по более короткой подцепи от <tex>u</tex> до <tex>v_0</tex> мы смогли бы найти более короткую цепь от <tex> u </tex> до <tex> a </tex> или от <tex> u </tex> до <tex> b </tex>, чем цепь <tex> P_0 </tex> или <tex> P_1 </tex> ). А так как подцепи одинаковы, то чётность у них одинакова, а значит в сумме с ребром <tex> ab </tex> они образуют цикл нечётной длины, что невозможно.
 
}}
 
}}
  

Версия 08:18, 15 января 2012

Определение:
Неориентированный граф [math] G =(W, E) [/math] называется двудольным, если множество его вершин можно разбить на две части [math] U \cup V = W , \mid U\mid \gt 0, \mid V\mid \gt 0 [/math], так, что ни одна вершина в [math] U [/math] не соединена с вершинами в [math] U [/math] и ни одна вершина в [math] V [/math] не соединена с вершинами в [math] V [/math].


Пример двудольного графа


Раскраска в 2 цвета

Теорема:
Если множество вершин двудольного графа можно разделить на два независимых подмножества так, что ни одна из вершин ни в одном из этих подмножеств не является смежной к вершине из этого же подмножества, тогда граф [math]G = (W, E)[/math] — 2-раскрашиваем. [math]\chi(G) = 2[/math]. Это эквивалентно тому, что граф будет двудольным, если он 2-раскрашиваем, а значит множество его вершин можно разделить на два непересекающихся множества так, чтобы в каждом из них не нашлось двух смежных вершин.

Теорема Кенига

Теорема (Кениг):
Граф [math] G [/math] является двудольным тогда и только тогда, когда все циклы в графе [math] G [/math] имеют чётную длину.
Доказательство:
[math]\triangleright[/math]

Достаточность.

Рассмотрим двудольный граф. Начнем цикл в доли [math] U [/math]. Нужно пройти по четному числу ребер, чтобы вернуться в [math] U [/math] снова. Следовательно, при замыкании цикла число ребер будет четным.

Необходимость.

Пусть ненулевой граф [math] G [/math] связен и не имеет циклов нечетной длины. Выберем произвольно вершину [math] u [/math] и разобьем множество всех вершин на на два непересекающихся множества [math] U [/math] и [math] V [/math] так, чтобы в [math] U [/math] лежали вершины [math] v_0 [/math], такие что кратчайшая цепь [math](u, v_0)[/math] была чётной длины, а в [math] V [/math] соответственно вершины [math]v_1[/math], для которых длина цепи [math](u, v_1)[/math] - нечётная. При этом [math] u \in U [/math].

В графе [math] G [/math] нет ребер [math]ab[/math], таких что [math]a, b [/math] лежат одновременно в [math] U [/math] и [math]V[/math]. Поведем доказательство от противного. Пусть [math]a, b \in U [/math]. Зададим [math] P_0 [/math] - кратчайшая [math] (u, a) [/math] цепь, а [math] P_1 [/math]- кратчайшая [math] (u, b) [/math] цепь. Обе цепи четной длины. Пусть [math] v_0 [/math] - последняя вершина цепи [math] P_0 [/math], принадлежащая [math] P_1 [/math]. Тогда подцепи от [math] u [/math] до [math] v_0 [/math] в [math] P_0[/math] и [math]P_1[/math] имеют одинаковую длину (иначе бы, пройдя по более короткой подцепи от [math]u[/math] до [math]v_0[/math] мы смогли бы найти более короткую цепь от [math] u [/math] до [math] a [/math] или от [math] u [/math] до [math] b [/math], чем цепь [math] P_0 [/math] или [math] P_1 [/math] ). А так как подцепи одинаковы, то чётность у них одинакова, а значит в сумме с ребром [math] ab [/math] они образуют цикл нечётной длины, что невозможно.
[math]\triangleleft[/math]

Алгоритм

Так как граф является двудольным тогда и только тогда, когда все циклы четны, определить двудольность можно за один проход в глубину. На каждом шаге обхода в глубину помечаем вершину. Допустим мы пошли в первую вершину - помечаем её как [math] 1 [/math]. Затем просматриваем все смежные вершины и если не помечена вершина, то на ней ставим пометку [math] 2 [/math] и рекурсивно переходим в нее. Если же она помечена и на ней стоит та же пометка, что и у той, из которой шли(в нашем случае [math] 1 [/math]), значит граф не двудольный.


Источники

1. Асанов М. О., Баранский В. А., Расин В. В. - Дискретная математика: Графы, матроиды, алгоритмы. ISBN 978-5-8114-1068-2
2. Харари Ф. - Теория графов. ISBN 978-5-397-00622-4

См. также