1. Алгоритмы для NP-трудных задач
Лекция 1: NP-полные задачи
Александр Куликов
Петербургское отделение Математического института им. В. А. Стеклова
Российская академия наук
Computer Science клуб в Екатеринбурге
1 марта 2013
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 1 / 31
2. 1 Задачи поиска
2 NP-полные задачи
3 Сведения
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 2 / 31
3. Содержание
1 Задачи поиска
2 NP-полные задачи
3 Сведения
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 3 / 31
5. Эффективные алгоритмы
Алгоритмы нахождения кратчайших путей и минимальных
покрывающих деревьев в графах, паросочетаний в
двудольных графах, наибольшей возрастающей
подпоследовательности, максимального потока в сети
являются эффективными, поскольку время работы каждого
из них растет полиномиально (как n, n2 , n3 ) с ростом
размера входа.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 4 / 31
6. Эффективные алгоритмы
Алгоритмы нахождения кратчайших путей и минимальных
покрывающих деревьев в графах, паросочетаний в
двудольных графах, наибольшей возрастающей
подпоследовательности, максимального потока в сети
являются эффективными, поскольку время работы каждого
из них растет полиномиально (как n, n2 , n3 ) с ростом
размера входа.
В каждой из решаемых ими задач мы ищем решение (путь,
дерево, паросочетание) среди экспоненциально большого
множества кандидатов: существует n! различных
паросочетаний в двудольном n × n графе, у полного графа
на n вершинах есть nn−2 покрывающих деревьев, в графе,
как правило, есть экспоненциальное число путей из s в t.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 4 / 31
7. Эффективные алгоритмы
Алгоритмы нахождения кратчайших путей и минимальных
покрывающих деревьев в графах, паросочетаний в
двудольных графах, наибольшей возрастающей
подпоследовательности, максимального потока в сети
являются эффективными, поскольку время работы каждого
из них растет полиномиально (как n, n2 , n3 ) с ростом
размера входа.
В каждой из решаемых ими задач мы ищем решение (путь,
дерево, паросочетание) среди экспоненциально большого
множества кандидатов: существует n! различных
паросочетаний в двудольном n × n графе, у полного графа
на n вершинах есть nn−2 покрывающих деревьев, в графе,
как правило, есть экспоненциальное число путей из s в t.
Цель эффективного алгоритма: избежать полного перебора.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 4 / 31
9. Задача выполнимости
Вход задачи пропозициональной выполнимости (satisfiability
problem, SAT) выглядит следующим образом:
(x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) .
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 5 / 31
10. Задача выполнимости
Вход задачи пропозициональной выполнимости (satisfiability
problem, SAT) выглядит следующим образом:
(x ∨ y ∨ z)(x ∨ ¬y )(y ∨ ¬z)(z ∨ ¬x)(¬x ∨ ¬y ∨ ¬z) .
Необходимо проверить, выполнима ли формула.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 5 / 31
11. Задача поиска
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 6 / 31
12. Задача поиска
Задача выполнимости является типичной задачей поиска:
дано условие I и надо найти для него решение S. При этом
должен существовать способ быстрой проверки того, что
решение правильное.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 6 / 31
13. Задача поиска
Задача выполнимости является типичной задачей поиска:
дано условие I и надо найти для него решение S. При этом
должен существовать способ быстрой проверки того, что
решение правильное.
Будем говорить, что задача поиска задаётся алгоритмом 𝒞,
который получает на вход условие I и кандидата на решение
S и работает полиномиальное от |I | время. Мы говорим, что
S является решением для I тогда и только тогда, когда
𝒞(I , S) = true.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 6 / 31
14. Задача поиска
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 7 / 31
16. Задача коммивояжёра
В задаче о коммивояжере (traveling salesman problem) дано n
вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных
расстояний между ними, а также бюджет b.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 8 / 31
17. Задача коммивояжёра
В задаче о коммивояжере (traveling salesman problem) дано n
вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных
расстояний между ними, а также бюджет b.
Найти необходимо цикл, проходящий через все вершины
ровно по одному разу (то есть гамильтонов цикл) и
имеющий длину не более b, или же сообщить, что такого
цикла нет.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 8 / 31
18. Задача коммивояжёра
В задаче о коммивояжере (traveling salesman problem) дано n
вершин с номерами 1, . . . , n и все n(n − 1)/2 попарных
расстояний между ними, а также бюджет b.
Найти необходимо цикл, проходящий через все вершины
ровно по одному разу (то есть гамильтонов цикл) и
имеющий длину не более b, или же сообщить, что такого
цикла нет.
Другими словами, необходимо найти перестановку
𝜏 (1), . . . , 𝜏 (n) вершин, такую что
d 𝜏 (1),𝜏 (2) + d 𝜏 (2),𝜏 (3) + · · · + d 𝜏 (n),𝜏 (1) ≤ b .
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 8 / 31
19. Пример
5
3 2 3 3
4
1
4
3 2
6
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 9 / 31
20. Пример
5
3 2 3 3
4
1
4
3 2
6
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 9 / 31
21. Оптимизационные задачи и задачи поиска
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 10 / 31
22. Оптимизационные задачи и задачи поиска
Почему мы сформулировали задачу о коммивояжере как
задачу поиска, когда на самом деле это оптимизационная
задача?
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 10 / 31
23. Оптимизационные задачи и задачи поиска
Почему мы сформулировали задачу о коммивояжере как
задачу поиска, когда на самом деле это оптимизационная
задача?
Переформулировка оптимизационной задачи как задачи
поиска не меняет ее сложности, поскольку обе версии
сводятся друг к другу.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 10 / 31
24. Оптимизационные задачи и задачи поиска
Почему мы сформулировали задачу о коммивояжере как
задачу поиска, когда на самом деле это оптимизационная
задача?
Переформулировка оптимизационной задачи как задачи
поиска не меняет ее сложности, поскольку обе версии
сводятся друг к другу.
Имея потенциальное решение для задачи TSP, легко
проверить свойства “является маршрутом” и “имеет длину
не более b”, но как проверить свойство “является
оптимальным”?
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 10 / 31
26. Коммивояжёр и покрывающее дерево
Задача о минимальном покрывающем дереве: дана матрица
попарных расстояний и бюджет b и требуется найти
дерево T , такое что
∑︁
dij ≤ b .
(i,j)∈T
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 11 / 31
27. Коммивояжёр и покрывающее дерево
Задача о минимальном покрывающем дереве: дана матрица
попарных расстояний и бюджет b и требуется найти
дерево T , такое что
∑︁
dij ≤ b .
(i,j)∈T
Задача коммивояжёра может рассматриваться как вариант
задачи о покрывающем дереве, где искомому дереву не
разрешается ветвиться и оно, таким образом, должно быть
просто путем.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 11 / 31
28. Коммивояжёр и покрывающее дерево
Задача о минимальном покрывающем дереве: дана матрица
попарных расстояний и бюджет b и требуется найти
дерево T , такое что
∑︁
dij ≤ b .
(i,j)∈T
Задача коммивояжёра может рассматриваться как вариант
задачи о покрывающем дереве, где искомому дереву не
разрешается ветвиться и оно, таким образом, должно быть
просто путем.
Это дополнительное условие на структуру дерева делает
задачу гораздо более сложной.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 11 / 31
30. Незавсисмое множество, вершинное покрытие и
клика
В задаче о независимом множестве (independent set problem)
дан граф и число g и требуется найти g независимых
вершин, то есть таких, что никакие две из них не соединены
ребром.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 12 / 31
31. Незавсисмое множество, вершинное покрытие и
клика
В задаче о независимом множестве (independent set problem)
дан граф и число g и требуется найти g независимых
вершин, то есть таких, что никакие две из них не соединены
ребром.
В задаче о вершинном покрытии (vertex cover problem) дан
граф и число b, и требуется найти b вершин, покрывающих
все ребра (то есть такое множество из b вершин, что для
любого ребра хотя бы один из его концов содержится в этом
множестве).
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 12 / 31
32. Незавсисмое множество, вершинное покрытие и
клика
В задаче о независимом множестве (independent set problem)
дан граф и число g и требуется найти g независимых
вершин, то есть таких, что никакие две из них не соединены
ребром.
В задаче о вершинном покрытии (vertex cover problem) дан
граф и число b, и требуется найти b вершин, покрывающих
все ребра (то есть такое множество из b вершин, что для
любого ребра хотя бы один из его концов содержится в этом
множестве).
Задача о клике (clique problem) заключается в нахождении
по графу и числу g таких g вершин, что любые две из них
соединены ребром.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 12 / 31
33. Содержание
1 Задачи поиска
2 NP-полные задачи
3 Сведения
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 13 / 31
34. Сложные и простые задачи
трудные задачи (NP-полные) простые задачи (из P)
3-SAT 2-SAT, Horn SAT
коммивояжёр покрывающее дерево
независимое множество независимое множество
в деревьях
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 14 / 31
35. Классы P и NP
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 15 / 31
36. Классы P и NP
NP — класс всех задач поиска.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 15 / 31
37. Классы P и NP
NP — класс всех задач поиска.
P — класс всех задач поиска, которые могут быть решены за
полиномиальное время.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 15 / 31
38. Сведения
Свед´ние задачи поиска A к задаче поиска B — это пара
е
полиномиальных по времени алгоритмов (f , h):
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 16 / 31
39. Сведения
Свед´ние задачи поиска A к задаче поиска B — это пара
е
полиномиальных по времени алгоритмов (f , h):
решение S для f (I )
h решение h(S) для I
условие I условие f (I )
f алгоритм для B
нет решения для f (I )
нет решения для I
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 16 / 31
40. NP-полные задачи
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 17 / 31
41. NP-полные задачи
Задача поиска называется NP-полной (NP-complete), если
все другие задачи поиска сводятся к ней.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 17 / 31
42. NP-полные задачи
Задача поиска называется NP-полной (NP-complete), если
все другие задачи поиска сводятся к ней.
Чтобы задача была NP-полной, с ее помощью должны
решаться все задачи поиска в мире!
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 17 / 31
43. NP-полные задачи
Задача поиска называется NP-полной (NP-complete), если
все другие задачи поиска сводятся к ней.
Чтобы задача была NP-полной, с ее помощью должны
решаться все задачи поиска в мире!
Удивительно, что такие задачи существуют вообще.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 17 / 31
44. Два способа использования сведений
Задача поиска A сводится к задаче поиска B:
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 18 / 31
45. Два способа использования сведений
Задача поиска A сводится к задаче поиска B:
Мы знаем, как эффективно решать B и хотим использовать
это знание для решения A.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 18 / 31
46. Два способа использования сведений
Задача поиска A сводится к задаче поиска B:
Мы знаем, как эффективно решать B и хотим использовать
это знание для решения A.
Мы знаем, что A трудна, и используем сведение, чтобы
показать, что и B трудна.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 18 / 31
47. Пространство NP всех задач поиска в
предположении P ̸= NP
P NP-полные
увеличение сложности
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 19 / 31
48. Содержание
1 Задачи поиска
2 NP-полные задачи
3 Сведения
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 20 / 31
49. Сведения
Мы построим следующие сведения:
любая задача из NP → SAT → 3SAT → независимое множество →
вершинное покрытие, клика.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 21 / 31
50. 3-SAT → задача о независимом множестве
y ¬y y ¬y
¬x ¬z x z x z ¬x
(¬x ∨ y ∨ ¬z)(x ∨ ¬y ∨ z)(x ∨ y ∨ z)(¬x ∨ ¬y )
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 22 / 31
51. SAT → 3-SAT
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 23 / 31
52. SAT → 3-SAT
Это интересное и типичное сведение задачи к своему
частному случаю.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 23 / 31
53. SAT → 3-SAT
Это интересное и типичное сведение задачи к своему
частному случаю.
Мы хотим показать, что задача остается сложной, даже если
ее входы как-то ограничены — в нашем случае, если все
клозы содержат не более трех литералов.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 23 / 31
54. SAT → 3-SAT
Это интересное и типичное сведение задачи к своему
частному случаю.
Мы хотим показать, что задача остается сложной, даже если
ее входы как-то ограничены — в нашем случае, если все
клозы содержат не более трех литералов.
Такие сведения модифицируют входное условие так, чтобы
избавиться от запрещенных конфигураций (клозов длины
хотя бы четыре), не меняя при этом условия в том смысле,
что решение для исходного условия можно построить из
решения для полученного условия.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 23 / 31
55. Конструкция
Каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на
множество клозов
(a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) ,
где {yi } суть новые переменные.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 24 / 31
56. Конструкция
Каждый клоз (a1 ∨ a2 ∨ · · · ∨ ak ) длины более 3 заменяется на
множество клозов
(a1 ∨ a2 ∨ y1 )(¬y1 ∨ a3 ∨ y2 )(¬y2 ∨ a4 ∨ y3 ) . . . (¬yk−3 ∨ ak−1 ∨ ak ) ,
где {yi } суть новые переменные.
Для каждого набора переменным {ai } клоз (a1 ∨ a2 ∨ · · · ∨ ak )
выполнен тогда и только тогда, когда существует набор значений
переменным {yi }, выполняющий все соответствующие клозы.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 24 / 31
57. Задача о независимом множестве →
задача о вершинном покрытии
S является вершинным покрытием тогда и только тогда, когда
V − S является независимым множеством:
S
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 25 / 31
58. Задача о независимом множестве →
задача о клике
Подмножество вершин S является независимым в G тогда и
¯
только тогда, когда S является кликой в G . Другими словами,
эти вершины попарно не соединены в G тогда и только тогда,
когда любые две из них соединены ребром в G .¯
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 26 / 31
59. Любая задача класса NP → SAT
Мы уже свели задачу SAT к нескольким задачам. Теперь мы
замыкаем круг и показываем, что все эти задачи — в
действительности все задачи класса NP — сводятся к SAT.
Именно, мы покажем, что все задачи класса NP сводятся к
обобщению задачи SAT, называемому задачей выполнимости
булевой схемы (CIRCUIT-SAT).
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 27 / 31
60. Пример схемы
выход
AND
NOT OR
AND OR AND
true x1 x2 x3
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 28 / 31
61. SAT ↔ CIRCUIT-SAT
SAT → CIRCUIT-SAT: понятно.
Обратно: запишем схему в виде формулы в КНФ. Для
каждого гейта g мы заводим переменную g и моделируем
этот гейт добавлением клозов следующим образом.
g g g g g
true false OR AND NOT
(g ) (g )
h1 h2 h1 h2 h
(g ∨ h1 ) (g ∨ h1 ) (g ∨ h)
(g ∨ h2 ) (g ∨ h2 ) (g ∨ h)
(g ∨ h1 ∨ h2 ) (g ∨ h1 ∨ h2 )
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 29 / 31
63. Сведение
Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT,
мы возвращаемся к нашей основной задаче — показать, что
все задачи поиска сводятся к CIRCUIT SAT.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 30 / 31
64. Сведение
Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT,
мы возвращаемся к нашей основной задаче — показать, что
все задачи поиска сводятся к CIRCUIT SAT.
Итак, предположим, что задача A принадлежит классу NP.
Мы должны построить сведение A к CIRCUIT-SAT. Это
кажется довольно сложным, поскольку мы не знаем
практически ничего про A.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 30 / 31
65. Сведение
Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT,
мы возвращаемся к нашей основной задаче — показать, что
все задачи поиска сводятся к CIRCUIT SAT.
Итак, предположим, что задача A принадлежит классу NP.
Мы должны построить сведение A к CIRCUIT-SAT. Это
кажется довольно сложным, поскольку мы не знаем
практически ничего про A.
Мы знаем, что для A есть алгоритм 𝒞, который по условию
I и кандидату на решение S проверяет (за полиномиальное
от I время!), верно ли, что S действительно является
решением.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 30 / 31
66. Сведение
Теперь, когда мы знаем, что CIRCUIT SAT сводится к SAT,
мы возвращаемся к нашей основной задаче — показать, что
все задачи поиска сводятся к CIRCUIT SAT.
Итак, предположим, что задача A принадлежит классу NP.
Мы должны построить сведение A к CIRCUIT-SAT. Это
кажется довольно сложным, поскольку мы не знаем
практически ничего про A.
Мы знаем, что для A есть алгоритм 𝒞, который по условию
I и кандидату на решение S проверяет (за полиномиальное
от I время!), верно ли, что S действительно является
решением.
Такой алгоритм можно преобразовать в схему,
полиномиального от длины I размера.
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 30 / 31
67. Спасибо!
Спасибо за внимание!
А. Куликов (ПОМИ РАН) NP-полные задачи 1 марта 2013 31 / 31