Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 2.Ненаправленные графы, часть 2.doc
Скачиваний:
36
Добавлен:
13.02.2016
Размер:
540 Кб
Скачать

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) – степень вершины vS в подграфе G(S), где SV.

  1. Найти вершину v с max vPA{ degG(PA)(v) }(вершину с максимальной степенью);

  2. Если имеется несколько вершин с той же степенью, то выбирается любая из них;

  3. CC := CCv;

  4. Построить множество PA и найти степени этого множества degG(PA)(i), iPA;

  5. Повторить 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).

  1. Начальное условие Si:=0;

  2. Если граф не пустой, то случайны образом выбираем вершину vi с наименьшей степенью;

  3. Si:= Si  vi ;

  4. Удалить вершину 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), однако это будет не во всех случаях, т.к. алгоритм – жадный.