2. Труднорешаемые задачи
Определение
Алгоритмическая задача называется труднорешаемой, если для нее
не существует полиномиального алгоритма.
Существуют ли разрешимые задачи, которые тем не менее не
принадлежат классу P. Ответ — «теорема об иерархии».
Теорема
Существует алгоритмическая задача, разрешимая некоторым
алгоритмом сложности nO(log n) , но не принадлежащая классу P.
2 / 29
3. Сводимость по Куку
Определение
Алгоритмическая задача P1 полиномиально сводится к задаче P2 ,
если существует полиномиальный алгоритм для решения задачи P1 ,
возможно вызывающий в ходе своей работы процедуру для решения
задачи P2 .
Проблема — переполнение памяти.
t
Вычисление 22
Вход: Натуральное t
R←2
for all i ∈ 1..t do
R ←R ×R
end for
P получается незамкнут. Выход: рассматривать только «задачи
разрешения».
3 / 29
4. Дискретные задачи оптимизации
Задача
«Коммивояжер», «TSPa ». Заданы неориентированный граф из n
вершин-городов, и dij ≡ d(vi , vj ) — положительные целые расстояния
между городами.
Чему равна наименьшая возможная длина кольцевого маршрута,
проходящего по одному разу через все города? Т.е. нужно найти
минимально возможное значение суммы
n−1
min dpi ,pi+1 + dpn ,p1 , (1)
1 2 . . . n i=1
p∈
. . . .
где минимум берется по всем перестановкам p чисел 1, . . . , n.
a
В англоязычной литературе — Traveling Salesman Problem.
4 / 29
5. Переборные задачи разрешения
Задача
«TSP-разрешимость». Заданы n городов c1 , . . . , cn и попарные
расстояния dij ≡ d(ci , cj ) между ними, являющиеся положительными
целыми числами, и положительное целое B.
Верно ли, что минимально возможное значение суммы (1) меньше B?
5 / 29
6. Сведение бинарным поиском
Вход: m > 0, dij > 0, ∀i, j ∈ (1, . . . , m)
Выход: Перестановка πopt , такая, что сумма (1) минимальна.
{ Используется процедура TSPbool (m, D, B) для задачи «TSP-разрешимость»}
Bmin ← 0
Bmax ← m · max1≤i<j≤m d(ci , cj ) {Bmin ≤ (1) ≤ Bmax , где TSPbool (m, d)}
while Bmax − Bmin > 1 do
B ← (Bmin + Bmax )/2
if TSPbool (m, D, B) then
Bmax ← B
else
Bmin ← B
end if
end while
if TSPbool (m, D, Bmin ) then
return Bmin
else
return Bmax
end if
6 / 29
7. Недетерминированная машина Тьюринга
Определение
Недетерминированная машина Тьюринга (НМТ) — это набор
T = k, Σ, Γ, Φ , где k ≥ 1 — натуральное число (число лент),
Σ, Γ — конечные множества, ∈ Σ, START , STOP ∈ Γ,
а Φ — произвольное отношение:
Φ ⊂ (Γ × Σk ) × (Γ × Σk × {−1, 0, 1}k ).
Переход из состояния g , с символами на лентах h1 , . . . , hk будет
допустим, если новое состояние g , записанные символы h1 , . . . , hk и
смещения головок ε1 , . . . , εk удовлетворяют соотношению
(g , h1 , . . . , hk , g , h1 , . . . , hk , ε1 , . . . , εk ) ∈ Φ.
Недетерминированный алгоритм по определению выдает
окончательный ответ 1, если существует хотя бы один путь развития
вычисления, на котором выдается ответ 1,
и 0 — в противном случае. 7 / 29
8. Временная сложность для НМТ
Классы N T IME(f (n)), N SPACE(f (n)) определяются аналогично
классам DT IME(f (n)), DSPACE(f (n)).
Но для МТ классы сложности языков замкнуты относительно
дополнения.
coDT IME(f (n)) ≡ {L|L ∈ DT IME(f (n))}
coDT IME(f (n)) = DT IME(f (n))
А классы сложность НМТ — нет.
?
coN T IME(f (n)) = N T IME(f (n))
?
coN SPACE(f (n)) = N SPACE(f (n))
8 / 29
9. Классы N P и coN P
Определение
N P = ∪c>0 N T IME(nc ),
coN P = {L|L ∈ N P}.
Упражнение
Покажите, что P ⊆ N P ∩ coN P.
Упражнение
Покажите, что N P ⊆ PSPACE
9 / 29
10. Определение N P через ДМТ
Определение
Язык L ⊆ Σ∗ принадлежит классу N P, если существуют
полиномиальная детерминированная машина Тьюринга M и полином
p(·), такие, что L = {x ∈ Σ∗ : ∃ y , |y | < p(|x|)& M(x, y ) = 1}.
Слово y называется обычно «подсказкой», «свидетелем» (witness),
«доказательством» (proof ).
Теорема
Определения «N P/НМТ» и «N P/ДМТ» эквивалентны.
10 / 29
11. «N P/НМТ» ⇔ «N P/ДМТ»
Доказательство.
⇒: ∀x ∈ L → подсказка y : закодированный кратчайший протокол
выполнения-подтверждения НМТ T, определяющей L, в смысле
определения «N P/НМТ».
Длина кратчайшего пути-подтверждения T(x) полиномиально
ограничена ⇒ y (x) — полиномиально ограничена.
Проверка протокола y (x): полиномиальное время.
⇐: Пусть НМТ T, недетерминированно дописывает разделитель #
и некоторое слово y , к входному слову x, а затем работает над словом
x#y , как полиномиальная детерминированная машины Тьюринга из
определения «N P/ДМТ».
11 / 29
12. «N P/НМТ» ⇔ «N P/ДМТ»
Доказательство.
⇒: ∀x ∈ L → подсказка y : закодированный кратчайший протокол
выполнения-подтверждения НМТ T, определяющей L, в смысле
определения «N P/НМТ».
Длина кратчайшего пути-подтверждения T(x) полиномиально
ограничена ⇒ y (x) — полиномиально ограничена.
Проверка протокола y (x): полиномиальное время.
⇐: Пусть НМТ T, недетерминированно дописывает разделитель #
и некоторое слово y , к входному слову x, а затем работает над словом
x#y , как полиномиальная детерминированная машины Тьюринга из
определения «N P/ДМТ».
12 / 29
13. «N P/НМТ» ⇔ «N P/ДМТ»
Доказательство.
⇒: ∀x ∈ L → подсказка y : закодированный кратчайший протокол
выполнения-подтверждения НМТ T, определяющей L, в смысле
определения «N P/НМТ».
Длина кратчайшего пути-подтверждения T(x) полиномиально
ограничена ⇒ y (x) — полиномиально ограничена.
Проверка протокола y (x): полиномиальное время.
⇐: Пусть НМТ T, недетерминированно дописывает разделитель #
и некоторое слово y , к входному слову x, а затем работает над словом
x#y , как полиномиальная детерминированная машины Тьюринга из
определения «N P/ДМТ».
13 / 29
14. «N P/НМТ» ⇔ «N P/ДМТ»
Доказательство.
⇒: ∀x ∈ L → подсказка y : закодированный кратчайший протокол
выполнения-подтверждения НМТ T, определяющей L, в смысле
определения «N P/НМТ».
Длина кратчайшего пути-подтверждения T(x) полиномиально
ограничена ⇒ y (x) — полиномиально ограничена.
Проверка протокола y (x): полиномиальное время.
⇐: Пусть НМТ T, недетерминированно дописывает разделитель #
и некоторое слово y , к входному слову x, а затем работает над словом
x#y , как полиномиальная детерминированная машины Тьюринга из
определения «N P/ДМТ».
14 / 29
15. Сводимость по Куку: незамкнутость N P и coN P
Задача разрешения «Comm(m, d) > B» (в которой спрашивается
верно ли, что любой маршрут коммивояжера имеет длину по крайней
мере (B + 1)), принадлежит классу coN P и не принадлежит классу
N P, при общепринятой гипотезе P = N P.
В то же время она очевидным образом сводится по Куку к переборной
задаче «TSP-разрешимость», принадлежащей классу N P.
15 / 29
16. Сводимость по Карпу
Определение
Задача разрешения P1 полиномиально сводится к задаче
разрешения P2 , если существует полиномиально вычислимая функция
f , перерабатывающая массивы входных данных I1 для задачи P1
в массивы входных данных I2 ≡ f (I1 ) для задачи P2 таким образом,
что для любого I1 ответ в задаче P1 совпадает с ответом задачи P2
для входных данных f (I1 ).
16 / 29
17. N P-полные задачи
Определение
Задача разрешения называется N P-полнойa , если она сама
принадлежит классу N P, а с другой стороны, произвольная задача из
N P сводится к ней полиномиально (См. определение «Сводимость
по Карпу»). Класс N P-полных задач обозначается N PC.
a
Чтобы не перегружать лекции излишней терминологией, мы будем называть
в дальнейшем оптимизационную задачу N P-полной, если N P-полна
соответствующая задача разрешения.
Обратите внимание, что в определение задачи N PC обязательно
входит принадлежность классу N P — если опустить это условие,
получится класс N P-трудных (N P-hard ) задач, включающих N PC,
но выходящих за границы класса N P (при гипотезе P = N P).
17 / 29
18. Первая N P-полная задача
Задача
«Выполнимость/SAT»a . Дано булевское выражение, являющееся
коньюнктивной нормальной формой (КНФ):
m
CNF = Ci , (2)
i=1
где Ci — элементарные дизъюнкции вида
xjσ1 ∨ . . . ∨ xjσk ,
1 k
(3)
1 ≤ k ≤ n, σj ∈ {0, 1}, x 1 = x и x 0 = (¬x).
Существует ли (булевский) набор переменных xj , обращающий эту
форму в 1 (т.е. в «Истину»)?
a
В англоязычной литературе — Satisfiability или просто SAT.
18 / 29
19. Задача «SAT» — N P-полна.
Доказательство.
∀x, кодирующего выполнимую входную КНФ, ∃y — значения
переменных, при которых эта КНФ выполняется, это проверяется за
полиномиальное время ⇒ задача «SAT»∈N P.
Рассмотрим произвольный язык L ∈ N P: ⇒
∀x ∈ L, ∃y (x) : |y (x)| < poly (|x|), и ∃ МТ M, распознающая
Ly = {x#y (x)|x ∈ L} за полиномиальное время (и полиномиальную
память).
Процесс вычисления на x длины n можно представить таблицей
вычисления размера T × S, где T = poly(n), S = poly(n).
19 / 29
20. Задача «SAT» — N P-полна.
Доказательство.
t=0 Γ0,1
t=1
...
t=j Γleft Γ Γright
t =j +1 Γ
...
t=T ...
S клеток
Ячейка (i, j): если головка на i-й позиции, то состояние МТ, иначе ∅.
Ячейки, кодирующие часть клеток нулевой строки, определяются x,
Результат вычисления в ячейке (t, 0).
20 / 29
21. Задача «SAT» — N P-полна.
Доказательство.
Ячейки ≡ переменные, вся таблица ≡ формула (в форме КНФ).
Чтобы таблица вычисления соответствовала правильно проведённому
успешному (с ответом 1) вычислению, должны выполняться
локальные правила согласования для каждой четвёрки клеток вида
и результат должен быть 1.
ϕx — конъюнкция всех этих формул, первая строка — x#y ,
x# – константы, остальные ячейки — переменные (y и z).
M распознает x#y ⇒ ∃z(x, y ) : ϕx (y , z(x, y )) = 1.
M не распознает x#y ⇒ ϕx (y , z) ≡ 0.
21 / 29
22. Доказательство через сводимость
Если N P-полная задача P1 полиномиально сводится к переборной
задаче P2 , то P2 также N P-полна.
Задача
«3-Выполнимость/3SAT».
Вариант задачи «SAT», где каждая элементарная дизъюнкция (3)
имеет длину k ≤ 3. Соответствующие КНФ называются 3-КНФ.
Заменим каждую элементарную дизъюнкцию с k > 3 на:
σ
yi2 ≡ (xjσ1 ∨ xjσ2 ) ∧ yi3 ≡ (yi2 ∨ xjσ3 ) ∧ ... ∧ yik ≡ (yi,k−1 ∨ xj k ) ∧ yik ,
1 2 3 k
где yi2 , . . . , yik — новые булевы переменные, и трансформируем
yiν ≡ (yi,ν−1 ∨ xjσν ) в 3-КНФ.
ν
Задача «3SAT» — N P-полна.
22 / 29
23. «2SAT» ∈ P
Задача
«2-Выполнимость»(2SAT). Частный случай задачи «SAT», в котором
каждая элементарная дизъюнкция имеет длину k ≤ 2.
Соответствующие КНФ называются 2-КНФ.
Можно исключить все дизъюнкции, состоящие из одного терма:
Если (xi ) ⇒ xi ≡ 1 ⇒ выкидываем все дизъюнкты с xi
в положительной степени, а из дизъюнктов содержащих ¬xi ,
выкидываем ¬xi (т.к. ¬xi ≡ 0). Если есть дизъюнкт (¬xi ) — формула
неразрешима.
Аналогично для (¬xi ).
⇒ все дизъюнкты в КНФ из двух термов.
23 / 29
24. «2SAT» ∈ P
x ∨ y ≡ (¬x → y ) ∧ (¬y → x)
2SAT-формула, с n переменных xi ⇒ ориентированный граф:
2n узлов: ∀i xi , ¬xi
2m дуг: дизъюнкция (x ∨ y ) → дуги (¬x → y ) и (¬y → x).
(x ∨ y ) ∧ (y ∨ z) ∧ (x ∨ z) (x ∨ y ) ∧ (y ∨ z) ∧ (x ∨ z) ∧ (x ∨ z) ∧ (y ∨ z)
24 / 29
25. «Вершинное покрытие»
Задача
«Вершинное покрытие»a .
Дан граф G = (V , E ) и положительное целое число K , K ≤ |V |.
Имеется ли в графе G вершинное покрытие не более чем из K
элементов, т.е. такое подмножество V ⊆ V , что |V | ≤ K и каждое
ребро из E содержит хотя бы одну вершину из V ?
a
В англоязычной литературе — Vertex Covering.
Лемма
Задача «Vertex Covering» лежит в N PC.
25 / 29
26. Задача «Vertex Covering» ∈ N PC
3-КНФ от x1 , . . . , xn , k = 3 для всех (m) ЭД.
∀j xj ⇒ дуга (xj , ¬xj )
∀ ЭД ⇒ треугольник (vi1 , vi2 , vi3 )
соединяем дугами vi1 c xjσ1 , vi2 — c xjσ2 и vi3 — c xjσ3 .
1 2 3
Вершинное покрытие должно иметь
(x1 ∨ x2 ∨ x4 ) ∧ (x2 ∨ x3 ∨ x4 ) ∧ (x1 ∨ x2 ∨ x4 )
размер не менее (n + 2m) (n вершин на
(xj , ¬xj ) и 2m на (vi1 , vi2 , vi3 )).
Если есть выполняющий набор для
3КНФ, то существует вершинное
покрытие размера (n + 2m): xj если xj = 1
(иначе ¬xj ), этим «покрываем» по одной
вершине в каждом треугольнике.
Чтобы покрыть остальные, нужно + две
Выполнимо при x1 = 0, x2 = 1
вершины, чтобы покрыть треугольник.
(x3 , x4 — любые).
26 / 29
27. ?
P = NP
N P-трудные задачи
N PC-задача
N PC
NP P coN P
Сводимость по Карпу
N P-задача
«Экспертное мнение» считает, что P = N P.
27 / 29