Нижегородский государственный университет им. Н.И.Лобачевского
Опубликован: 27.09.2006 | Доступ: свободный | Студентов: 3533 / 125 | Оценка: 4.44 / 4.11 | Длительность: 13:45:00
Специальности: Программист, Математик

Лекция 9: Независимые множества, клики, вершинные покрытия.

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Аннотация: Независимые множества, клики, вершинные покрытия . Три задачи. Стратегия перебора для задачи о независимом множестве. Эвристики для задачи о независимом множестве. Приближенный алгоритм для задачи о вершинном покрытии. Перебор максимальных независимых множеств.

Независимые множества, клики, вершинные покрытия

Во многих задачах на графах требуется найти какой-нибудь максимум или минимум, например, наибольший подграф с заданным свойством, или разбиение графа на наименьшее число частей, удовлетворяющих каким-то условиям, и т.д. В оставшихся лекциях рассматриваются несколько задач такого рода, считающихся классическими в теории графов. Некоторые из них известны как NP-трудные, для них рассматриваются переборные алгоритмы, приемы рационализации, эвристики и приближенные алгоритмы. Для других задач излагаются известные эффективные алгоритмы.

Три задачи

Независимым множеством вершин графа называется любое множество попарно не смежных вершин, т.е. множество вершин, порождающее пустой подграф. Независимое множество называется максимальным, если оно не является собственным подмножеством другого независимого множества, и наибольшим, если оно содержит наибольшее количество вершин. Число вершин в наибольшем независимом множестве графа G обозначается через \alpha (G) и называется числом независимости графа. Задача о независимом множестве состоит в нахождении наибольшего независимого множества.

Кликой графа называется множество вершин, порождающее полный подграф, т.е. множество вершин, каждые две из которых смежны. Число вершин в клике наибольшего размера называется кликовым числом графа и обозначается через \omega (G). Очевидно, задача о независимом множестве преобразуется в задачу о клике и наоборот простым переходом от данного графа G к дополнительному графу \overline{G}, так что \alpha (G)=\omega (\overline{G}).

Вершинное покрытие графа - это такое множество вершин, что каждое ребро графа инцидентно хотя бы одной из этих вершин. Наименьшее число вершин в вершинном покрытии графа G обозначается через \beta(G) и называется числом вершинного покрытия графа. В графе на рис. 9.1 наибольшим независимым множеством является множество \{1, 3, 4, 7\}, наибольшей кликой - множество \{2, 3, 5, 6\}, наименьшим вершинным покрытием - множество \{2, 5, 6\}.


Рис. 9.1.

Между задачами о независимом множестве и о вершинном покрытии тоже имеется простая связь благодаря следующему факту.

Теорема 1. Подмножество U множества вершин графа G является вершинным покрытием тогда и только тогда, когда \overline{U}={VG-U} - независимое множество.

Доказательство. Если U - вершинное покрытие, то всякое ребро содержит хотя бы одну вершину из множества U и, значит, нет ни одного ребра, соединяющего две вершины из множества \overline{U}. Следовательно, \overline{U} - независимое множество. Обратно, если \overline{U} - независимое множество, то нет ребер, соединяющих вершины из \overline{U} и, значит, у каждого ребра одна или обе вершины принадлежат множеству U. Следовательно, U - вершинное покрытие.

Из этой теоремы следует, что \alpha(G)+\beta(G)=n для любого графа G с n вершинами.

Таким образом, все три задачи тесно связаны друг с другом, так что достаточно научиться решать одну из них, и мы будем уметь решать остальные две. Вместе с тем известно, что эти задачи NP-полны. Для таких задач не известно эффективных алгоритмов, а накопленный к настоящему времени опыт делает правдоподобным предположение о том, что таких алгоритмов и не существует. Тем не менее, алгоритмы для подобных задач разрабатывались и продолжают разрабатываться, и в некоторых случаях они могут быть полезны. Все эти алгоритмы в той или иной форме осуществляют перебор вариантов (число которых может быть очень большим). Далее рассмотрим один из способов такого перебора для задачи о независимом множестве.

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Петр Петров
Петр Петров

произведение графов К(2)*О(4) фактически 4 отдельных графа К(2)?

Александр Лаврентьев
Александр Лаврентьев

много инструкций вида if - then - else

Например Procedure DFS(a) опишите каким образом следует понимать вложенность инструкций. Как в языке С ? 

т.е. следующее 

if (...) then (...)

if (...) then (...)

else(...)

 

раскрывается как 

if (...) then (...)

if (...) then (...)

         else(...)

или так :

if (...) then

 {  (...)

     if (...) then (...)

              else(...)

}

обьясните пожалуйста.

 

 

Дмитрий Крюков
Дмитрий Крюков
Россия, Москва
Андрей Посохов
Андрей Посохов
Россия, Санкт-Петербург