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

Рационализация переборных алгоритмов

< Лекция 10 || Лекция 11: 123 || Лекция 12 >

Хордальные графы

Граф называется хордальным (или триангулированным ), если в нем нет порожденных простых циклов длины \ge 4. Иначе говоря, в хордальном графе для каждого простого цикла длины 4 или больше имеется хотя бы одна хорда - ребро, не принадлежащее циклу, но соединяющее две вершины цикла.

Теорема 2. В любом непустом хордальном графе имеется смежно поглощающая вершина.

Доказательство. Пусть G - непустой граф, в котором нет смежно поглощающих вершин. Докажем, что G - не хордальный. Рассмотрим в нем простой путь P=x_{1},x_{2} \ldots x_{k} наибольшей длины, не имеющий хорд, то есть ребер, соединяющих две вершины пути и не принадлежащих пути. Так как граф непустой, то k\ge 2. Рассмотрим вершину x_{k}. Так как она не поглощает вершину x_{k-1}, то существует вершина y\ne x_{k-1}, смежная с вершиной x_{k}, но не смежная с x_{k-1}. Вершина y не принадлежит пути P, так как иначе ребро (x_{k}, y) было бы хордой этого пути. Таким образом, последовательность P'=x_{1},x_{2}\ldots
x_{k},y является простым путем. Но длина этого пути больше, чем длина пути P, поэтому, в силу выбора пути P, у пути P' должна существовать хорда. Такой хордой может быть только ребро вида (y,x_{i}), где i\le k-2. Пусть i - наибольшее, при котором ребро (y,x_{i}) является хордой пути P'. Тогда последовательность y,x_{i},x_{i+1} \ldots x_{k},y является циклом без хорд длины не менее 4.

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

Рационализация алгоритма для задачи о раскраске вершин

В описанную схему решения задачи о раскраске можно включить тот же прием сжатия по включению, что и для задачи о независимом множестве. Небольшое отличие состоит в том, что теперь вершины a и b должны быть несмежны. Итак, пусть в графе G имеются две несмежные вершины a и b, такие, что V(a)\subseteq V(b). Будем говорить, что вершина b несмежно поглощает вершину a, а вершину a называть несмежно поглощаемой. В графе на рис. 11.1 вершина 1 несмежно поглощает вершину 4, а вершина 3 - вершину 7.

Теорема 3. Если вершина a является несмежно поглощаемой в графе G, то \chi (G-a)=\chi (G).

Доказательство. Допустим, вершина a несмежно поглощается вершиной b. Рассмотрим правильную раскраску графа G-a в наименьшее число цветов. Применим эту же раскраску к графу G, окрасим вершину a в тот цвет, который имеет вершина b. Так как вершина a смежна только с такими вершинами, с которыми смежна b, то получится правильная раскраска графа G в то же самое число цветов. Следовательно, \chi (G)=\chi (G-a).

Как и для задачи о независимом множестве, для некоторых графов этот прием позволяет находить решение, совсем не прибегая к перебору. Допустим, вершина b смежно поглощает вершину a в графе G. Тогда в дополнительном графе \overline{G}, очевидно, вершина a будет несмежно поглощать вершину b. Верно и обратное утверждение. Поэтому из теоремы 2 следует

Теорема 4. В любом графе, дополнительном к хордальному и не являющемся полным, имеется несмежно поглощаемая вершина.

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

Установим сначала некоторые свойства хордальных графов. Подмножество множества вершин графа называется разделяющим множеством, если удаление всех этих вершин приводит к увеличению числа компонент связности. Таким образом, понятие разделяющего множества является обобщением понятия шарнира. Разделяющее множество называется минимальным, если оно не содержится в большем разделяющем множестве.

< Лекция 10 || Лекция 11: 123 || Лекция 12 >
Петр Петров
Петр Петров

произведение графов К(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(...)

}

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

 

 

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