
- •Методическое пособие по дисциплине Теория сложности вычислений
- •6.080200 Прикладная математика
- •Симферополь, 2004
- •Основные понятия теории алгоритмической
- •Сложности решения дискретных задач
- •1.Алгоритм
- •2. Класс p и эффективные вычисления
- •Значение разбиения задач на классы по сложности становится понятным, если рассмотреть следующие практические соображения.
- •3. Недетерминированные алгоритмы и класс np.
- •4. Класс nр - полных задач
- •Теорема 4.1 [1].
- •5. Теорема Кука: первая nр - полная задача
- •Теорема_5.1. (Сoоk s.A., 1971).
- •Введем вспомогательную функцию
- •6. Другие nр- полные задачи.
- •7. Пример доказательства np- полноты задачи методом сведения.
- •8. Список nр- полных задач.
- •9. Матроиды и жадные алгоритмы.
- •Задача 9.2. Дана матрица с целыми неотрицательными
- •Задача 9.3. Дано конечное множество е, семейство его подмножеств ( - булеан множества е) и функция
- •Множество b j не будет содержаться во множестве s, выбранном
- •Содержание
7. Пример доказательства np- полноты задачи методом сведения.
Пусть Г =(Х,U) - конечный граф , Х - множество вершин графа,
U - множество дуг.
Не теряя общности, можно обозначить
вершины натуральными числами: Х =
{1,2,..., n}, а дуги задать булевой матрицей
такой, что
,
если дуга ( i,j) имеется в графе Г, и
,
если дуги ( i,j) в графе Г нет.
Граф называют полным, если любые его две вершины соединены
дугой.
Граф
называют подграфом
графа Г, если
и
.
Задача о полном подграфе состоит в том, чтобы по заданному
графу
Г выяснить, существует ли в Г полный
подграф с
верши-нами.
Теорема 7.1. Задача о полном подграфе является NP- полной, Доказательство.
Для
удобства обозначим задачу о полном
подграфе
.
Начальной
информацией о задаче является число и матрица а) Докажем, что NP. Для этого выписываем N- программу:
/* Предположим, k-полный подграф существует */
УСПЕХ := TRUE;
/* Недетерминированный выбор k вершин */
Set := [1..n];
for i := 1 to k dо
begin
node:= сhoose(Sеt);
v[i]:= node;
Set:=Set\(nodе);
еnd;
/* Полиномиальная проверка */
for i := 1 tо k-1 do
for j := i+1 tо k dо
if u(v[i] ,v[j])=0 then УСПЕХ:=FALSE;
write(УСПЕХ);
Очевидно, что сложность приведенной N-программы может быть оценена как О(n(n-1 )/2) , т.е. полиномиально, откуда следует, что
NP.
б) Докажем, что . Поскольку мы убедились, что
-- NP- полная задача, то из полиномиальной сводимости будет следовать полиномиальная сводимость любой задачи класса NP к .
Пусть
есть
произвольная k скобочная КНФ. Поставим
во взаимно-однозначное соответствие
каждому литералу из Ф вершину некоторого
графа Г. Этот граф будет содержать
вершин. Пометим для удобства каждую
вершину соответствующим ей литералом
и порядковым
номером скобки, в которую этот литерал входит, т.е. парой
Соединим дугой те, те и только те пары полученных вершин
и
для которых одновременно выполняются два условия:
а)
(литералы принадлежат разным скобкам);
б)
(один
литерал не является отрицанием другого).
Таким образом, построен граф Г =(X,U) с указанными вершинами и дугами.
Предположим,
- что Ф
- выполнима и
-набор, на котором
Тогда в каждом наборе КНФ Ф
найдется хота бы один литерал, обращающийся
в единицу. Выберем произвольно по одному
такому (обращающемуся в единицу) литералу
из каждой скобки. Будет выбрано ровно
k литералов. Рассмотрим соответствующие
именно этим литералам k вершин графа Г
и убедимся, что любая пара из них соединена
дугой. Действительно, пометки этих
вершин удовлетворяют условиям а) и б),
т.к. литералы принадлежат разным скобкам
и одновременно принимают единичное
значение, поэтому один из них не может
быть инверсией другого.
Обратно, пусть граф Г полный подграф с k вершинами
зададим переменным
с номерами
значения:
,
а остальные переменные,
если k < n , зададим произвольно, получая набор . Тогда
Поскольку
эти литералы соответствуют вершинам
полного подграфа, то они относятся к
разным скобкам КНФ Ф
, откуда следует, что
.
По построению графа Г очевидно, что
преобразование задачи выполни-мости
КНФ в задачу
может быть осуществлено с полиномиальной
сложностью.
Теорема доказана.