
- •1. Множества и бинарные отношения
- •Множества
- •Определения и примеры
- •1.1.1 Множество
- •Операции над множествами
- •Элементы комбинаторики
- •Бинарные отношения
- •Определения и примеры
- •2.1.2 Отображения
- •Операции над отношениями
- •Выполнение операций над отношениями
- •Свойства отношений
- •Эквивалентность и толерантность
- •2.4.1 Эквивалентность
- •2.4.3 Толерантность
- •2.4.6 Задача о наименьшем покрытии (ЗНП)
- •Алгоритм решения ЗНР
- •Отношения порядка
- •Строгий порядок
- •Свойства строгого порядка
- •Некоторые свойства дерева
- •Анализ отношений порядка
- •2.5.8 Решетки
- •2.5.10 Решетка
- •2.5.11 Булева решетка
- •Нормированные булевы решетки
- •Модели нормированной булевой решетки
- •Булевы функции (БФ)
- •Определения и примеры
- •Равенство булевых функций
- •3.3.1 СДНФ
- •3.3.3 СКНФ
- •3.3.5 Представление формул в СДНФ и СКНФ
- •Минимизация булевых функций
- •3.4.1 Импликанта
- •Полные системы булевых функций
- •2. Математическая логика
- •Логика высказываний
- •Основные понятия
- •4.1.7 Логическое следствие
- •4.1.8 Теоремы о логическом следствии
- •Логика предикатов
- •5.0.13 Связанные и свободные переменные
- •Предваренная нормальная форма
- •Стандартная нормальная форма
- •Подстановки и унификация
- •Метод резолюций для логики первого порядка
- •Исчисление высказываний
- •3. Графы
- •Определения и примеры
- •Определения графа
- •Части графа
- •Изоморфизм графов
- •Задание графов с помощью матриц
- •Матрица инциденций
- •Матрица соседства вершин
- •Матрица смежности
- •Типы графов
- •Обыкновенные графы
- •Графы Бержа
- •Помеченные и взвешенные графы
- •Другие способы задания графа
- •Связность графов
- •Маршруты, цепи, циклы
- •Число маршрутов
- •Компоненты связности
- •Нахождение компонент и бикомпонент
- •Кратчайшие цепи
- •Алгоритм Форда
- •Алгоритм Дейкстры
- •Обходы графа
- •Поиск в глубину на графе
- •Поиск в ширину на графе
- •Эйлеровы цепи и циклы
- •Эйлеровы пути
- •Гамильтоновы цепи и циклы
- •Цикломатика графов
- •Цикломатическое число
- •Деревья
- •Свойства дерева
- •Каркасы
- •Алгоритм нахождения каркаса графа.
- •Кратчайший каркас графа.
- •Алгоритм Прима.
- •Теорема о хорде каркаса.
- •Число каркасов графа.
- •Разрезы
- •Пространства суграфов
- •Пространство циклов
- •Пространство разрезов.
- •Потоки в сетях
- •Задача о максимальном потоке
- •Постановка задачи
- •Экстремальные части графа
- •Основные понятия
- •Покрытия
- •Задача о наименьшем покрытии
- •Паросочетания
- •Раскраска вершин графа
- •Хроматическое число
- •Оценки хроматического числа
- •Точные алгоритмы раскраски вершин

245
Глава 8
Цикломатика графов
8.1 Цикломатическое число
Важной числовой характеристикой графа G = (X; U; P ), не зависящей от ориентации и инвариантной относительно изоморфизма является цикломатическое число ¸(G), которое определяется следующим образом:
¸(G) = m(G) ¡ n(G) + ·(G);
где n(G) = n = jXj – число вершин; m(G) = m = jUj – число ребер; ·(G) = · – число компонент связности графа G:
Назовем ребро цикловым, если оно содержится хотя бы в одном цикле; в противном случае назовем его перешейком.
Лемма 3 Пусть G0 = (X; U n u; P ) – cуграф, полученный из G уда-
лением ребра u. Тогда
8
< ·(G); если u – цикловое ребро, ·(G0) = : ·(G) + 1; если u – перешеек.
Д о к а з а т е л ь с т в о . 1. Пусть ребро u соединяет вершины x; y и входит в некоторый цикл
C = x0 u1 x1 : : : x u y : : : xl¡1 ul x0
Если удалить ребро u, то можно построить цепь
x : : : x1 u1 x0 ul xl¡1 : : : y;
соединяющую те же вершины x и y и не содержащую u. Следовательно, удаление u не увеличило числа компонент, и граф G0 связен, то есть ·(G0) = ·(G):

246 Глава 8. Цикломатика графов
2. Пусть ребро u не входит ни в какой цикл графа G: Тогда очевидно, при удалении ребра u из любой цепи, соединяющей вершины x; y; в графе G не найдется ни одной цепи, соединяющей эти же вершины и ·(G0) = ·(G) + 1: £
Так как n(G0) = n(G); m(G0) = m(G) ¡ 1; получим
8
< ¸(G); если u – перешеек,
¸(G0) = : ¸(G) + 1; если u – цикловое ребро.
Теорема 8.1
1: ¸(G) ¸ 0:
2: ¸(G) = 0 тогда и только тогда, когда граф G не содержит циклов.
Д о к а з а т е л ь с т в о . 1. Пусть граф содержит циклы, по крайней мере одно цикловое ребро. Удалив это ребро, мы уменьшим ¸ на единицу. Если в оставшемся суграфе еще есть циклы, то снова удалим цикловое ребро и т.д. При этом · остается без изменения. В конце концов придем к графу без циклов G?, у которого
¸(G?) < ¸(G): Отсюда ¸(G) > 0:
Пусть теперь в графе нет циклов. Тогда последовательное удаление ребер, не изменяя ¸, превратит граф в пустой (безреберный) En, для которого m = 0, и n = ·; откуда
¸ = m ¡ n + · = 0 ¡ n + n = 0:
Таким образом, ¸(G) ¸ 0:
2. В одну сторону равенство уже доказано (если в графе нет циклов, то ¸(G) = 0).
Пусть теперь ¸(G) = 0: Покажем, что G не содержит циклов ( ¸(G) = 0 – неотрицательно).
При удалении ребра ¸ может только уменьшиться, но не более чем до нуля:
0 = m ¡ n + · или · = n ¡ m:
При удалении любого ребра будет
¸0 = 0; m0 = m ¡ 1; n0 = n; ·0 = · + 1;
то есть это любое ребро – перешеек, что и означает, что в графе нет циклов. £
Следствие. Если ¸(G) > 0; то всякий суграф, полученный из G удалением менее ¸ ребер, содержит циклы.