Двудольные графы и раскраска в 2 цвета — различия между версиями
VVolochay (обсуждение | вклад) |
|||
Строка 5: | Строка 5: | ||
[[Файл:Двудольный граф.jpg|thumb|right|200px|Пример двудольного графа]] | [[Файл:Двудольный граф.jpg|thumb|right|200px|Пример двудольного графа]] | ||
+ | |||
+ | {{Теорема | ||
+ | |about= | ||
+ | Кёниг | ||
+ | |statement= | ||
+ | Граф является двудольным <tex> \iff </tex> когда все циклы четные. | ||
+ | |proof= | ||
+ | |||
+ | ''Достаточность.'' | ||
+ | |||
+ | Рассмотрим двудольный граф. Начнем цикл в доли <tex> U </tex>. Нужно пройти по четному числу ребер, чтобы подняться в <tex> U </tex> снова. Следовательно, при замыкании цикла число ребер будет четным. | ||
+ | |||
+ | ''Необходимость.'' | ||
+ | |||
+ | Если граф несвязный, то проведем доказательство отдельно для каждой компоненты. | ||
+ | |||
+ | Пусть граф связный и все циклы в нем четные. Выделим произвольную вершину <tex> v_0 </tex> и найдем произвольные цепи между <tex> v_0 </tex> и всеми остальными вершинами (например, самые короткие алгоритмом Дейкстры). Если одна цепь <tex>(v_0, v_i)</tex> нечетной длины, то и любая цепь <tex>(v_0, v_i)</tex> нечетная, иначе бы эти цепи образовали нечетный цикл. | ||
+ | |||
+ | Аналогично, если <tex>(v_0, v_i)</tex> — четная, то и любая <tex>(v_0, v_i)</tex> — четная. Разобьем вершины на две доли: в одну войдет вершина <tex> v_0 </tex> и все, находящиеся от <tex> v_0 </tex> на четном расстоянии; в другую долю поместим все вершины, находящиеся от <tex> v_0 </tex> на нечетном расстоянии. Если вершины <tex> u_1 </tex> и <tex> u_2 </tex> принадлежат одной доле, то между ними не может быть ребра, иначе это ребро вместе с цепями <tex>(v_0, u_1)</tex> и <tex>(v_0, u_2)</tex> образовали бы нечетный цикл. | ||
+ | }} | ||
+ | |||
+ | |||
+ | === Раскраска в 2 цвета === | ||
Так как множество вершин двудольного графа можно разделить на 2 независимых подмножества так, что ни одна из вершин ни в одном из этих подмножеств не является смежной к вершине из этого же подмножества <tex>\Rightarrow</tex> граф <tex>G = (W,E)</tex> - 2-раскрашиваем. <tex>\chi(G) = 2</tex>. | Так как множество вершин двудольного графа можно разделить на 2 независимых подмножества так, что ни одна из вершин ни в одном из этих подмножеств не является смежной к вершине из этого же подмножества <tex>\Rightarrow</tex> граф <tex>G = (W,E)</tex> - 2-раскрашиваем. <tex>\chi(G) = 2</tex>. | ||
+ | |||
+ | Так как граф является двудольным тогда и только тогда, когда все циклы четны, определить двудольность можно за один проход в глубину. | ||
+ | На каждом шаге обхода в глубину метим вершину. Допустим мы пошли в первую вершину - добавляем ее в множество <tex> U </tex>. То есть ставим метку <tex> 1 </tex>. Затем просматриваем все смежные вершины и если не помечена вершина, то метим ее как <tex> 2 </tex> (то есть добавляем во множество <tex> V </tex> ) и рекурсивно переходим в нее. Если же она мечена и у нее такая же метка как у нашей - то все граф не двудольный. | ||
+ | |||
+ | |||
+ | ===См. также == | ||
+ | * [http://rain.ifmo.ru/cat/view.php/theory/graph-coloring-layout| Графы. Раскраски и укладки] |
Версия 11:24, 28 декабря 2011
Определение: |
Неориентированный граф | называется двудольным, если множество его вершин можно разбить на две части , так, что ни одна вершина в не соединена с вершинами в и ни одна вершина в не соединена с вершинами в .
Теорема (Кёниг): |
Граф является двудольным когда все циклы четные. |
Доказательство: |
Достаточность. Рассмотрим двудольный граф. Начнем цикл в доли . Нужно пройти по четному числу ребер, чтобы подняться в снова. Следовательно, при замыкании цикла число ребер будет четным.Необходимость. Если граф несвязный, то проведем доказательство отдельно для каждой компоненты. Пусть граф связный и все циклы в нем четные. Выделим произвольную вершину Аналогично, если и найдем произвольные цепи между и всеми остальными вершинами (например, самые короткие алгоритмом Дейкстры). Если одна цепь нечетной длины, то и любая цепь нечетная, иначе бы эти цепи образовали нечетный цикл. — четная, то и любая — четная. Разобьем вершины на две доли: в одну войдет вершина и все, находящиеся от на четном расстоянии; в другую долю поместим все вершины, находящиеся от на нечетном расстоянии. Если вершины и принадлежат одной доле, то между ними не может быть ребра, иначе это ребро вместе с цепями и образовали бы нечетный цикл. |
Раскраска в 2 цвета
Так как множество вершин двудольного графа можно разделить на 2 независимых подмножества так, что ни одна из вершин ни в одном из этих подмножеств не является смежной к вершине из этого же подмножества
граф - 2-раскрашиваем. .Так как граф является двудольным тогда и только тогда, когда все циклы четны, определить двудольность можно за один проход в глубину. На каждом шаге обхода в глубину метим вершину. Допустим мы пошли в первую вершину - добавляем ее в множество
. То есть ставим метку . Затем просматриваем все смежные вершины и если не помечена вершина, то метим ее как (то есть добавляем во множество ) и рекурсивно переходим в нее. Если же она мечена и у нее такая же метка как у нашей - то все граф не двудольный.
=См. также
* Графы. Раскраски и укладки