Читайте также:
|
|
Заметим, что реализация графовых алгоритмов упрощается при использовании таких числовых инвариантных характеристик графа, как числа цикломатическое, хроматическое и др.
Наименьшее число ребер, которое необходимо удалить из графа G, чтобы он стал ациклическим (деревом), называется цикломатическим числом графа. Для графа G = (X, U), |X| = n, |U| = m цикломатическое число
g(G) = m – n + k, (17.1)
где k — число компонентов связности графа, (k = 1, 2, …). Величину r (G) = n – k называют коцикломатическим числом. Тогда g(G) = m – r (G).
Циклы, получаемые добавлением какого-нибудь ребра из графа G к ребрам дерева и отличающиеся один от другого хотя бы одним ребром, называют фундаментальными циклами. Очевидно, для графа, состоящего из одной компоненты связности,
g(G) = m – n + 1. (17.2)
Например, для графа G (рис. 17.38) g(G) = 9 – 6 + 1 = 4, то есть после удаления четырех ребер он становится деревом. В примере это могут быть ребра (x 1, x 3), (x 1, x 5), (x 4, x 5), (x 4, x 6). Тогда получаем дерево T, выделенное жирным шрифтом.
Заметим, что цикломатическое число графа не зависит от ориентации его ребер и формула его определения справедлива для мультиграфов. Из определения g(G) следует, что оно может быть только положительным или равным нулю. Граф (мультиграф) не имеет циклов тогда и только тогда, когда g(G) = 0. Очевидно, что граф (мультиграф) имеет единственный цикл тогда и только тогда, когда g(G) = 1.
Цикломатическое число g(G) показывает только число ребер, которые необходимо удалить из графа. Для получения конкретных ребер необходимо каждый раз удалять ребро, которое разрушает хотя бы один цикл.
Матрица Rc = || rc (i, j)||g(G)×m, состоящая из g(G) строк и m столбцов, называется матрицей фундаментальных циклов, если
Для графа G (рис. 17.38) матрица Rc запишется следующим образом:
u 1 | u 2 | u 3 | u 4 | u 5 | u 6 | u 7 | u 8 | u 9 | |||
Rc = | c 1 | . | |||||||||
c 2 | |||||||||||
c 3 | |||||||||||
c 4 |
u 1 = (x 1, x 2), u 2 = (x 1, x 3), u 3 = (x 1, x 5), u 4 = (x 2, x 4), u 5 = (x 2, x 5), u 6 = (x 3, x 4), u 7 = (x 4, x 5), u 8 = (x 4, x 6), u 9 = (x 5, x 6).
Раскраской вершин графа называется разбиение множества вершин X на l непересекающихся классов (подмножеств):
(17.3)
таких, что внутри каждого подмножества X i не должно содержаться смежных вершин. Если каждому подмножеству X i поставить в соответствие определенный цвет, то вершины этого подмножества можно окрасить в один цвет, вершины другого подмножества X j – в другой цвет, и т.д. до раскраски всех подмножеств. В этом случае граф называется l –аскрашиваемым. Наименьшее число подмножеств, на которое разбивается граф при раскраске, называется хроматическим числом c(G).
Очевидно, что полный граф Kn можно раскрасить только n цветами, следовательно, c(Kn) = n. Для связного графа G = (X, U) с (n - 1) £ m £ n(n – 1)/2 верхняя оценка хроматического числа
(17.4)
Известно утверждение, что для любого графа хроматическое число превышает максимальную локальную степень вершины не более чем на единицу, т.е.
c(G) £ 1+max r (xi), xi Î X, i Î I = {1, 2, …, n}. (17.5)
Если известно число вершин в наибольшем полном подграфе K i графа G, то
c(G) = n / n i,
где n i – число вершин в подграфе K i. Известны еще такие оценки:
, (17.6)
где – хроматическое число графа .
Хроматическое число обычно определяют аналитически с помощью методов линейного программирования. Рассмотрим один из возможных методов определения c(G), равного q.
Пусть справедливы следующие утверждения:
и
Тогда можно составить следующую систему линейных соотношений:
j = 1, 2, …, n,
l = 1, 2, …, m, (17.7)
p = 1, 2, …, q.
Первая система n уравнений говорит о том, что каждая вершина окрашена только одним цветом из множества всех цветов. Система неравенств показывает, что любые две смежные вершины графа не должны быть окрашены одним цветом.
Каждому способу раскраски вершин графа q цветами (при обязательном условии разноцветности смежных вершин) соответствует система целых чисел x(j, p), удовлетворяющая условиям (17.3), и, наоборот, каждому целочисленному решению системы (17.3) соответствует один из способов раскраски. Наименьшее q, для которого система (17.7) имеет целочисленное решение, будет искомым хроматическим числом графа.
Опишем последовательный метод раскраски графа G = (X, U). Сначала составляется упорядоченный в порядке не возрастания степеней вершин список. Первая вершина окрашивается в цвет 1 и удаляется из списка. Просматривая список, в цвет 1 раскрашиваются и удаляются из него все вершины, не смежные с первой выбранной и между собой. Далее снова выбирается первая вершина из списка, она окрашивается в цвет 2 и удаляется. Процесс продолжается, пока не будут окрашены все вершины.
Например, пусть задан граф G, показанный на рис. 17.1.
Рис. 17.1. Граф G
Построим список смежности
xi | x 3 | x 2 | x 4 | x 5 | x 7 | x 1 | x 6 |
r (xi) |
Вершины x 3, x 4 окрашиваем в цвет 1 и удаляем из списка. Получаем новый список
xi | x 2 | x 5 | x 7 | x 1 | x 6 |
r (xi) |
Вершины x 2, x 6 окрашиваем в цвет 2 и удаляем из списка:
xi | x 5 | x 7 | x 1 |
r (xi) |
Вершины x 5, x 7, x 1 окрашиваем в цвет 3. На этом процесс окончен, так как раскрашены все вершины графа.
Отметим, что такого типа последовательные методы могут давать плохие результаты раскраски при быстром получении результата. Существует много модификаций последовательных алгоритмов, связанных с переупорядочиванием списков после удаления вершин, анализа вершин с одинаковой локальной степенью и выбора из них вершин, через которые проходит большее число маршрутов, и т.п. Временная сложность таких алгоритмов составляет величину O(n) – O(n2).
Важное практическое применение имеет частный вид n-раскрашиваемых графов – двудольные (бихроматические) графы. Обозначается двудольный граф G(n1, n2) = (X1, X2, U). Причем X1 È X2 = X, X1 Ç X2 = Æ, а ребра соединяют только подмножества X1 и X2 между собой. На рис. 17.2 показан пример двудольного графа G = (X1, X2, U), |X1| = 3 = n1, |X2| = 2 = n2, X1 = { x 1, x 2, x 3}, X2 = { x 4, x 5}.
Рис. 17.2. Двудольный граф
Граф K(n1, n2) называется полным двудольным, если любая вершина xi Î X1 смежна с каждой вершиной xj Î X2 и наоборот (i = 1, 2, …, n1; j = n1 + 1, n1 + 2, …, n1 + n2).
Например, при добавлении к графу G(n1, n2) (рис. 3.2) ребра (x 3, x 4) он становится полным двудольным графом. Очевидно, что в графе G = (X1, X2, U) подмножество X1 можно раскрасить одним цветом, а подмножество X2 – другим. Число ребер m графа K(n1, n2) определяется выражением m = n1 × n2.
При разработке алгоритмов конструкторского и технологического проектирования ЭВА часто возникает необходимость определения двудольности произвольного графа схемы или выделения максимальных непересекающихся двудольных частей.
Теорема 17.1. Граф G является двудольным тогда и только тогда, когда он не имеет простых циклов нечетной длины.
Дата добавления: 2015-10-26; просмотров: 283 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ | | | ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ |