2.9. Подструктуры графа
2Определения
.9.1. Клика
Кликой графа G=(V,E) называется любой полносвязный подграф графа G=(V,E).
В
Примеры
2
В данном примере имеется несколько
клик с тремя вершинами (например,
V={2,3,4}), однако наибольшая
клика одна – V={3,4,5,6}
3
4
6
5
1
8
7
9
Рис.2.9.1. Клика и наибольшая клика графа
Меры
(G) – число клики, равное числу вершин наибольшей клики.
Класс сложности
Нахождение клики графа относится к NP-полному классу, а проблема определения наибольшей клики – NP-тяжелая.
Точное решение
Существуют точные решения проблемы наибольшей клики (например, методом ветвей и границ), однако время расчета растет экспоненциально с увеличением размерности графа.
Эвристические алгоритмы
Существуют несколько типов эвристических алгоритмов решения проблемы наибольшей клики в полиномиальное время:
последовательные жадные;
локального исследования;
генетические;
нейронных сетей;
муравьиные.
Простой алгоритм
Один из простейших жадных последовательных алгоритмов поиска максимальной клики носит английское название: 1-opt local search with add move for the MCP.
Введем следующие обозначения:
CC – текущая клика;
PA – множество вершин возможных добавлений, т.е. множество вершин, соединенных ребрами со всеми вершинами текущей клики СС;
degG(S)(v) – степень вершины vS в подграфе G(S), где SV.
Найти вершину v с max vPA{ degG(PA)(v) }(вершину с максимальной степенью);
Если имеется несколько вершин с той же степенью, то выбирается любая из них;
CC := CCv;
Построить множество PA и найти степени этого множества degG(PA)(i), iPA;
Повторить 1 до тех пор, пока PA:=0.
Пример
Задан граф и его таблица инцидентности:
max vPA{
degG(PA)(v)
} для начала алгоритма
1
3
6
--
2
2
3
4
--
3
3
1
2
4
5
7
--
4
4
2
3
5
6
--
1
6
5
5
3
4
6
7
8
--
6
1
3
4
5
7
9
--
7
8
9
7
5
6
8
9
--
8
5
7
9
--
9
6
7
8
--
deg1(G)=2;deg2(G)=2;
deg3(G)=5;
deg4(G)=4;deg5(G)=5;
deg6(G)=6;
deg7(G)=4;deg8(G)=3;
deg9(G)=3
Шаг 1. Находим вершину с наибольшей степенью – вершину 6, ее степень равна 6.
Шаг 2. Текущая клика равна
СС:= 6
Шаг 3. Множество вершин, соединенных ребрами со всеми вершинами текущей клики (на первом шаге – это строка таблицы инцидентности для вершины 6), и их степени:
PA:= {1,3,4,5,7,8)
degG(PA) : 2,5,4,5,4,3
Шаг 4. Выбираем из PA вершину с наибольшей степенью. Таких вершин две: 3 и 5. Произвольно выбираем вершину 3.
Шаг 5. Текущая клика равна:
СС:= {3,6}.
Шаг 6. Находим вершины, инцидентные ко всем вершинам текущей клики (имеющие ребра ко всем вершинам текущей клики):
PA:= {1,4,5}.
Их степени равны degG(PA) : 2,4,5.
Шаг 7. Выбираем в РА вершину с наибольшей степенью – вершину 5.
Шаг 8. Текущая клика равна:
СС:= {3,5,6}.
Шаг 9. Находим вершины, инцидентные ко всем вершинам текущей клики (имеющие ребра ко всем вершинам текущей клики):
PA:= {4}.
Степень вершины 4 равна четырем.
Шаг 10. Текущая клика равна:
CC:={3,4,5,6}.
Шаг 11. Находим вершины, инцидентные ко всем вершинам текущей клики (имеющие ребра ко всем вершинам текущей клики):
PA:= { }.
PA пусто, алгоритм стоп.
Найдена максимальная клика (возможно максимальная) клика. В этом можно убедиться, вернувшись к рис.2.9.1.
2.9.2. Независимое множество вершин
Определения
Независимое множество вершин S есть такое подмножество вершин графа G, что любые две вершины в нем не смежны (никакая пара вершин не соединена ребром).
Среди всех возможных независимых множеств Si выделяют наибольшее – максимальное независимое множество вершин.
Пример
Независимые множества вершин S1={1,3}
S2={4,6} S3={1,4}
S4={3,6} S5={1,3,7}
S6={2,7,8} S7={2,4,8}
S8={2,5,7,8}
4
3
2
1
6
8
7
5
Максимальное независимое множество
вершин S8
={2,5,7,8}
Рис.2.9.2. Независимые множества вершин
Меры
(G) – число независимости, определяемое числом вершин максимального независимого множества вершин.
Класс сложности
Проблема нахождения независимого множества вершин является NP-полной, а проблема нахождения максимального независимого множества вершин – NP-тяжелой.
Точные решения
Как и в случае проблемы нахождения максимальной клики существуют точные алгоритмы решения, однако они имеют экспоненциальную сложность. Точные решения удается получить для графов с числом вершин менее 500.
Эвристические алгоритмы
Относятся к тем же группам, что и для проблемы нахождения максимальной клики.
Жадный алгоритм
Введем следующее обозначение:
Si – независимое множество вершин графа G=(V,E).
Начальное условие Si:=0;
Если граф не пустой, то случайны образом выбираем вершину vi с наименьшей степенью;
Si:= Si vi ;
Удалить вершину vi и все инцидентные к ней вершины. Перейти к п.2.
Пример
4
3
2
1
Начальное условие: Si:=0
6
8
7
5
Шаг 1. Определяем степени вершин: deg1=3; deg2=3; deg3=3; deg4=3; deg5=3; deg6=5; deg7=2; deg8=2.
Имеется две вершины (7 и8) с одинаковой минимальной степенью. Выбираем вершину 8.
Si:={8}
У
даляем
вершину 8 и все инцидентные ей вершины
(вершины 1 и 6). Получаем подграф
Шаг 2. Определяем степени вершин подграфа, полученного на предыдущем шаге: deg2=1; deg3=3; deg4=3; deg5=2; deg7=1.
Имеется две вершины минимальной степени – вершины 2 и 7. Выбираем вершину 2.
Si:={2,8}
Удаляем вершину 2 и инцидентную ей вершину 3. Получаем подграф
4
7
5
Шаг 3. Определяем степени вершин подграфа, полученного на предыдущем шаге: deg4=3; deg5=2; deg7=1.
Вершина 7 имеет наименьшую степень.
Si:={2,7,8}
Удаляем вершину 7 и инцидентную ей вершину 4. Получаем подграф, состоящий из одной вершины 5.
Si:={2,5,7,8}
Граф пустой, алгоритм стоп.
Полученное множество независимых вершин совпало с максимальным (см.рис.2.9.2), однако это будет не во всех случаях, т.к. алгоритм – жадный.
