1. Алгоритмы для NP-трудных задач
А. Куликов
Санкт-Петербургское отделение Математического института им. В.А. Стеклова РАН
(ПОМИ РАН)
Computer Science E-Days
20 марта 2010
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
1 / 39
2. План лекции
1 P и NP неформально
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
2 / 39
3. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
2 / 39
4. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
2 / 39
5. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
2 / 39
6. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
3 / 39
7. Классы P и NP
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
4 / 39
8. Классы P и NP
Задача поиска задаётся алгоритмом C, который получает на вход
условие I и кандидата на решение S и имеет время работы,
ограниченное некоторым полиномом от |I |. S называется
решением, если и только если C(S, I ) = true.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
4 / 39
9. Классы P и NP
Задача поиска задаётся алгоритмом C, который получает на вход
условие I и кандидата на решение S и имеет время работы,
ограниченное некоторым полиномом от |I |. S называется
решением, если и только если C(S, I ) = true.
NP класс всех задач поиска. Другими словами, NP класс
всех задач, решение для которых может быть быстро проверено.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
4 / 39
10. Классы P и NP
Задача поиска задаётся алгоритмом C, который получает на вход
условие I и кандидата на решение S и имеет время работы,
ограниченное некоторым полиномом от |I |. S называется
решением, если и только если C(S, I ) = true.
NP класс всех задач поиска. Другими словами, NP класс
всех задач, решение для которых может быть быстро проверено.
P класс задач поиска, решение для которых может быть быстро
найдено.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
4 / 39
11. Классы P и NP
Задача поиска задаётся алгоритмом C, который получает на вход
условие I и кандидата на решение S и имеет время работы,
ограниченное некоторым полиномом от |I |. S называется
решением, если и только если C(S, I ) = true.
NP класс всех задач поиска. Другими словами, NP класс
всех задач, решение для которых может быть быстро проверено.
P класс задач поиска, решение для которых может быть быстро
найдено.
P=NP? Другими словами, существуют ли задачи, решение для
которых может быть быстро проверено, но не может быть быстро
найдено? Это один из самых важных и самых сложных открытых
вопросов Theoretical Computer Science.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
4 / 39
12. Сведения
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
5 / 39
13. Сведения
Говорим, что задача A сводится к задаче B, и пишем A → B, если
по эффективному алгоритму для задачи B можно построить
эффективный алгоритм для задачи A.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
5 / 39
14. Сведения
Говорим, что задача A сводится к задаче B, и пишем A → B, если
по эффективному алгоритму для задачи B можно построить
эффективный алгоритм для задачи A.
По-другому: если A решить сложно и A → B, то и B решить
сложно. То есть B не может быть сильно проще A.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
5 / 39
15. Сведения
Говорим, что задача A сводится к задаче B, и пишем A → B, если
по эффективному алгоритму для задачи B можно построить
эффективный алгоритм для задачи A.
По-другому: если A решить сложно и A → B, то и B решить
сложно. То есть B не может быть сильно проще A.
Задача поиска называется NP-полной, если к ней сводятся все
задачи поиска. То есть это универсальный притягивающий объект
в классе NP.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
5 / 39
16. Сведения
Говорим, что задача A сводится к задаче B, и пишем A → B, если
по эффективному алгоритму для задачи B можно построить
эффективный алгоритм для задачи A.
По-другому: если A решить сложно и A → B, то и B решить
сложно. То есть B не может быть сильно проще A.
Задача поиска называется NP-полной, если к ней сводятся все
задачи поиска. То есть это универсальный притягивающий объект
в классе NP.
Удивительно (на первый взгляд), что такие задачи вообще
существуют.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
5 / 39
17. P vs NP
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
6 / 39
18. P vs NP
Большинство исследователей считают, что P=NP.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
6 / 39
19. P vs NP
Большинство исследователей считают, что P=NP.
Есть, впрочем, и другие мнения:
http://www.win.tue.nl/∼gwoegi/P-versus-NP.htm
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
6 / 39
20. P vs NP
Большинство исследователей считают, что P=NP.
Есть, впрочем, и другие мнения:
http://www.win.tue.nl/∼gwoegi/P-versus-NP.htm
В предположении P=NP не существует полиномиальных
алгоритмов для NP-трудных задач.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
6 / 39
21. Мотивация
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
7 / 39
22. Мотивация
Многим приложениям требуется решать NP-трудные задачи, даже
несмотря на то, что решения могут быть найдены только для
весьма маленьких размеров входов.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
7 / 39
23. Мотивация
Многим приложениям требуется решать NP-трудные задачи, даже
несмотря на то, что решения могут быть найдены только для
весьма маленьких размеров входов.
Лучшее понимание NP-трудных задач.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
7 / 39
24. Мотивация
Многим приложениям требуется решать NP-трудные задачи, даже
несмотря на то, что решения могут быть найдены только для
весьма маленьких размеров входов.
Лучшее понимание NP-трудных задач.
Новые интересные комбинаторные и алгоритмические задачи.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
7 / 39
25. Мотивация
Многим приложениям требуется решать NP-трудные задачи, даже
несмотря на то, что решения могут быть найдены только для
весьма маленьких размеров входов.
Лучшее понимание NP-трудных задач.
Новые интересные комбинаторные и алгоритмические задачи.
Общая теория.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
7 / 39
26. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
8 / 39
27. Точные алгоритмы для NP-трудных задач
Алгоритмы, находящие точное решение для данной
задачи за время c n для достаточно малой константы c.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
9 / 39
28. Мотивация
Представим, что у нас есть алгоритм сложности 1.7n для некоторой
задачи, который за “разумное” время позволяет решать примеры этой
задачи размера не более n0 .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
10 / 39
29. Мотивация
Представим, что у нас есть алгоритм сложности 1.7n для некоторой
задачи, который за “разумное” время позволяет решать примеры этой
задачи размера не более n0 .
The “hardware” approach: возьмем в 10 раз более быстрый
компьютер. Теперь мы можем решать примеры размера n0 + 4.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
10 / 39
30. Мотивация
Представим, что у нас есть алгоритм сложности 1.7n для некоторой
задачи, который за “разумное” время позволяет решать примеры этой
задачи размера не более n0 .
The “hardware” approach: возьмем в 10 раз более быстрый
компьютер. Теперь мы можем решать примеры размера n0 + 4.
The “brainware” approach: придумаем алгоритм сложности 1.3n .
Это позволит нам решать примеры размера 2 · n0 .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
10 / 39
31. Мотивация
Представим, что у нас есть алгоритм сложности 1.7n для некоторой
задачи, который за “разумное” время позволяет решать примеры этой
задачи размера не более n0 .
The “hardware” approach: возьмем в 10 раз более быстрый
компьютер. Теперь мы можем решать примеры размера n0 + 4.
The “brainware” approach: придумаем алгоритм сложности 1.3n .
Это позволит нам решать примеры размера 2 · n0 .
Другими словами, уменьшение основания экспоненты времени работы
алгоритма увеличивает размер решаемых за данное время примеров в
константное число раз, в то время как использование более быстрого
компьютера способно увеличить размер лишь на константу.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
10 / 39
32. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
11 / 39
33. 3-клика
Определение
Задача о 3-клике (3-clique problem) заключается в проверке наличия
3-клики (то есть полного подграфа на трех вершинах) во входном
графе.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
12 / 39
34. 3-клика
Определение
Задача о 3-клике (3-clique problem) заключается в проверке наличия
3-клики (то есть полного подграфа на трех вершинах) во входном
графе.
Алгоритм
Matrix-Clique(G )
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
12 / 39
35. 3-клика
Определение
Задача о 3-клике (3-clique problem) заключается в проверке наличия
3-клики (то есть полного подграфа на трех вершинах) во входном
графе.
Алгоритм
Matrix-Clique(G )
построить матрицу смежности A графа G
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
12 / 39
36. 3-клика
Определение
Задача о 3-клике (3-clique problem) заключается в проверке наличия
3-клики (то есть полного подграфа на трех вершинах) во входном
графе.
Алгоритм
Matrix-Clique(G )
построить матрицу смежности A графа G
посчитать A3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
12 / 39
37. 3-клика
Определение
Задача о 3-клике (3-clique problem) заключается в проверке наличия
3-клики (то есть полного подграфа на трех вершинах) во входном
графе.
Алгоритм
Matrix-Clique(G )
построить матрицу смежности A графа G
посчитать A3
вернуть “да”, если на диагонали построенной матрицы есть хотя
бы один не ноль
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
12 / 39
38. 3-клика
Определение
Задача о 3-клике (3-clique problem) заключается в проверке наличия
3-клики (то есть полного подграфа на трех вершинах) во входном
графе.
Алгоритм
Matrix-Clique(G )
построить матрицу смежности A графа G
посчитать A3
вернуть “да”, если на диагонали построенной матрицы есть хотя
бы один не ноль
вернуть “нет”
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
12 / 39
39. Анализ алгоритма
Лемма
Алгоритм выдает правильный ответ за время O(nω ), где ω ≈ 2.376
экспонента перемножения матриц (matrix multiplication exponent).
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
13 / 39
40. Анализ алгоритма
Лемма
Алгоритм выдает правильный ответ за время O(nω ), где ω ≈ 2.376
экспонента перемножения матриц (matrix multiplication exponent).
Доказательство
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
13 / 39
41. Анализ алгоритма
Лемма
Алгоритм выдает правильный ответ за время O(nω ), где ω ≈ 2.376
экспонента перемножения матриц (matrix multiplication exponent).
Доказательство
важное свойство матрицы смежности: Ak [i, j] есть количество
путей длины k из вершины i в вершину j в графе G (легко
доказать по индукции)
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
13 / 39
42. Анализ алгоритма
Лемма
Алгоритм выдает правильный ответ за время O(nω ), где ω ≈ 2.376
экспонента перемножения матриц (matrix multiplication exponent).
Доказательство
важное свойство матрицы смежности: Ak [i, j] есть количество
путей длины k из вершины i в вершину j в графе G (легко
доказать по индукции)
3-клика это путь длины 3 из вершины в саму себя
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
13 / 39
43. Анализ алгоритма
Лемма
Алгоритм выдает правильный ответ за время O(nω ), где ω ≈ 2.376
экспонента перемножения матриц (matrix multiplication exponent).
Доказательство
важное свойство матрицы смежности: Ak [i, j] есть количество
путей длины k из вершины i в вершину j в графе G (легко
доказать по индукции)
3-клика это путь длины 3 из вершины в саму себя
для вычисления A3 требуется два умножения матриц
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
13 / 39
44. Задача о максимальном разрезе
Определение
Задача о максимальном разрезе (maximum cut problem, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
14 / 39
45. Задача о максимальном разрезе
Определение
Задача о максимальном разрезе (maximum cut problem, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.
Основные идеи сведения максимального разреза к 3-клике
Дан граф G на n вершинах.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
14 / 39
46. Задача о максимальном разрезе
Определение
Задача о максимальном разрезе (maximum cut problem, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.
Основные идеи сведения максимального разреза к 3-клике
Дан граф G на n вершинах.
Построим трехдольный граф H на 3 · 2n/3 вершинах со
следующим свойством: исходный граф G имеет разрез веса w
тогда и только тогда, когда H содержит 3-клику веса w .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
14 / 39
47. Задача о максимальном разрезе
Определение
Задача о максимальном разрезе (maximum cut problem, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.
Основные идеи сведения максимального разреза к 3-клике
Дан граф G на n вершинах.
Построим трехдольный граф H на 3 · 2n/3 вершинах со
следующим свойством: исходный граф G имеет разрез веса w
тогда и только тогда, когда H содержит 3-клику веса w .
Используем быстрое умножение матриц для поиска 3-клики.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
14 / 39
48. Задача о максимальном разрезе
Определение
Задача о максимальном разрезе (maximum cut problem, MAX-CUT)
заключается в нахождении такого разбиения вершин графа на две
части, при котором количество ребер, концы которых принадлежат
разным частям, максимально.
Основные идеи сведения максимального разреза к 3-клике
Дан граф G на n вершинах.
Построим трехдольный граф H на 3 · 2n/3 вершинах со
следующим свойством: исходный граф G имеет разрез веса w
тогда и только тогда, когда H содержит 3-клику веса w .
Используем быстрое умножение матриц для поиска 3-клики.
Сложность: 2ωn/3 ≈ 1.732n .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
14 / 39
49. Вспомогательный граф
H G
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
50. Вспомогательный граф
это три части вершин исходного графа G
H G
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
51. Вспомогательный граф
это три доли вершин вспомогательного огромного графа H
H G
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
52. Вспомогательный граф
для каждого Xi ⊆ Vi создаём вершину в соответствующей доле H
V1 X1
X1
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
53. Вспомогательный граф
чему равен вес разреза X1 ∪ X2 ∪ X3 в G ?
V1 X1
X1
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
54. Вспомогательный граф
чему равен вес разреза X1 ∪ X2 ∪ X3 в G ?
V1 X1
X1
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
55. Вспомогательный граф
V1 X1
X1
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
56. Вспомогательный граф
V1 X1
X1
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
57. Вспомогательный граф
V1 X1
X1
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
58. Вспомогательный граф
V1 X1
X1
итак, вес треугольника (H1 , H2 , H3 ) в H равен
весу разреза X1 ∪ X2 ∪ X3 в G
X1
H G
V2 X2 V3 X3
X2 X3 X2 X3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
15 / 39
59. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
60. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
61. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
построить вспомогательный трехдольный граф H: i-я доля Ti
содержит все возможные подмножества Vi ; вес ребра между X1 и
X2 равен
w (V2 X2 , X1 ) + w (V1 X1 , X1 ) + w (V1 X1 , X2 )
(для остальных пар долей аналогично)
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
62. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
построить вспомогательный трехдольный граф H: i-я доля Ti
содержит все возможные подмножества Vi ; вес ребра между X1 и
X2 равен
w (V2 X2 , X1 ) + w (V1 X1 , X1 ) + w (V1 X1 , X2 )
(для остальных пар долей аналогично)
для всех 1 ≤ w12 , w13 , w23 ≤ |EG |
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
63. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
построить вспомогательный трехдольный граф H: i-я доля Ti
содержит все возможные подмножества Vi ; вес ребра между X1 и
X2 равен
w (V2 X2 , X1 ) + w (V1 X1 , X1 ) + w (V1 X1 , X2 )
(для остальных пар долей аналогично)
для всех 1 ≤ w12 , w13 , w23 ≤ |EG |
оставить только ребра веса wij между долями Ti и Tj
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
64. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
построить вспомогательный трехдольный граф H: i-я доля Ti
содержит все возможные подмножества Vi ; вес ребра между X1 и
X2 равен
w (V2 X2 , X1 ) + w (V1 X1 , X1 ) + w (V1 X1 , X2 )
(для остальных пар долей аналогично)
для всех 1 ≤ w12 , w13 , w23 ≤ |EG |
оставить только ребра веса wij между долями Ti и Tj
проверить, есть ли в модифицированном графе H 3-клика
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
65. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
построить вспомогательный трехдольный граф H: i-я доля Ti
содержит все возможные подмножества Vi ; вес ребра между X1 и
X2 равен
w (V2 X2 , X1 ) + w (V1 X1 , X1 ) + w (V1 X1 , X2 )
(для остальных пар долей аналогично)
для всех 1 ≤ w12 , w13 , w23 ≤ |EG |
оставить только ребра веса wij между долями Ti и Tj
проверить, есть ли в модифицированном графе H 3-клика
если да, то в G есть разрез веса w12 + w13 + w23
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
66. Алгоритм
Алгоритм
Matrix-MAX-CUT(G )
разбить множество вершин V на три равные части V1 , V2 , V3
построить вспомогательный трехдольный граф H: i-я доля Ti
содержит все возможные подмножества Vi ; вес ребра между X1 и
X2 равен
w (V2 X2 , X1 ) + w (V1 X1 , X1 ) + w (V1 X1 , X2 )
(для остальных пар долей аналогично)
для всех 1 ≤ w12 , w13 , w23 ≤ |EG |
оставить только ребра веса wij между долями Ti и Tj
проверить, есть ли в модифицированном графе H 3-клика
если да, то в G есть разрез веса w12 + w13 + w23
вернуть максимальную найденную стоимость разреза
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
16 / 39
67. Известные оценки
Факт
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
17 / 39
68. Известные оценки
Факт
Алгоритм, как видно, использует экспоненциальную память и
поэтому совсем не практичен.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
17 / 39
69. Известные оценки
Факт
Алгоритм, как видно, использует экспоненциальную память и
поэтому совсем не практичен.
Алгоритм со временем работы 1.99999n и полиномиальной
памятью пока не придуман.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
17 / 39
70. Известные оценки
Факт
Алгоритм, как видно, использует экспоненциальную память и
поэтому совсем не практичен.
Алгоритм со временем работы 1.99999n и полиномиальной
памятью пока не придуман.
Наилучшая известная оценка относительно количества рёбер
2m/6.2 .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
17 / 39
71. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
18 / 39
72. FPT алгоритмы для NP-трудных задач
Алгоритмы, находящие точное решение для данной
задачи за время
f (k)nc ,
где
n размер входа,
c константа,
k некоторый параметр,
f произвольная функция.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
19 / 39
73. Вершинное покрытие и доминирующее множество
Определение
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
20 / 39
74. Вершинное покрытие и доминирующее множество
Определение
(Параметризованная) задача о вершинном покрытии
(parameterized vertex cover problem) заключается в нахождении по
данному графу G = (V , E ) и числу k такого множества вершин
V ⊆ V , что |V | ≤ k и для любого ребра (u, v ) ∈ E , хотя бы одна
из вершин u и v содержится в V .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
20 / 39
75. Вершинное покрытие и доминирующее множество
Определение
(Параметризованная) задача о вершинном покрытии
(parameterized vertex cover problem) заключается в нахождении по
данному графу G = (V , E ) и числу k такого множества вершин
V ⊆ V , что |V | ≤ k и для любого ребра (u, v ) ∈ E , хотя бы одна
из вершин u и v содержится в V .
(Параметризованная) задача о доминирующем множестве
(parameterzied dominating set problem) заключается в нахождении
по данному графу G = (V , E ) и числу k такого множества вершин
V ⊆ V , что для любой вершины u ∈ V найдётся такая вершина
v ∈ V , что (u, v ) ∈ E .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
20 / 39
76. Сравнение алгоритмов
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
21 / 39
77. Сравнение алгоритмов
Наивный алгоритм для задачи о вершинном покрытии имеет
время работы 2k n, для задачи о доминирующем множестве
nk+1 .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
21 / 39
78. Сравнение алгоритмов
Наивный алгоритм для задачи о вершинном покрытии имеет
время работы 2k n, для задачи о доминирующем множестве
nk+1 .
Отношение nk+1 /2k n для различных значений k и n.
n = 50 n = 100 n = 150
k =2 625 2 500 5 625
k =3 15 625 125 000 421 875
k =5 390 625 6 255 000 31 640 625
k = 10 1.9 × 1012 9.8 × 1014 3.7 × 1016
k = 20 1.8 × 1026 9.5 × 1031 2.1 × 1035
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
21 / 39
80. Fixed parameter tractability
Определение
Параметризованной задачей (parameterized problem) L называется
подмножество Σ∗ × N для некоторого конечного алфавита Σ.
Входом задачи является пара (x, k), k называется параметром
(parameter).
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
22 / 39
81. Fixed parameter tractability
Определение
Параметризованной задачей (parameterized problem) L называется
подмножество Σ∗ × N для некоторого конечного алфавита Σ.
Входом задачи является пара (x, k), k называется параметром
(parameter).
Параметризованная задача L называется fixed parameter tractable
(FPT), если принадлежность пары (x, k) языку L может быть
проверена за время f (k)|x|c , где c константа (не зависящая ни
от k, ни от n), а f произвольная функция.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
22 / 39
82. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
23 / 39
83. Задача о пути длины k
Определение
Задачи о пути длины k (k-path problem) заключается в нахождении по
данному графу G с двумя выделенными вершинами s и t и числу k
простого пути между s и t, содержащего ровно k промежуточных
вершин.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
24 / 39
84. Color coding
Color coding
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
25 / 39
85. Color coding
Color coding
Присвоим равновероятно и независимо всем вершинам, кроме s и
t, цвета от 1 до k.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
25 / 39
86. Color coding
Color coding
Присвоим равновероятно и независимо всем вершинам, кроме s и
t, цвета от 1 до k.
Проверим, есть ли полноцветный s–t путь, то есть путь, в
котором промежуточные вершины покрашены во все k цветов.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
25 / 39
87. Оценка вероятности ошибки
Оценка вероятности ошибки
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
26 / 39
88. Оценка вероятности ошибки
Оценка вероятности ошибки
Если путь длины k есть, то вероятность того, что он полноцветен,
равна
k k
k!
> e k = e −k .
kk k
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
26 / 39
89. Оценка вероятности ошибки
Оценка вероятности ошибки
Если путь длины k есть, то вероятность того, что он полноцветен,
равна
k k
k!
> e k = e −k .
kk k
Вероятность того, что путь не найдётся (если он есть) после e k
повторений, не превосходит
k −k ek
(1 − e −k )e < e −e = e −1 .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
26 / 39
90. Как же проверять наличие полноцветного пути?
Как же проверять наличие полноцветного пути?
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
27 / 39
91. Как же проверять наличие полноцветного пути?
Как же проверять наличие полноцветного пути?
Мы знаем, что в полноцветном пути должны встречаться
вершины всех k цветов, но не знаем, в каком порядке.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
27 / 39
92. Как же проверять наличие полноцветного пути?
Как же проверять наличие полноцветного пути?
Мы знаем, что в полноцветном пути должны встречаться
вершины всех k цветов, но не знаем, в каком порядке.
Можно перебрать все k! порядков. Когда порядок зафиксирован,
нужно просто проверить наличие s–t пути в графе.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
27 / 39
93. Как же проверять наличие полноцветного пути?
Как же проверять наличие полноцветного пути?
Мы знаем, что в полноцветном пути должны встречаться
вершины всех k цветов, но не знаем, в каком порядке.
Можно перебрать все k! порядков. Когда порядок зафиксирован,
нужно просто проверить наличие s–t пути в графе.
Итого
Алгоритм за время O(e k k!|E (G )|) решает задачу о пути длины k с
вероятностью ошибки не более e −1 .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
27 / 39
94. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
28 / 39
95. Приближённые алгоритмы для NP-трудных задач
Алгоритмы, находящие за полиномиальное время для
данной оптимизационной задачи решение, которое
гарантированно не сильно хуже оптимального.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
29 / 39
96. План лекции
1 P и NP неформально
2 Точные алгоритмы
1.732n алгоритм для задачи о максимальном разрезе
3 FPT алгоритмы
FPT-алгоритм для задачи о пути длины k
4 Приближённые алгоритмы
3/2-приближённый алгоритм для задачи о коммивояжёре в
метрическом пространстве
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
30 / 39
97. Задача о коммивояжере
Определение
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
31 / 39
98. Задача о коммивояжере
Определение
Дан полный неориентированный граф G = (V , E ), каждому ребру
(u, v ) которого приписана некоторая стоимость c(u, v ).
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
31 / 39
99. Задача о коммивояжере
Определение
Дан полный неориентированный граф G = (V , E ), каждому ребру
(u, v ) которого приписана некоторая стоимость c(u, v ).
Задача о коммивояжере (travelling salesman problem, TSP)
заключается в нахождении в графе гамильтонова цикла
минимальной стоимости.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
31 / 39
100. Задача о коммивояжере
Определение
Дан полный неориентированный граф G = (V , E ), каждому ребру
(u, v ) которого приписана некоторая стоимость c(u, v ).
Задача о коммивояжере (travelling salesman problem, TSP)
заключается в нахождении в графе гамильтонова цикла
минимальной стоимости.
Задача о коммивояжере в метрическом пространстве (metric TSP)
есть частный случай задачи о коммивояжере, где расстояния
входного графа удовлетворяют неравенству треугольника:
c(u, w ) ≤ c(u, v ) + c(v , w ) ∀u, v , w ∈ V .
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
31 / 39
102. 2-оптимальный алгоритм
Алгоритм
Approx-TSP(G )
построим минимальное остовное дерево T графа G
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
32 / 39
103. 2-оптимальный алгоритм
Алгоритм
Approx-TSP(G )
построим минимальное остовное дерево T графа G
продублируем каждое ребро дерева T и в полученном графе
найдем эйлеров цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
32 / 39
104. 2-оптимальный алгоритм
Алгоритм
Approx-TSP(G )
построим минимальное остовное дерево T графа G
продублируем каждое ребро дерева T и в полученном графе
найдем эйлеров цикл
выкинем из полученного цикла все повторения вершин и вернем
полученный цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
32 / 39
105. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
e
b f g
c
h
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
33 / 39
106. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
остовное дерево T e
графа G g
b f
c
h
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
33 / 39
107. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
остовное дерево T e
графа G g
b f
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
33 / 39
108. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
остовное дерево T e
графа G g
b f
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
33 / 39
109. Пример работы алгоритма
Алгоритм
Approx-TSP(G ) a d
строим минимальное
остовное дерево T e
графа G g
b f
продублируем каждое
ребро дерева T и в c
полученном графе
h
найдем эйлеров цикл
выкинем из полученного
цикла все повторения
вершин и вернем
полученный цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
33 / 39
110. Анализ алгоритма
Лемма
Алгоритм Approx-TSP является 2-приближенным.
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
34 / 39
111. Анализ алгоритма
Лемма
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
34 / 39
112. Анализ алгоритма
Лемма
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT вес минимального остовного дерева, а Wopt вес
оптимального гамильтонова цикла
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
34 / 39
113. Анализ алгоритма
Лемма
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT вес минимального остовного дерева, а Wopt вес
оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
цикла получается остовное дерево
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
34 / 39
114. Анализ алгоритма
Лемма
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT вес минимального остовного дерева, а Wopt вес
оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
цикла получается остовное дерево
каждое ребро построенного гамильтонова цикла заменяет
какой-то путь эйлерова цикла, длина которого по неравенству
треугольника не менее длины этого ребра
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
34 / 39
115. Анализ алгоритма
Лемма
Алгоритм Approx-TSP является 2-приближенным.
Доказательство
пусть WT вес минимального остовного дерева, а Wopt вес
оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва
цикла получается остовное дерево
каждое ребро построенного гамильтонова цикла заменяет
какой-то путь эйлерова цикла, длина которого по неравенству
треугольника не менее длины этого ребра
значит, длина найденного пути не превосходит 2WT , а
следовательно, и 2Wopt
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
34 / 39
118. 3/2-оптимальный алгоритм
Алгоритм
Approx-TSP-Improved(G )
строим минимальное остовное дерево T графа G
найдем минимальное полное паросочетание всех вершин дерева T
нечетной степени
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
35 / 39
119. 3/2-оптимальный алгоритм
Алгоритм
Approx-TSP-Improved(G )
строим минимальное остовное дерево T графа G
найдем минимальное полное паросочетание всех вершин дерева T
нечетной степени
добавим найденные ребра в дерево T и найдем в полученном
графе эйлеров цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
35 / 39
120. 3/2-оптимальный алгоритм
Алгоритм
Approx-TSP-Improved(G )
строим минимальное остовное дерево T графа G
найдем минимальное полное паросочетание всех вершин дерева T
нечетной степени
добавим найденные ребра в дерево T и найдем в полученном
графе эйлеров цикл
выкинем из полученного цикла все повторения вершин и вернем
полученный цикл
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
35 / 39
122. Анализ алгоритма
Лемма
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
36 / 39
123. Анализ алгоритма
Лемма
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP вес минимального
паросочетания вершин нечетной степени дерева T
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
36 / 39
124. Анализ алгоритма
Лемма
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
36 / 39
125. Анализ алгоритма
Лемма
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
обозначим через A множество всех вершин нечетной степени
дерева T
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
36 / 39
126. Анализ алгоритма
Лемма
Алгоритм Approx-TSP-Improved является 3/2-приближенным.
Доказательство
как и в предыдущем доказательстве, вес построенного цикла не
провосходит WT + WP , где WP вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
обозначим через A множество всех вершин нечетной степени
дерева T
рассмотрим такой гамильтонов цикл на вершинах множества A:
вершины множества A в нем будут встречаться в такой
последовательности, в какой они идут в оптимальном
гамильтоновом цикле графа G
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
36 / 39
128. Доказательство (продолжение)
Доказательство
важно отметить, что нам не нужно строить такой цикл; нам
важен лишь факт его существования
А. Куликов Алгоритмы для NP-трудных задач
(Санкт-Петербургское отделение Математического института им. В.
37 / 39