logo search
Лекции ДМ

Цикловой ранг графа. Цикломатическое число

Если G(V, X) не является ациклическим графом, то в нем можно выделить цикл.

Независимыми называются циклы графа G, если они отличаются хотя бы одним ребром.

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

Количество простых циклов в базисе называется цикломатическим числом или циклическим рангом графа G.

Обзначим цикломатическое число через (G).

Справедливо утверждение:

Если G(V, X) – связный граф, то (G) = m(G) – n(G) + p(G), где m(G) – количество ребер в графе, n(G) – количество вершин в графе, p(G) – количество компонент связности в графе.

Так, например, для дерева не существует цикловой базис, т.к. в дереве m = n – 1, р = 1(дерево – связный граф). Тогда цикломатическое число равно (G) = n – 1 – n +1 = 0. Следовательно в базисе нет ни одного цикла.

Рассмотрим алгоритм нахождения циклового базиса связного мультиграфа.

Если (G) = 0, то граф ациклический, циклового базиса не существует.

Пусть (G) > 0. Выделим в G любое остовное дерево Т. Пусть число вершин в графе G равно n, а число ребер – m. x1, x2,…, xn-1 – ребра в Т (остовное дерево содержит все вершины графа, а по свойству дерева число ребер на 1 меньше числа вершин), xn, xn+1,…, xm – остальные ребра графа G (заметим, что n  2, m  n). Число последних ребер m – (n – 1) = m – n + 1, и совпадает с цикломатическим числом связного графа. Добавляя любое из ребер xi ( i = n, …, m) , к дереву Т, получаем некоторый подграф графа G, из которого выделяем простой цикл i-(n-1) , проходящий через ребро xi . Действуя таким образом, находим совокупность простых циклов {1, m-n+1}. Т.к. в каждом из циклов этой системы имеется ребро, не содержащееся в других циклах, то полученная система независимая, следовательно, является цикловым базисом графа G.

Используя данный алгоритм, определим цикловой базис мультиграфа, представленного на рисунке:

Вычислим цикломатическое число: n =4, m = 8, p =1, следовательно, (G) = 8 - 4 + 1 = 5. Значит, цикловой базис содержит 5 независимых циклов. Построим остовное дерево:

Добавим по одному удаленные из графа ребра и будем, таким образом, получать простые циклы:

Добавим ребро х3, получим цикл v1 x2 x3 x5 v1.

Добавим ребро x6 , выделим простой цикл: v1 x2 x3 x6 v1.

Добавим ребро x7 , выделим простой цикл: v1 x2 x7 x1 v1.

Добавим ребро x8 , выделим простой цикл: v1 x2 x8 x1 v1.

Добавим ребро x4 , выделим простой цикл: v1 x2 x3 x4 х1 v1.

Получили пять циклов, составляющих цикловой базис графа.