- •4.1. Основные понятия и определения теории графов
- •4.2. Типы графов
- •4.3. Матричные представления графов
- •4.5. Операции над графами
- •4.6. Метрические характеристики графа. Расстояние в графах
- •Затем, изымая степень, соответствующую вершине , получим
- •4.8. Достижимость и связность
- •4.8.1. Основные определения
- •4.8.2. Матрицы достижимостей
- •4.8.3. Нахождение сильных компонент
- •Алгоритм нахождения сильных компонент графа можно описать следующей последовательностью шагов
- •Таким образом, сильные компоненты графа можно находить по следующему алгоритму.
- •4.8.4. Базы и антибазы
- •4.9. Независимые и доминирующие множества
- •4.9.1. Нахождение всех максимальных независимых множеств
- •Опишем алгоритм нахождения всех максимальных независимых множеств вершин графа.
- •4.10. Покрытия и раскраски
- •4.11. Деревья, остовы и кодеревья
- •4.11.1. Основные определения
- •4.11.2. Алгоритм построения остова неорграфа
- •4.11.4. Обходы графа по глубине и ширине
- •Доказательство.
- •4.11.5. Упорядоченные и бинарные деревья
- •4.12. Эйлеровы циклы. Гамильтонов контур
- •4.12.1. Метод Флёри построения эйлерова цикла
- •Матрица м данного графа имеет вид
- •4.12.3. Алгебраический метод выделения гамильтоновых путей и контуров
- •4.13. Плоские и планарные графы
- •4.13.1. Формула Эйлера
- •4.13.2. Критерии анализа планарности
- •4.13.3. Алгоритм укладки графа на плоскости
- •Задачи и упражнения
- •5. Разрешимые и неразрешимые проблемы
- •Библиографический список
Опишем алгоритм нахождения всех максимальных независимых множеств вершин графа.
Начальная установка.
Шаг 1. Пусть S0 = Q0- = , Q0+= X, k=0.
Прямой шаг.
Шаг 2. Выбрать вершину xikQk+ и сформировать Sk+1, Qk-+1 и Qk++1, оставив Qk- и Qk+ нетронутыми. Положить k=k+1.
Проверка.
Шаг 3. Если выполняется условие (4.5), то перейти к шагу 5 иначе к шагу 4.
Шаг 4. Если Qk+=Qk- =, то напечатать максимальное независимое множество Sk и перейти к шагу 5. Если Qk+=, а Qk-, то перейти к шагу 5, иначе к шагу 2.
Шаг возвращения.
Шаг 5. Положить k=k–1. Удалить xik из Sk+1, чтобы получить Sk. Исправить Qk+ и Qk-, удалив вершину xik из Qk+ и добавив ее к Qk-. Если k0, то перейти к шагу 3, иначе если Q0+=, то остановиться (к этому моменту будут напечатаны все максимальные независимые множества), иначе перейти к шагу 2.
Пример. Найти все максимальные независимые множества графа G.
Матрица смежности графа G:
-
А=
x1
x2
x3
x4
x5
x6
x7
x1
0
1
1
0
0
0
0
x2
1
0
0
1
0
1
0
x3
1
0
0
0
1
0
1
x4
0
1
0
0
1
1
0
x5
0
0
1
1
0
0
1
x6
0
1
0
1
0
0
1
x7
0
0
1
0
1
1
0
1. Начальная установка:
S0 = Ø; Q0- = Ø; Q0+ = {x1, x2, x3, x4, x5, x6, x7}; k=0.
2. Прямой шаг:
x1; S1 = {x1}; Q1- = Ø; Q1+ = {x4, x5, x6, x7}; k = 1.
3. Проверка.
Условие не выполняется, переходим к шагу 4 (→ 4).
4. Условие не выполняется → 2.
2. x4; S2 = {x1, x4}; Q2- = Ø; Q2+ = {x7}; k = 2.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x7; S3 = {x1, x4, x7}; Q3- = Ø; Q3+ = Ø; k = 3.
3. Условие не выполняется → 4.
4. S3 = {x1, x4, x7} максимальное независимое множество → 5.
5. k = 2; S2 = {x1, x4}; Q2- = {x7}; Q2+ = Ø → 3.
3. Условие выполняется → 5.
5. k = 1; S1 = {x1}; Q1- = {x4}; Q1+ = {x5, x6, x7} → 3.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x5; S2 = {x1, x5}; Q2- = Ø; Q2+ = {x6}; k = 2.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x6; S3 = {x1, x5, x6}; Q3- = Ø; Q3+ = Ø; k = 3.
3. Условие не выполняется → 4.
4. S3 = {x1, x5, x6} максимальное независимое множество → 5.
5. k = 2; S2 = {x1, x5}; Q2- = {x6}; Q2+ = Ø → 3.
3. Условие выполняется → 5.
5. k = 1; S1 = {x1}; Q1- = {x4, x5}; Q1+ = {x6, x7} → 3.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x6; S2 = {x1, x6}; Q2- = {x5}; Q2+ = Ø; k = 2.
3. Условие выполняется → 5.
5. k = 1; S1 = {x1}; Q1- = {x4, x5, x6}; Q1+ = {x7} → 3.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1}; Q0+ = {x2, x3, x4, x5, x6, x7} → 2.
2. x2; S1 = {x2}; Q1- = Ø; Q1+ = {x3, x5, x7}; k = 1.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x3; S2 = {x2, x3}; Q2- = Ø; Q2+ = Ø; k = 2.
3. Условие не выполняется → 4.
4. S2 = {x2, x3} — максимальное независимое множество → 5.
5. k = 1; S1 = {x2}; Q1- = {x3}; Q1+ = {x5, x7} → 3.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x5; S2 = {x2, x5}; Q2- = Ø; Q2+ = Ø; k = 2.
3. Условие не выполняется → 4.
4. S2 = {x2, x5} — максимальное независимое множество → 5.
5. k = 1; S1 = {x2}; Q1- = {x3, x5}; Q1+ = {x7} → 3.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x7; S2 = {x2, x7}; Q2- = Ø; Q2+ = Ø; k = 2.
3. Условие не выполняется → 4.
4. S2 = {x2, x7} — максимальное независимое множество → 5.
5. k = 1; S1 = {x2}; Q1- = {x3, x5, x7}; Q1+ = Ø → 3.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1, x2}; Q0+ = {x3, x4, x5, x6, x7} → 3.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x3; S1 = {x3}; Q1- = {x2}; Q1+ = {x4, x6}; k = 1.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x4; S2 = {x3, x4}; Q2- = Ø; Q2+ = Ø; k = 2.
3. Условие не выполняется → 4.
4. S2 = {x3, x4} — максимальное независимое множество → 5.
5. k = 1; S1 = {x3}; Q1- = {x2, x4}; Q1+ = {x6} → 3.
3. Условие не выполняется → 4.
4. Условие не выполняется → 2.
2. x6; S2 = {x3, x6}; Q2- = Ø; Q2+ = Ø; k = 2.
3. Условие не выполняется → 4.
4. S2 = {x3, x6} — максимальное независимое множество → 5.
5. k = 1; S1 = {x3}; Q1- = {x2, x4, x6}; Q1+ = Ø → 3.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1, x2, x3}; Q0+ = {x4, x5, x6, x7} → 2.
2. x4; S1 = {x4}; Q1- = {x1, x3}; Q1+ = {x7}; k = 1.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4}; Q0+ = {x5, x6, x7} → 2.
2. x5; S1 = {x5}; Q1- = {x1, x2}; Q1+ = {x6}; k = 1.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4, x5}; Q0+ = {x6, x7} → 2.
2. x6; S1 = {x6}; Q1- = {x1, x3, x5}; Q1+ = Ø; k = 1.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4, x5, x6}; Q0+ = {x7} → 2.
2. x7; S1 = {x7}; Q1- = {x1, x2, x4}; Q1+ = Ø; k = 1.
3. Условие выполняется → 5.
5. k = 0; S0 = Ø; Q0- = {x1, x2, x3, x4, x5, x6, x7}; Q0+ = Ø → останов.
Таким образом, данный граф имеет семь максимальных независимых множеств:
S1 = {x1, x4, x7}; S2 = {x1, x5, x6}; S3 = {x2, x3}; S4 = {x2, x5}; S5 = {x2, x7}; S6 = {x3, x4}; S7 = {x3, x6}.
Ядро множество, которое является одновременно минимальным доминирующим и максимальным независимым.
Утверждение 4.9.1. Конечный граф без петель, не содержащий контуров нечетной длины, обладает ядром.
Понятие, противоположное максимальному независимому множеству, есть максимальный полный подграф. Максимальный полный подграф графа G называется кликой графа. Следовательно, в противоположность максимальному независимому множеству, в котором не могут встретиться две смежные вершины, в клике все вершины попарно смежны. Совершенно очевидно, что максимальное независимое множество графа G соответствует клике графа и наоборот, где – дополнение графа G.
Кликовое число – максимальное число вершин в кликах данного графа.
Утверждение. 4.9.2. Максимальное независимое множество графа G соответствует клике графа G и наоборот.