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

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

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

Будем теперь рассматривать множества из L одно за другим и пусть M - очередное такое множество. Положим N=M\cap U. Если N не является максимальным независимым множеством графа G', то переходим к следующему элементу списка L. Если же N - максимальное независимое множество в G', то рассматриваем множество M-N. Если оно является лексикографически первым среди максимальных независимых множеств подграфа, порожденного множеством VG-(U\cup V(N)), то включаем N в список L'.

Выберем в графе G произвольную вершину a и пусть A - множество всех вершин графа, смежных с a (окрестность вершины a ), B - множество всех вершин, не смежных с a и отличных от a. Обозначим через G_{1} подграф, получающийся удалением из графа G вершины a, а через G_{2} подграф, получающийся удалением из G всех вершин множества A\cup \{ a\}. Иначе говоря, G_{1} - подграф графа G, порожденный множеством A\cup B, а G_{2} - подграф, порожденный множеством B.

Допустим, что имеется список L_{1} всех максимальных независимых множеств графа G_{1}. На основании вышеизложенного можно предложить следующую процедуру получения списка L всех максимальных независимых множеств графа G.

  1. Взять очередной элемент M списка L_{1}.
  2. Если M\subseteq B, то добавить к списку L множество M\cup \{a\} и перейти к 1, иначе добавить к списку L множество M.
  3. Если множество M\cap B не является максимальным независимым множеством в графе G_{2}, то перейти к 1.
  4. Если множество N=M\cap A является лексикографически первым максимальным независимым множеством подграфа, порожденного множеством A-V(M\cap B), то добавить к списку L множество {M\cup \{ a\}}.
  5. Если список L_{1} не исчерпан, перейти к 1.

Начиная с одновершинного графа (у которого список максимальных независимых множеств состоит из одного элемента), добавляя последовательно по одной вершине, получаем последовательность графов G_{1} ,G_{2}\ldots G_{n}
=G. Применяя для каждого i=1\ldots n-1 описанный алгоритм для построения списка всех максимальных независимых множеств графа G_{i+1} по такому списку для графа G_{i}, в конце концов получим список всех максимальных независимых множеств графа G. По сути дела, этот алгоритм представляет собой поиск в ширину в дереве вариантов. Для того чтобы не хранить все получающиеся списки, его можно преобразовать в поиск в глубину. Заметим, что приведенная процедура для каждого максимального независимого множества графа G_{i} находит одно или два максимальных независимых множества графа G_{i+1}. Одно из этих новых множеств рассматривается на следующем шаге, другое, если оно есть, запоминается в стеке.

Изложенный алгоритм можно применить для поиска наибольших независимых множеств в графах, про которые известно, что в них мало максимальных независимых множеств. Одним из классов графов с таким свойством является класс всех графов, не содержащих 2K_{2} в качестве порожденного подграфа. Известно, что в графе с m ребрами из этого класса число максимальных независимых множеств не превосходит m+1$.

< Лекция 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(...)

}

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