1. Алгоритмы для задачи коммивояжёра
Александр Куликов
Петербургское отделение Математического института им. В. А. Стеклова
Российская академия наук
Computer Science клуб
24 февраля 2012
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 1 / 55
2. 1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 2 / 55
3. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 3 / 55
4. Формулировка задачи
Задача о гамильтоновом цикле: проверить, есть ли в графе
цикл, проходящий по каждой вершине ровно один раз.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 4 / 55
5. Формулировка задачи
Задача о гамильтоновом цикле: проверить, есть ли в графе
цикл, проходящий по каждой вершине ровно один раз.
Задача коммивояжёра: найти в данном полном взвешенном
графе гамильтонов цикл минимального веса.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 4 / 55
6. Формулировка задачи
Задача о гамильтоновом цикле: проверить, есть ли в графе
цикл, проходящий по каждой вершине ровно один раз.
Задача коммивояжёра: найти в данном полном взвешенном
графе гамильтонов цикл минимального веса.
Периодически мы будем искать не цикл, а путь.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 4 / 55
7. Формулировка задачи
Задача о гамильтоновом цикле: проверить, есть ли в графе
цикл, проходящий по каждой вершине ровно один раз.
Задача коммивояжёра: найти в данном полном взвешенном
графе гамильтонов цикл минимального веса.
Периодически мы будем искать не цикл, а путь.
Применения: проектирование схем, планирование, сборка
генома.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 4 / 55
8. Формулировка задачи
Задача о гамильтоновом цикле: проверить, есть ли в графе
цикл, проходящий по каждой вершине ровно один раз.
Задача коммивояжёра: найти в данном полном взвешенном
графе гамильтонов цикл минимального веса.
Периодически мы будем искать не цикл, а путь.
Применения: проектирование схем, планирование, сборка
генома.
Сложность полного перебора: O(n!).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 4 / 55
9. Цикл по 15 городам Германии
Оптимальный маршрут коммивояжёра че-
рез 15 крупнейших городов Германии. Ука-
занный маршрут является самым коротким
из всех возможных 43 589 145 600.
http://en.wikipedia.org/wiki/Travelling_salesman_problem
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 5 / 55
10. Цикл по 13 509 городам США
David Applegate, Robert Bixby, Vasek Chvatal and William Cook.
The Traveling Salesman Problem: A Computational Study.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 6 / 55
11. Оптимальный путь лазера
85 900 «городов»
David Applegate, Robert Bixby, Vasek Chvatal and William Cook.
The Traveling Salesman Problem: A Computational Study.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 7 / 55
12. Ещё интересное
http://www.tsp.gatech.edu/
две книги
мировые рекорды
датасеты
программы
игры
триллер
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 8 / 55
13. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 9 / 55
14. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 10 / 55
15. Метод ветвей и границ
1 Начать с некоторой задачи P0
2 S = {P0 } ← множество активных подзадач
3 лучшийрезультат = ∞
4 while S не пусто
5 do выбрать подзадачу (частичное решение) P ∈ S
и удалить её из S
6 разбить P на меньшие подзадачи P1 , P2 , · · · , Pk
7 for каждой Pi
8 do if Pi является полным решением
9 then обновить лучшийрезультат
10 elseif нижняяграница(Pi ) < лучшийрезультат
11 then добавить Pi в S
12 return лучшийрезультат
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 11 / 55
16. Подзадачи и нижняя граница
подзадача: [a, S, b] — достроение простого пути из a в b,
проходящего по всем вершинам из S ∋ a, b (то есть
кратчайший путь из b в a, проходящий по V ∖ S)
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 12 / 55
17. Подзадачи и нижняя граница
подзадача: [a, S, b] — достроение простого пути из a в b,
проходящего по всем вершинам из S ∋ a, b (то есть
кратчайший путь из b в a, проходящий по V ∖ S)
начальная задача: [a, {a}, a]
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 12 / 55
18. Подзадачи и нижняя граница
подзадача: [a, S, b] — достроение простого пути из a в b,
проходящего по всем вершинам из S ∋ a, b (то есть
кратчайший путь из b в a, проходящий по V ∖ S)
начальная задача: [a, {a}, a]
нижняя граница — сумма из
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 12 / 55
19. Подзадачи и нижняя граница
подзадача: [a, S, b] — достроение простого пути из a в b,
проходящего по всем вершинам из S ∋ a, b (то есть
кратчайший путь из b в a, проходящий по V ∖ S)
начальная задача: [a, {a}, a]
нижняя граница — сумма из
самого лёгкого ребра из a в V ∖ S,
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 12 / 55
20. Подзадачи и нижняя граница
подзадача: [a, S, b] — достроение простого пути из a в b,
проходящего по всем вершинам из S ∋ a, b (то есть
кратчайший путь из b в a, проходящий по V ∖ S)
начальная задача: [a, {a}, a]
нижняя граница — сумма из
самого лёгкого ребра из a в V ∖ S,
самого лёгкого ребра из b в V ∖ S и
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 12 / 55
21. Подзадачи и нижняя граница
подзадача: [a, S, b] — достроение простого пути из a в b,
проходящего по всем вершинам из S ∋ a, b (то есть
кратчайший путь из b в a, проходящий по V ∖ S)
начальная задача: [a, {a}, a]
нижняя граница — сумма из
самого лёгкого ребра из a в V ∖ S,
самого лёгкого ребра из b в V ∖ S и
минимального покрывающего дерева графа на вершинах
V ∖ S.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 12 / 55
22. Кстати, о минимальных покрывающих деревьях
Задача о минимальном покрывающем дереве — оставить в
графе (n − 1) ребро, так чтобы граф остался связным и
чтобы суммарный вес был минимальным. Решается почти
за линейное время.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 13 / 55
23. Кстати, о минимальных покрывающих деревьях
Задача о минимальном покрывающем дереве — оставить в
графе (n − 1) ребро, так чтобы граф остался связным и
чтобы суммарный вес был минимальным. Решается почти
за линейное время.
Задача о минимальном пути коммивояжёра — то же самое,
но запрещаем вершины степени больше двух. До сих пор не
умеем решать быстрее 2n .
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 13 / 55
24. Пример графа
1
F E
2 2
G D
1
1 1 1 1
5
H C
1 1
A B
2
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 14 / 55
25. Пример графа
1
F E
2 2
G D
1
1 1 1 1
5
H C
1 1
A B
2
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 14 / 55
26. Дерево поиска
A
10 B F 8 H 8
10 C E 10 8 E G C G
13 14 8
10 D H 14 D F 10 8 B D
15 12
11 E G G G C 8
∞ 14 14
11 F 8 D H
∞
11 G 8 G
11 H 8 H
Стоимость: 11 Стоимость: 8
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 15 / 55
27. Дерево поиска
A
10 B F 8 H 8
10 C E 10 8 E G C G
13 14 8
10 D H 14 D F 10 8 B D
15 12
1
11 E G G G C 8 2 F E 2
∞ 14 14
G D
11 F 8 D H 1
∞ 1 1 1 1
5
11 G 8 G H C
1 1
A B
11 H 8 H 2
Стоимость: 11 Стоимость: 8
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 15 / 55
28. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 16 / 55
29. Локальный поиск
1 s ← какое-нибудь начальное решение
2 while в окрестности s есть решение s ′ большей стоимости
3 do заменить s на s ′
4 return s
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 17 / 55
30. 2-окружение
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 18 / 55
31. Узкое место
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 19 / 55
32. 3-окружение
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 20 / 55
33. Пример локального поиска (с 3-окружением)
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 21 / 55
34. Пример локального поиска (с 3-окружением)
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 21 / 55
35. Пример локального поиска (с 3-окружением)
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 21 / 55
36. Пример локального поиска (с 3-окружением)
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 21 / 55
37. Пример локального поиска (с 3-окружением)
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 21 / 55
38. Локальный поиск абстрактно
стоимость
локальный оптимум
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 22 / 55
39. Метод имитации отжига
1 s ← какое-нибудь начальное решение
2 repeat
3 выбрать случайное решение s ′ из окружения s
4 ∆ ← cost(s ′ ) − cost(s)
5 if ∆ < 0
6 then заменить s на s ′
7 else заменить s на s ′ с вероятностью e −Δ/T
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 23 / 55
40. Метод имитации отжига абстрактно
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 24 / 55
41. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 25 / 55
42. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 26 / 55
43. Задача коммивояжёра в метрическом
пространстве
Задача коммивояжёра в метрическом пространстве (Metric TSP):
частный случай для графов, веса рёбер которых удовлетворяют
неравенству треугольника (w (i, j) ≤ w (i, k) + w (k, j)).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 27 / 55
44. 2-приближённый алгоритм
1 построить минимальное покрывающее дерево T
2 продублировать каждое ребро дерева T и
в полученном графе найти эйлеров цикл
3 выкинуть из этого цикла все повторения вершин и
вернуть полученный цикл
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 28 / 55
45. Пример
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 29 / 55
46. Пример
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 29 / 55
47. Пример
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 29 / 55
48. Пример
7
14 8
13
6 1
10 11
9 12
3
2 4
5
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 29 / 55
49. Пример
7
14 8
13
6 1
10 11
9 12
3
2 4
5
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 29 / 55
50. Пример
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 29 / 55
51. Доказательство
пусть WT — вес минимального остовного дерева, а Wopt —
вес оптимального гамильтонова цикла
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 30 / 55
52. Доказательство
пусть WT — вес минимального остовного дерева, а Wopt —
вес оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из
гамильтонва цикла получается остовное дерево
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 30 / 55
53. Доказательство
пусть WT — вес минимального остовного дерева, а Wopt —
вес оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из
гамильтонва цикла получается остовное дерево
каждое ребро построенного гамильтонова цикла заменяет
какой-то путь эйлерова цикла, длина которого по
неравенству треугольника не менее длины этого ребра
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 30 / 55
54. Доказательство
пусть WT — вес минимального остовного дерева, а Wopt —
вес оптимального гамильтонова цикла
WT ≤ Wopt , поскольку при выкидывании ребра из
гамильтонва цикла получается остовное дерево
каждое ребро построенного гамильтонова цикла заменяет
какой-то путь эйлерова цикла, длина которого по
неравенству треугольника не менее длины этого ребра
значит, длина найденного пути не превосходит 2WT ,
а следовательно, и 2Wopt
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 30 / 55
55. 1.5-приближённый алгоритм
1 построить минимальное покрывающее дерево T
2 найти минимальное полное паросочетание
всех вершин дерева T нечетной степени
3 добавить найденные рёбра в дерево T
и найти в полученном графе эйлеров цикл
4 выкинуть из этого цикла все повторения вершин и
вернуть полученный цикл
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 31 / 55
56. Доказательство
как и в предыдущем доказательстве, вес построенного цикла
не превосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 32 / 55
57. Доказательство
как и в предыдущем доказательстве, вес построенного цикла
не превосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 32 / 55
58. Доказательство
как и в предыдущем доказательстве, вес построенного цикла
не превосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
обозначим через A множество всех вершин нечётной степени
дерева T
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 32 / 55
59. Доказательство
как и в предыдущем доказательстве, вес построенного цикла
не превосходит WT + WP , где WP — вес минимального
паросочетания вершин нечетной степени дерева T
нужно показать, что WP ≤ Wopt /2
обозначим через A множество всех вершин нечётной степени
дерева T
рассмотрим такой гамильтонов цикл на вершинах множества
A: вершины множества A в нём будут встречаться в такой
последовательности, в какой они идут в оптимальном
гамильтоновом цикле графа G
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 32 / 55
60. Доказательство (продолжение)
важно отметить, что нам не нужно строить такой цикл; нам
важен лишь факт его существования
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 33 / 55
61. Доказательство (продолжение)
важно отметить, что нам не нужно строить такой цикл; нам
важен лишь факт его существования
разбив вершины только что построенного цикла на чётные и
нечётные, мы получим два паросочетания
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 33 / 55
62. Доказательство (продолжение)
важно отметить, что нам не нужно строить такой цикл; нам
важен лишь факт его существования
разбив вершины только что построенного цикла на чётные и
нечётные, мы получим два паросочетания
вес хотя бы одного из них будет не более Wopt /2
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 33 / 55
63. Доказательство (продолжение)
важно отметить, что нам не нужно строить такой цикл; нам
важен лишь факт его существования
разбив вершины только что построенного цикла на чётные и
нечётные, мы получим два паросочетания
вес хотя бы одного из них будет не более Wopt /2
значит, и вес минимального паросочетания не превосходит
Wopt /2
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 33 / 55
64. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 34 / 55
65. Неприближаемость
Предположим, что существует 𝛼-приближённый алгоритм
для задачи коммивояжёра.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 35 / 55
66. Неприближаемость
Предположим, что существует 𝛼-приближённый алгоритм
для задачи коммивояжёра.
Возьмём тогда произвольный (невзвешенный и
необязательно полный) граф и присвоим всем его рёбрам
вес 1.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 35 / 55
67. Неприближаемость
Предположим, что существует 𝛼-приближённый алгоритм
для задачи коммивояжёра.
Возьмём тогда произвольный (невзвешенный и
необязательно полный) граф и присвоим всем его рёбрам
вес 1.
Между любыми двумя не соединёнными ребром вершинами
добавим ребро веса 𝛼n + 1.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 35 / 55
68. Неприближаемость
Предположим, что существует 𝛼-приближённый алгоритм
для задачи коммивояжёра.
Возьмём тогда произвольный (невзвешенный и
необязательно полный) граф и присвоим всем его рёбрам
вес 1.
Между любыми двумя не соединёнными ребром вершинами
добавим ребро веса 𝛼n + 1.
Заметим теперь, что если в исходном графе существует
гамильтонов цикл, то в новом графе существует
гамильтонов цикл веса n.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 35 / 55
69. Неприближаемость (продолжение)
Если же такого цикла в исходном графе нет, то самый
лёгкий цикл в новом графе имеет вес хотя бы
(𝛼n + 1) + (n − 1) > 𝛼n.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 36 / 55
70. Неприближаемость (продолжение)
Если же такого цикла в исходном графе нет, то самый
лёгкий цикл в новом графе имеет вес хотя бы
(𝛼n + 1) + (n − 1) > 𝛼n.
Таким образом, с помощью 𝛼-приближенного алгоритма для
задачи о коммивояжёре мы можем понять, стоимость
оптимального цикла в построенном графе превосходит n или
нет.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 36 / 55
71. Неприближаемость (продолжение)
Если же такого цикла в исходном графе нет, то самый
лёгкий цикл в новом графе имеет вес хотя бы
(𝛼n + 1) + (n − 1) > 𝛼n.
Таким образом, с помощью 𝛼-приближенного алгоритма для
задачи о коммивояжёре мы можем понять, стоимость
оптимального цикла в построенном графе превосходит n или
нет.
А это позволит нам понять (за полиномиальное время!),
есть в исходном графе гамильтонов цикл или нет.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 36 / 55
72. Неприближаемость (продолжение)
Если же такого цикла в исходном графе нет, то самый
лёгкий цикл в новом графе имеет вес хотя бы
(𝛼n + 1) + (n − 1) > 𝛼n.
Таким образом, с помощью 𝛼-приближенного алгоритма для
задачи о коммивояжёре мы можем понять, стоимость
оптимального цикла в построенном графе превосходит n или
нет.
А это позволит нам понять (за полиномиальное время!),
есть в исходном графе гамильтонов цикл или нет.
Но тогда P = NP.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 36 / 55
73. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 37 / 55
74. Теория и практика
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 38 / 55
75. Теория и практика
Camil Demetrescu. Engineering shortest path algorithms
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 38 / 55
76. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 39 / 55
77. Динамическое программирование
Подзадачи: для подмножества городов S ⊆ {1, 2, . . . , n},
включающего 1, и j ∈ S, обозначим через C [S, j] длину
кратчайшего пути, начинающегося в 1 и заканчивающегося
в j, проходящего через каждый город из множества S ровно
один раз.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 40 / 55
78. Динамическое программирование
Подзадачи: для подмножества городов S ⊆ {1, 2, . . . , n},
включающего 1, и j ∈ S, обозначим через C [S, j] длину
кратчайшего пути, начинающегося в 1 и заканчивающегося
в j, проходящего через каждый город из множества S ровно
один раз.
Пересчёт: C [S, j] = min {C [S ∖ {j}, i] + dij }.
i∈S,i̸=j
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 40 / 55
79. Псевдокод
1 C [{1}, 1] ← 0
2 for s ← 2 to n
3 do for всех S ⊆ {1, 2, . . . , n} размера s, содержащих 1
4 do C [S, 1] ← ∞
5 for всех j ∈ S, j ̸= 1
6 do C [S, j] ← min {C [S ∖ {j}, i] + dij }
i∈S,i̸=j
7 return min C [{1, . . . , n}, j] + dj1
j
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 41 / 55
80. Сложность алгоритма
Время работы данного алгоритма есть O(n2 2n ) = O * (2n ).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 42 / 55
81. Сложность алгоритма
Время работы данного алгоритма есть O(n2 2n ) = O * (2n ).
Более того, памяти ему требуется тоже O * (2n ), что делает
его совсем непрактичным.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 42 / 55
82. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 43 / 55
83. Формула включений-исключений
Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
—
f (X ) = Y ⊆X g (Y ). Тогда
∑︁
g (X ) = (−1)|X −Y | f (Y ) .
Y ⊆X
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 44 / 55
84. Формула включений-исключений
Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
—
f (X ) = Y ⊆X g (Y ). Тогда
∑︁
g (X ) = (−1)|X −Y | f (Y ) .
Y ⊆X
Доказательство
∑︁ ∑︁ ∑︁
(−1)|X −Y | f (Y ) = (−1)|X −Y | g (Z ) =
Y ⊆X Y ⊆X Z ⊆Y
∑︁ ∑︁
= g (Z ) (−1)|X −Y | = g (X )
Z ⊆X Z ⊆Y ⊆X
(последняя сумма равна 1, если Z = X , и нулю иначе).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 44 / 55
85. Задача о гамильтоновом пути
Формулировка задачи: необходимо проверить, есть ли в
данном графе простой путь, проходящий через все вершины,
начинающийся в заданной вершине s и заканчивающийся в
заданной вершине t.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 45 / 55
86. Задача о гамильтоновом пути
Формулировка задачи: необходимо проверить, есть ли в
данном графе простой путь, проходящий через все вершины,
начинающийся в заданной вершине s и заканчивающийся в
заданной вершине t.
Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей
(не обязательно простых! путь может проходить по
некоторым вершинам несколько раз, а по некоторым вообще
не проходить) длины n − 1 из s в t, проходящих только по
вершинам множества X .
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 45 / 55
87. Задача о гамильтоновом пути
Формулировка задачи: необходимо проверить, есть ли в
данном графе простой путь, проходящий через все вершины,
начинающийся в заданной вершине s и заканчивающийся в
заданной вершине t.
Для {s, t} ⊆ X ⊆ V обозначим через g (X ) количество путей
(не обязательно простых! путь может проходить по
некоторым вершинам несколько раз, а по некоторым вообще
не проходить) длины n − 1 из s в t, проходящих только по
вершинам множества X .
Нетрудно видеть, что значение g (X ) содержится в строке s и
столбце t матрицы An−1 , где A — матрица смежности графа
G [X ].
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 45 / 55
88. Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s
в t, проходящих по всем вершинам множества X . В
частности, f (V ) есть количество гамильтоновых путей из s
в t.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 46 / 55
89. Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s
в t, проходящих по всем вершинам множества X . В
частности, f (V ) есть количество гамильтоновых путей из s
в t.
Тогда ∑︁
f (V ) = (−1)|V −Y | g (Y ) .
Y ⊆V
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 46 / 55
90. Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s
в t, проходящих по всем вершинам множества X . В
частности, f (V ) есть количество гамильтоновых путей из s
в t.
Тогда ∑︁
f (V ) = (−1)|V −Y | g (Y ) .
Y ⊆V
Таким образом, количество гамильтоновых путей в графе
может быть найдено за время O * (2n ) и полиномиальную
память.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 46 / 55
91. Задача о гамильтоновом пути (продолжение)
Пусть теперь f (X ) есть количество путей длины n − 1 из s
в t, проходящих по всем вершинам множества X . В
частности, f (V ) есть количество гамильтоновых путей из s
в t.
Тогда ∑︁
f (V ) = (−1)|V −Y | g (Y ) .
Y ⊆V
Таким образом, количество гамильтоновых путей в графе
может быть найдено за время O * (2n ) и полиномиальную
память.
Интересно отметить, что данный алгоритм переизобретался
три раза.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 46 / 55
92. Содержание
1 Введение
2 Эвристики
Метод ветвей и границ
Метод локального поиска
3 Приближённые алгоритмы
1.5-приближение для Metric-TSP
Неприближаемость общего случая
4 Точные алгоритмы
Динамическое программирование
Формула включений-исключений
Матрица Татта и перманент
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 47 / 55
93. Замечание
Далее мы рассмотрим алгоритм Бьорклунда для решения задачи
о гамильтоновом цикле в двудольном графе за время O * (2n/2 ).
Для общего случая задачи коммивояжёра оценка на время
работы алгоритма Бьорклунда составляет O * (1.657n · W ) (W —
максимальный вес ребра).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 48 / 55
94. Перманент матрицы Татта
1 2
x12 x13 x14
x12 x24
x13 x34
3 4 x14 x24 x34
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 49 / 55
95. Перманент матрицы Татта
1 2
x12 x13 x14
x12 x24
x13 x34
3 4 x14 x24 x34
perm(M) =
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 49 / 55
99. Поле характеристики 2
Если вычислять перманент над полем характеристики 2, то
все циклы, не полностью состоящие из циклов длины 2,
сократятся. Действительно, если в покрытии циклами есть
цикл длины не 2, то возьмём первый из них (первый
относительного какого-нибудь фиксированного порядка на
вершинах) и обратим в нём все рёбра. Получим другое
покрытие циклами, которому соответствует тот же самый
моном.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 50 / 55
100. Поле характеристики 2
Если вычислять перманент над полем характеристики 2, то
все циклы, не полностью состоящие из циклов длины 2,
сократятся. Действительно, если в покрытии циклами есть
цикл длины не 2, то возьмём первый из них (первый
относительного какого-нибудь фиксированного порядка на
вершинах) и обратим в нём все рёбра. Получим другое
покрытие циклами, которому соответствует тот же самый
моном.
Мы хотим исправить следующие два момента: во-первых,
чтобы гамильтоновы циклы не сокращались, а во-вторых,
чтобы покрытия с циклами длины 2 всё же пропадали.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 50 / 55
101. Первая цель: оставить гамильтоновы циклы
Сделаем вершину 1 графа выделенной: TG [1, j] = x1j , но
TG [j, 1] = xj1 для ребра {1, j} ∈ E . Тогда каждому гамильтонову
циклу будут соответствовать два разных монома.
x12 x13 x14
x21 x24
x31 x34
x41 x24 x34
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 51 / 55
102. Вторая цель: сократить всё остальное
A 1 1
2 B B
AB BF
C 3 3
BC BD
AF 2 CD BE 5
CE DE
4 D 4
EF
E 5 E
6 F 6
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 52 / 55
103. Почему же всё сократится?
В новом графе нам нужен помеченный гамильтонов цикл.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 53 / 55
104. Почему же всё сократится?
В новом графе нам нужен помеченный гамильтонов цикл.
В матрице Татта теперь будут помеченные переменные:
вместо x24 будет x24,C + x24,E .
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 53 / 55
105. Почему же всё сократится?
В новом графе нам нужен помеченный гамильтонов цикл.
В матрице Татта теперь будут помеченные переменные:
вместо x24 будет x24,C + x24,E .
При вычислении над полем характеристики 2 гамильтоновы
циклы по-прежнему не сократятся (из-за специальной
переменной 1).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 53 / 55
106. Почему же всё сократится?
В новом графе нам нужен помеченный гамильтонов цикл.
В матрице Татта теперь будут помеченные переменные:
вместо x24 будет x24,C + x24,E .
При вычислении над полем характеристики 2 гамильтоновы
циклы по-прежнему не сократятся (из-за специальной
переменной 1).
Всё остальное:
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 53 / 55
107. Почему же всё сократится?
В новом графе нам нужен помеченный гамильтонов цикл.
В матрице Татта теперь будут помеченные переменные:
вместо x24 будет x24,C + x24,E .
При вычислении над полем характеристики 2 гамильтоновы
циклы по-прежнему не сократятся (из-за специальной
переменной 1).
Всё остальное:
покрытия циклами, в которых используются не все
пометки — сократятся по формуле включений-исключений
(рассмотрим все 2n/2 подмножеств пометок);
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 53 / 55
108. Почему же всё сократится?
В новом графе нам нужен помеченный гамильтонов цикл.
В матрице Татта теперь будут помеченные переменные:
вместо x24 будет x24,C + x24,E .
При вычислении над полем характеристики 2 гамильтоновы
циклы по-прежнему не сократятся (из-за специальной
переменной 1).
Всё остальное:
покрытия циклами, в которых используются не все
пометки — сократятся по формуле включений-исключений
(рассмотрим все 2n/2 подмножеств пометок);
негамилтьтоновы покрытия циклами, в которых есть все
пометки, разобьются на пары и сократятся (из-за пометок).
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 53 / 55
109. Литература
A. Bj¨rklund.
o
Determinant sums for undirected Hamiltonicity
Proc. 51st IEEE Symposium on Foundations of Computer
Science (FOCS ’10), pp. 173–182.
M. Held, R. M. Karp
A Dynamic Programming Approach to Sequencing Problems
Journal of the Society for Industrial and Applied Mathematics 10
(1): 196–210.
Paluch, K., Elbassioni, K., Zuylen, A. van.
Simpler Approximation of the Maximum Asymmetric Traveling
Salesman Problem.
STACS’ 12.
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 54 / 55
110. Спасибо!
Спасибо за внимание!
А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 24 февраля 2012 55 / 55