SlideShare ist ein Scribd-Unternehmen logo
1 von 124
Downloaden Sie, um offline zu lesen
Алгоритмы для NP-трудных задач
        Лекции 2–3: Алгоритмы для задачи
                 коммивояжёра

                           Александр Куликов

      Петербургское отделение Математического института им. В. А. Стеклова
                            Российская академия наук


               Computer Science клуб в Екатеринбурге
                          1–2 марта 2013



А. Куликов (ПОМИ РАН)    Алгоритмы для задачи коммивояжёра     1–2 марта 2013   1 / 62
1    Введение

2    Эвристики
       Метод ветвей и границ
       Метод локального поиска

3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии

4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент


    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   2 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   3 / 62
Формулировка задачи


    Задача о гамильтоновом цикле: проверить, есть ли в графе
    цикл, проходящий по каждой вершине ровно один раз.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   4 / 62
Формулировка задачи


    Задача о гамильтоновом цикле: проверить, есть ли в графе
    цикл, проходящий по каждой вершине ровно один раз.
    Задача коммивояжёра: найти в данном полном взвешенном
    графе гамильтонов цикл минимального веса.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   4 / 62
Формулировка задачи


    Задача о гамильтоновом цикле: проверить, есть ли в графе
    цикл, проходящий по каждой вершине ровно один раз.
    Задача коммивояжёра: найти в данном полном взвешенном
    графе гамильтонов цикл минимального веса.
    Периодически мы будем искать не цикл, а путь.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   4 / 62
Формулировка задачи


    Задача о гамильтоновом цикле: проверить, есть ли в графе
    цикл, проходящий по каждой вершине ровно один раз.
    Задача коммивояжёра: найти в данном полном взвешенном
    графе гамильтонов цикл минимального веса.
    Периодически мы будем искать не цикл, а путь.
    Применения: проектирование схем, планирование, сборка
    генома.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   4 / 62
Формулировка задачи


    Задача о гамильтоновом цикле: проверить, есть ли в графе
    цикл, проходящий по каждой вершине ровно один раз.
    Задача коммивояжёра: найти в данном полном взвешенном
    графе гамильтонов цикл минимального веса.
    Периодически мы будем искать не цикл, а путь.
    Применения: проектирование схем, планирование, сборка
    генома.
    Сложность полного перебора: O(n!).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   4 / 62
Цикл по 15 городам Германии



Оптимальный маршрут коммивояжёра че-
рез 15 крупнейших городов Германии. Ука-
занный маршрут является самым коротким
из всех возможных 43 589 145 600.




http://en.wikipedia.org/wiki/Travelling_salesman_problem




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   5 / 62
Цикл по 13 509 городам США




         David Applegate, Robert Bixby, Vasek Chvatal and William Cook.
               The Traveling Salesman Problem: A Computational Study.

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   6 / 62
Оптимальный путь лазера
85 900 «городов»




          David Applegate, Robert Bixby, Vasek Chvatal and William Cook.
                The Traveling Salesman Problem: A Computational Study.

  А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   7 / 62
Ещё интересное


                         http://www.tsp.gatech.edu/
    книги, статьи
    мировые рекорды
    датасеты
    программы
    игры
    триллер




 А. Куликов (ПОМИ РАН)      Алгоритмы для задачи коммивояжёра   1–2 марта 2013   8 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   9 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   10 / 62
Пример графа

                                            1
                                   F                   E
                              2                            2

                         G                                       D
                                            1
                    1                  1           1                 1
                                            5
                         H                                       C

                             1                             1
                                   A                   B
                                            2


 А. Куликов (ПОМИ РАН)       Алгоритмы для задачи коммивояжёра           1–2 марта 2013   11 / 62
Пример графа

                                            1
                                   F                   E
                              2                            2

                         G                                       D
                                            1
                    1                  1           1                 1
                                            5
                         H                                       C

                             1                             1
                                   A                   B
                                            2


 А. Куликов (ПОМИ РАН)       Алгоритмы для задачи коммивояжёра           1–2 марта 2013   11 / 62
Дерево поиска
                                                                      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
 А. Куликов (ПОМИ РАН)                          Алгоритмы для задачи коммивояжёра                        1–2 марта 2013   12 / 62
Дерево поиска
                                                                      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
 А. Куликов (ПОМИ РАН)                          Алгоритмы для задачи коммивояжёра                            1–2 марта 2013              12 / 62
Подзадачи и нижняя граница


    подзадача: [a, S, b] — достроение простого пути из a в b,
    проходящего по всем вершинам из S ∋ a, b (то есть
    кратчайший путь из b в a, проходящий по V ∖ S)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   13 / 62
Подзадачи и нижняя граница


    подзадача: [a, S, b] — достроение простого пути из a в b,
    проходящего по всем вершинам из S ∋ a, b (то есть
    кратчайший путь из b в a, проходящий по V ∖ S)
    начальная задача: [a, {a}, a]




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   13 / 62
Подзадачи и нижняя граница


    подзадача: [a, S, b] — достроение простого пути из a в b,
    проходящего по всем вершинам из S ∋ a, b (то есть
    кратчайший путь из b в a, проходящий по V ∖ S)
    начальная задача: [a, {a}, a]
    нижняя граница — сумма из




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   13 / 62
Подзадачи и нижняя граница


    подзадача: [a, S, b] — достроение простого пути из a в b,
    проходящего по всем вершинам из S ∋ a, b (то есть
    кратчайший путь из b в a, проходящий по V ∖ S)
    начальная задача: [a, {a}, a]
    нижняя граница — сумма из
          самого лёгкого ребра из a в V ∖ S,




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   13 / 62
Подзадачи и нижняя граница


    подзадача: [a, S, b] — достроение простого пути из a в b,
    проходящего по всем вершинам из S ∋ a, b (то есть
    кратчайший путь из b в a, проходящий по V ∖ S)
    начальная задача: [a, {a}, a]
    нижняя граница — сумма из
          самого лёгкого ребра из a в V ∖ S,
          самого лёгкого ребра из b в V ∖ S и




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   13 / 62
Подзадачи и нижняя граница


    подзадача: [a, S, b] — достроение простого пути из a в b,
    проходящего по всем вершинам из S ∋ a, b (то есть
    кратчайший путь из b в a, проходящий по V ∖ S)
    начальная задача: [a, {a}, a]
    нижняя граница — сумма из
          самого лёгкого ребра из a в V ∖ S,
          самого лёгкого ребра из b в V ∖ S и
          минимального покрывающего дерева графа на вершинах
          V ∖ S.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   13 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   14 / 62
Локальный поиск




1 s ← какое-нибудь начальное решение
2 while в окрестности s есть решение s ′ большей стоимости
3      do заменить s на s ′
4 return s




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   15 / 62
2-окружение




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   16 / 62
Узкое место




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   17 / 62
3-окружение




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   18 / 62
Пример локального поиска (с 3-окружением)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   19 / 62
Пример локального поиска (с 3-окружением)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   19 / 62
Пример локального поиска (с 3-окружением)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   19 / 62
Пример локального поиска (с 3-окружением)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   19 / 62
Пример локального поиска (с 3-окружением)




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   19 / 62
Локальный поиск абстрактно


                                                               стоимость




             локальный оптимум
 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   20 / 62
Метод имитации отжига



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




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   21 / 62
Метод имитации отжига абстрактно




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   22 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   23 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   24 / 62
Задача коммивояжёра в метрическом
пространстве




Задача коммивояжёра в метрическом пространстве (Metric TSP):
частный случай для графов, веса рёбер которых удовлетворяют
неравенству треугольника (w (i, j) ≤ w (i, k) + w (k, j)).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   25 / 62
2-приближённый алгоритм




1 построить минимальное покрывающее дерево T
2 продублировать каждое ребро дерева T и
    в полученном графе найти эйлеров цикл
3 выкинуть из этого цикла все повторения вершин и
    вернуть полученный цикл




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   26 / 62
Пример




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   27 / 62
Пример




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   27 / 62
Пример




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   27 / 62
Пример

                                  7
                                 14                   8
                                                 13
                     6    1
                                                 10       11
                                                      9 12
                 3
                     2          4
                         5

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   27 / 62
Пример

                                  7
                                 14                   8
                                                 13
                     6    1
                                                 10       11
                                                      9 12
                 3
                     2          4
                         5

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   27 / 62
Пример




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   27 / 62
Доказательство


    пусть WT — вес минимального остовного дерева, а Wopt —
    вес оптимального гамильтонова цикла




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   28 / 62
Доказательство


    пусть WT — вес минимального остовного дерева, а Wopt —
    вес оптимального гамильтонова цикла
    WT ≤ Wopt , поскольку при выкидывании ребра из
    гамильтонва цикла получается остовное дерево




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   28 / 62
Доказательство


    пусть WT — вес минимального остовного дерева, а Wopt —
    вес оптимального гамильтонова цикла
    WT ≤ Wopt , поскольку при выкидывании ребра из
    гамильтонва цикла получается остовное дерево
    каждое ребро построенного гамильтонова цикла заменяет
    какой-то путь эйлерова цикла, длина которого по
    неравенству треугольника не менее длины этого ребра




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   28 / 62
Доказательство


    пусть WT — вес минимального остовного дерева, а Wopt —
    вес оптимального гамильтонова цикла
    WT ≤ Wopt , поскольку при выкидывании ребра из
    гамильтонва цикла получается остовное дерево
    каждое ребро построенного гамильтонова цикла заменяет
    какой-то путь эйлерова цикла, длина которого по
    неравенству треугольника не менее длины этого ребра
    значит, длина найденного пути не превосходит 2WT ,
    а следовательно, и 2Wopt




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   28 / 62
1.5-приближённый алгоритм



1 построить минимальное покрывающее дерево T
2 найти минимальное полное паросочетание
    всех вершин дерева T нечетной степени
3 добавить найденные рёбра в дерево T
    и найти в полученном графе эйлеров цикл
4 выкинуть из этого цикла все повторения вершин и
    вернуть полученный цикл




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   29 / 62
Доказательство


    как и в предыдущем доказательстве, вес построенного цикла
    не превосходит WT + WP , где WP — вес минимального
    паросочетания вершин нечетной степени дерева T




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   30 / 62
Доказательство


    как и в предыдущем доказательстве, вес построенного цикла
    не превосходит WT + WP , где WP — вес минимального
    паросочетания вершин нечетной степени дерева T
    нужно показать, что WP ≤ Wopt /2




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   30 / 62
Доказательство


    как и в предыдущем доказательстве, вес построенного цикла
    не превосходит WT + WP , где WP — вес минимального
    паросочетания вершин нечетной степени дерева T
    нужно показать, что WP ≤ Wopt /2
    обозначим через A множество всех вершин нечётной степени
    дерева T




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   30 / 62
Доказательство


    как и в предыдущем доказательстве, вес построенного цикла
    не превосходит WT + WP , где WP — вес минимального
    паросочетания вершин нечетной степени дерева T
    нужно показать, что WP ≤ Wopt /2
    обозначим через A множество всех вершин нечётной степени
    дерева T
    рассмотрим такой гамильтонов цикл на вершинах множества
    A: вершины множества A в нём будут встречаться в такой
    последовательности, в какой они идут в оптимальном
    гамильтоновом цикле графа G



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   30 / 62
Доказательство (продолжение)



    важно отметить, что нам не нужно строить такой цикл; нам
    важен лишь факт его существования




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   31 / 62
Доказательство (продолжение)



    важно отметить, что нам не нужно строить такой цикл; нам
    важен лишь факт его существования
    разбив вершины только что построенного цикла на чётные и
    нечётные, мы получим два паросочетания




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   31 / 62
Доказательство (продолжение)



    важно отметить, что нам не нужно строить такой цикл; нам
    важен лишь факт его существования
    разбив вершины только что построенного цикла на чётные и
    нечётные, мы получим два паросочетания
    вес хотя бы одного из них будет не более Wopt /2




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   31 / 62
Доказательство (продолжение)



    важно отметить, что нам не нужно строить такой цикл; нам
    важен лишь факт его существования
    разбив вершины только что построенного цикла на чётные и
    нечётные, мы получим два паросочетания
    вес хотя бы одного из них будет не более Wopt /2
    значит, и вес минимального паросочетания не превосходит
    Wopt /2




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   31 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   32 / 62
Неприближаемость


    Предположим, что существует 𝛼-приближённый алгоритм
    для задачи коммивояжёра.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   33 / 62
Неприближаемость


    Предположим, что существует 𝛼-приближённый алгоритм
    для задачи коммивояжёра.
    Возьмём тогда произвольный (невзвешенный и
    необязательно полный) граф и присвоим всем его рёбрам
    вес 1.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   33 / 62
Неприближаемость


    Предположим, что существует 𝛼-приближённый алгоритм
    для задачи коммивояжёра.
    Возьмём тогда произвольный (невзвешенный и
    необязательно полный) граф и присвоим всем его рёбрам
    вес 1.
    Между любыми двумя не соединёнными ребром вершинами
    добавим ребро веса 𝛼n + 1.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   33 / 62
Неприближаемость


    Предположим, что существует 𝛼-приближённый алгоритм
    для задачи коммивояжёра.
    Возьмём тогда произвольный (невзвешенный и
    необязательно полный) граф и присвоим всем его рёбрам
    вес 1.
    Между любыми двумя не соединёнными ребром вершинами
    добавим ребро веса 𝛼n + 1.
    Заметим теперь, что если в исходном графе существует
    гамильтонов цикл, то в новом графе существует
    гамильтонов цикл веса n.



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   33 / 62
Неприближаемость (продолжение)


    Если же такого цикла в исходном графе нет, то самый
    лёгкий цикл в новом графе имеет вес хотя бы
    (𝛼n + 1) + (n − 1) > 𝛼n.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   34 / 62
Неприближаемость (продолжение)


    Если же такого цикла в исходном графе нет, то самый
    лёгкий цикл в новом графе имеет вес хотя бы
    (𝛼n + 1) + (n − 1) > 𝛼n.
    Таким образом, с помощью 𝛼-приближенного алгоритма для
    задачи о коммивояжёре мы можем понять, стоимость
    оптимального цикла в построенном графе превосходит n или
    нет.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   34 / 62
Неприближаемость (продолжение)


    Если же такого цикла в исходном графе нет, то самый
    лёгкий цикл в новом графе имеет вес хотя бы
    (𝛼n + 1) + (n − 1) > 𝛼n.
    Таким образом, с помощью 𝛼-приближенного алгоритма для
    задачи о коммивояжёре мы можем понять, стоимость
    оптимального цикла в построенном графе превосходит n или
    нет.
    А это позволит нам понять (за полиномиальное время!),
    есть в исходном графе гамильтонов цикл или нет.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   34 / 62
Неприближаемость (продолжение)


    Если же такого цикла в исходном графе нет, то самый
    лёгкий цикл в новом графе имеет вес хотя бы
    (𝛼n + 1) + (n − 1) > 𝛼n.
    Таким образом, с помощью 𝛼-приближенного алгоритма для
    задачи о коммивояжёре мы можем понять, стоимость
    оптимального цикла в построенном графе превосходит n или
    нет.
    А это позволит нам понять (за полиномиальное время!),
    есть в исходном графе гамильтонов цикл или нет.
    Но тогда P = NP.



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   34 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   35 / 62
Покрытие ориентированными циклами

                         4




         5                              3




                1               2


 А. Куликов (ПОМИ РАН)       Алгоритмы для задачи коммивояжёра   1–2 марта 2013   36 / 62
Покрытие ориентированными циклами

                         4                              1                  1


                                                        2                  2


         5                              3               3                  3


                                                        4                  4


                1               2                       5                  5


 А. Куликов (ПОМИ РАН)       Алгоритмы для задачи коммивояжёра   1–2 марта 2013   36 / 62
Покрытие ориентированными циклами

                         4                              1                  1


                                                        2                  2


         5                              3               3                  3


                                                        4                  4


                1               2                       5                  5


 А. Куликов (ПОМИ РАН)       Алгоритмы для задачи коммивояжёра   1–2 марта 2013   36 / 62
Покрытие ориентированными циклами

                         4                              1                  1


                                                        2                  2


         5                              3               3                  3


                                                        4                  4


                1               2                       5                  5


 А. Куликов (ПОМИ РАН)       Алгоритмы для задачи коммивояжёра   1–2 марта 2013   36 / 62
1/2-приближение для максимизационной версии




    Найдём покрытие циклами максимального веса. Выкинем из
    каждого цикла самое лёгкое ребро (при этом суммарный вес
    уменьшится не более чем вдвое). Соединим полученные
    пути произвольно.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   37 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   38 / 62
Теория и практика




                    Camil Demetrescu. Engineering shortest path algorithms


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   39 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   40 / 62
Динамическое программирование



    Подзадачи: для подмножества городов S ⊆ {1, 2, . . . , n},
    включающего 1 и j, обозначим через C [S, j] длину
    кратчайшего пути, начинающегося в 1 и заканчивающегося
    в j, проходящего через каждый город из множества S ровно
    один раз.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   41 / 62
Динамическое программирование



    Подзадачи: для подмножества городов S ⊆ {1, 2, . . . , n},
    включающего 1 и j, обозначим через C [S, j] длину
    кратчайшего пути, начинающегося в 1 и заканчивающегося
    в j, проходящего через каждый город из множества S ровно
    один раз.
    Пересчёт: C [S, j] = min {C [S ∖ {j}, i] + dij }.
                             i∈S,i̸=j




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   41 / 62
Псевдокод



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




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   42 / 62
Сложность алгоритма




    Время работы данного алгоритма есть O(n2 2n ) = O * (2n ).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   43 / 62
Сложность алгоритма




    Время работы данного алгоритма есть O(n2 2n ) = O * (2n ).
    Более того, памяти ему требуется тоже O * (2n ), что делает
    его совсем непрактичным.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   43 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   44 / 62
Формула включений-исключений
Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч.
        —
f (X ) = Y ⊆X g (Y ). Тогда
                                    ∑︁
                         g (X ) =          (−1)|X −Y | f (Y ) .
                                    Y ⊆X




 А. Куликов (ПОМИ РАН)     Алгоритмы для задачи коммивояжёра      1–2 марта 2013   45 / 62
Формула включений-исключений
Пусть 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 , и нулю иначе).
 А. Куликов (ПОМИ РАН)     Алгоритмы для задачи коммивояжёра          1–2 марта 2013   45 / 62
Задача о гамильтоновом пути

    Формулировка задачи: необходимо проверить, есть ли в
    данном графе простой путь, проходящий через все вершины,
    начинающийся в заданной вершине s и заканчивающийся в
    заданной вершине t.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   46 / 62
Задача о гамильтоновом пути

    Формулировка задачи: необходимо проверить, есть ли в
    данном графе простой путь, проходящий через все вершины,
    начинающийся в заданной вершине s и заканчивающийся в
    заданной вершине t.
    Для {s, t} ⊆ X ⊆ V обозначим через f (X ) количество путей
    (не обязательно простых! путь может проходить по
    некоторым вершинам несколько раз, а по некоторым вообще
    не проходить) длины n − 1 из s в t, проходящих только по
    вершинам множества X .




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   46 / 62
Задача о гамильтоновом пути

    Формулировка задачи: необходимо проверить, есть ли в
    данном графе простой путь, проходящий через все вершины,
    начинающийся в заданной вершине s и заканчивающийся в
    заданной вершине t.
    Для {s, t} ⊆ X ⊆ V обозначим через f (X ) количество путей
    (не обязательно простых! путь может проходить по
    некоторым вершинам несколько раз, а по некоторым вообще
    не проходить) длины n − 1 из s в t, проходящих только по
    вершинам множества X .
    Нетрудно видеть, что значение f (X ) содержится в строке s и
    столбце t матрицы An−1 , где A — матрица смежности графа
    G [X ].


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   46 / 62
Задача о гамильтоновом пути (продолжение)

    Пусть теперь g (X ) есть количество путей длины n − 1 из s
    в t, проходящих по всем вершинам множества X . В
    частности, g (V ) есть количество гамильтоновых путей из s
    в t.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   47 / 62
Задача о гамильтоновом пути (продолжение)

    Пусть теперь g (X ) есть количество путей длины n − 1 из s
    в t, проходящих по всем вершинам множества X . В
    частности, g (V ) есть количество гамильтоновых путей из s
    в t.
    Тогда                      ∑︁
                      g (V ) =    (−1)|V −Y | f (Y ) .
                                    Y ⊆V




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   47 / 62
Задача о гамильтоновом пути (продолжение)

    Пусть теперь g (X ) есть количество путей длины n − 1 из s
    в t, проходящих по всем вершинам множества X . В
    частности, g (V ) есть количество гамильтоновых путей из s
    в t.
    Тогда                      ∑︁
                      g (V ) =    (−1)|V −Y | f (Y ) .
                                    Y ⊆V

    Таким образом, количество гамильтоновых путей в графе
    может быть найдено за время O * (2n ) и полиномиальную
    память.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   47 / 62
Задача о гамильтоновом пути (продолжение)

    Пусть теперь g (X ) есть количество путей длины n − 1 из s
    в t, проходящих по всем вершинам множества X . В
    частности, g (V ) есть количество гамильтоновых путей из s
    в t.
    Тогда                      ∑︁
                      g (V ) =    (−1)|V −Y | f (Y ) .
                                    Y ⊆V

    Таким образом, количество гамильтоновых путей в графе
    может быть найдено за время O * (2n ) и полиномиальную
    память.
    Интересно отметить, что данный алгоритм переизобретался
    три раза.

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   47 / 62
Содержание
1    Введение
2    Эвристики
       Метод ветвей и границ
       Метод локального поиска
3    Приближённые алгоритмы
       1.5-приближение для Metric-TSP
       Неприближаемость общего случая
       1/2-приближение для максимизационной версии
4    Точные алгоритмы
       Динамическое программирование
       Формула включений-исключений
       Матрица Татта и перманент

    А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   48 / 62
Замечание



Далее мы рассмотрим алгоритм Бьорклунда для решения задачи
о гамильтоновом цикле в двудольном графе за время O * (2n/2 ).
Для общего случая задачи коммивояжёра оценка на время
работы алгоритма Бьорклунда составляет O * (1.657n · W ) (W —
максимальный вес ребра).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   49 / 62
Перманент матрицы Татта


                 1                 2
                                                                   x12 x13 x14
                                                             x12                x24
                                                             x13                x34
                 3                 4                         x14 x24 x34




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра     1–2 марта 2013     50 / 62
Перманент матрицы Татта


                 1                 2
                                                                   x12 x13 x14
                                                             x12                x24
                                                             x13                x34
                 3                 4                         x14 x24 x34



 perm(M) =


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра     1–2 марта 2013     50 / 62
Перманент матрицы Татта


                 1                 2
                                                                   x12 x13 x14
                                                             x12                x24
                                                             x13                x34
                 3                 4                         x14 x24 x34



 perm(M) = x12 x24 x43 x31 + . . .


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра     1–2 марта 2013     50 / 62
Перманент матрицы Татта


                 1                 2
                                                                   x12 x13 x14
                                                             x12                x24
                                                             x13                x34
                 3                 4                         x14 x24 x34



                              2 2
 perm(M) = x12 x24 x43 x31 + x13 x24 + . . .


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра     1–2 марта 2013     50 / 62
Перманент матрицы Татта


                 1                 2
                                                                   x12 x13 x14
                                                             x12                x24
                                                             x13                x34
                 3                 4                         x14 x24 x34


                              2 2
 perm(M) = x12 x24 x43 x31 + x13 x24 +
 x12 x24 x43 x31 + . . .


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра     1–2 марта 2013     50 / 62
Поле характеристики 2

    Если вычислять перманент над полем характеристики 2, то
    все циклы, не полностью состоящие из циклов длины 2,
    сократятся. Действительно, если в покрытии циклами есть
    цикл длины не 2, то возьмём первый из них (первый
    относительного какого-нибудь фиксированного порядка на
    вершинах) и обратим в нём все рёбра. Получим другое
    покрытие циклами, которому соответствует тот же самый
    моном.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   51 / 62
Поле характеристики 2

    Если вычислять перманент над полем характеристики 2, то
    все циклы, не полностью состоящие из циклов длины 2,
    сократятся. Действительно, если в покрытии циклами есть
    цикл длины не 2, то возьмём первый из них (первый
    относительного какого-нибудь фиксированного порядка на
    вершинах) и обратим в нём все рёбра. Получим другое
    покрытие циклами, которому соответствует тот же самый
    моном.
    Мы хотим исправить следующие два момента: во-первых,
    чтобы гамильтоновы циклы не сокращались, а во-вторых,
    чтобы покрытия с циклами длины 2 всё же пропадали.



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   51 / 62
Первая цель: оставить гамильтоновы циклы

Сделаем вершину 1 графа выделенной: TG [1, j] = x1j , но
TG [j, 1] = xj1 для ребра {1, j} ∈ E . Тогда каждому гамильтонову
циклу будут соответствовать два разных монома.

                                    x12 x13 x14
                              x21               x24
                              x31               x34
                              x41 x24 x34




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   52 / 62
Вторая цель: сократить всё остальное


 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


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра       1–2 марта 2013   53 / 62
Почему же всё сократится?

    В новом графе нам нужен помеченный гамильтонов цикл.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   54 / 62
Почему же всё сократится?

    В новом графе нам нужен помеченный гамильтонов цикл.
    В матрице Татта теперь будут помеченные переменные:
    вместо x24 будет x24,C + x24,E .




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   54 / 62
Почему же всё сократится?

    В новом графе нам нужен помеченный гамильтонов цикл.
    В матрице Татта теперь будут помеченные переменные:
    вместо x24 будет x24,C + x24,E .
    При вычислении над полем характеристики 2 гамильтоновы
    циклы по-прежнему не сократятся (из-за специальной
    переменной 1).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   54 / 62
Почему же всё сократится?

    В новом графе нам нужен помеченный гамильтонов цикл.
    В матрице Татта теперь будут помеченные переменные:
    вместо x24 будет x24,C + x24,E .
    При вычислении над полем характеристики 2 гамильтоновы
    циклы по-прежнему не сократятся (из-за специальной
    переменной 1).
    Всё остальное:




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   54 / 62
Почему же всё сократится?

    В новом графе нам нужен помеченный гамильтонов цикл.
    В матрице Татта теперь будут помеченные переменные:
    вместо x24 будет x24,C + x24,E .
    При вычислении над полем характеристики 2 гамильтоновы
    циклы по-прежнему не сократятся (из-за специальной
    переменной 1).
    Всё остальное:
          покрытия циклами, в которых используются не все
          пометки — сократятся по формуле включений-исключений
          (рассмотрим все 2n/2 подмножеств пометок);




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   54 / 62
Почему же всё сократится?

    В новом графе нам нужен помеченный гамильтонов цикл.
    В матрице Татта теперь будут помеченные переменные:
    вместо x24 будет x24,C + x24,E .
    При вычислении над полем характеристики 2 гамильтоновы
    циклы по-прежнему не сократятся (из-за специальной
    переменной 1).
    Всё остальное:
          покрытия циклами, в которых используются не все
          пометки — сократятся по формуле включений-исключений
          (рассмотрим все 2n/2 подмножеств пометок);
          негамилтьтоновы покрытия циклами, в которых есть все
          пометки, разобьются на пары и сократятся (из-за пометок).


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   54 / 62
Получившийся алгоритм


    Рассмотрим многочлен
                                        ∑︁
                             P(¯) =
                               x              perm(MS ).
                                        S⊆L




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   55 / 62
Получившийся алгоритм


    Рассмотрим многочлен
                                        ∑︁
                             P(¯) =
                               x              perm(MS ).
                                        S⊆L

    Как мы уже выяснили, этот многочлен не равен нулю тогда
    и только тогда, когда в графе есть гамильтонов цикл.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   55 / 62
Получившийся алгоритм


    Рассмотрим многочлен
                                        ∑︁
                             P(¯) =
                               x              perm(MS ).
                                        S⊆L

    Как мы уже выяснили, этот многочлен не равен нулю тогда
    и только тогда, когда в графе есть гамильтонов цикл.
    Проверять, равен он нулю или нет, мы будем вероятностно:
    подставим случайные значения всем переменным; если
    получился не ноль, то и многочлен точно не равен нулю; в
    противном случае мы могли попасть в корень.



 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   55 / 62
Проверка равенства нулю многочлена


Лемма
Пусть P — ненулевой многочлен полной степени d над полем F и
пусть S ⊆ F. Тогда

                 Prr1 ,...,rn ∈S {P(r1 , . . . , rn ) = 0} ≤ d/|S| .




 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи коммивояжёра       1–2 марта 2013   56 / 62
Проверка равенства нулю многочлена


Лемма
Пусть P — ненулевой многочлен полной степени d над полем F и
пусть S ⊆ F. Тогда

                 Prr1 ,...,rn ∈S {P(r1 , . . . , rn ) = 0} ≤ d/|S| .

Доказательство
Индукция по n. При n = 1 утверждение верно, поскольку у
многочлена степени d от одной переменной может быть не более
d корней.



 А. Куликов (ПОМИ РАН)    Алгоритмы для задачи коммивояжёра       1–2 марта 2013   56 / 62
Переход
Разложим многочлен P по степеням переменной xn :
                                          k
                                         ∑︁
                                                i
                 P(x1 , . . . , xn ) =         xn Pi (x1 , . . . , xn−1 ) ,
                                         i=0

где deg(Pi ) ≤ d − i, k ≤ d и Pk ̸≡ 0. Распишем теперь по
формуле полной вероятности:

                         Pr{P(r1 , . . . , rn ) = 0} =
           Pr{P(r1 , . . . , rn ) = 0 ∧ Pk (r1 , . . . , rn−1 ) = 0}+
           Pr{P(r1 , . . . , rn ) = 0 ∧ Pk (r1 , . . . , rn−1 ) ̸= 0} ≤
     (d − k)/|S| + Pr{P(r1 , . . . , rn ) = 0 | Pk (r1 , . . . , rn−1 ) ̸= 0}
                     (d − k)/|S| + k/|S| = d/|S|


 А. Куликов (ПОМИ РАН)     Алгоритмы для задачи коммивояжёра             1–2 марта 2013   57 / 62
Открытые задачи


Открытые задачи
    Точный алгоритм для задачи о гамильтоновом цикле в
    ориентированных графах за O * (1.99n ).




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   58 / 62
Открытые задачи


Открытые задачи
    Точный алгоритм для задачи о гамильтоновом цикле в
    ориентированных графах за O * (1.99n ).
    Какое-нибудь константное приближение для metric TSP в
    ориентированных графах.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   58 / 62
Открытые задачи


Открытые задачи
    Точный алгоритм для задачи о гамильтоновом цикле в
    ориентированных графах за O * (1.99n ).
    Какое-нибудь константное приближение для metric TSP в
    ориентированных графах.
    Приближение лучше 1.5 для metric TSP в
    неориентированных графах.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   58 / 62
Открытые задачи


Открытые задачи
    Точный алгоритм для задачи о гамильтоновом цикле в
    ориентированных графах за O * (1.99n ).
    Какое-нибудь константное приближение для metric TSP в
    ориентированных графах.
    Приближение лучше 1.5 для metric TSP в
    неориентированных графах.
    Приближение лучше 2/3 для максимального цикла
    коммивояжёра.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   58 / 62
Литература I

    Held, M., Karp, R. M.
    A dynamic programming approach to sequencing problems. 1962.
    Lin, Shen; Kernighan, B. W.
    An Effective Heuristic Algorithm for the Traveling-Salesman
    Problem. 1973.
    Christofides, N.
    Worst-case analysis of a new heuristic for the travelling salesman
    problem. 1973.
    Kohn, S., Gottlieb, A., Kohn, M.
    A generating function approach to the traveling salesman
    problem. 1977.


 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   59 / 62
Литература II
    Lawler, E. L.; Lenstra, J. K.; Rinnooy Kan, A. H. G.; Shmoys,
    D. B.
    The Traveling Salesman Problem: A Guided Tour of
    Combinatorial Optimization. 1985.
    Goldberg, D. E. Genetic Algorithms in Search, Optimization and
    Machine Learning. 1989.
    Arora, S.
    Polynomial time approximation schemes for Euclidean traveling
    salesman and other geometric problems. 1998.
    Applegate, D. L.; Bixby, R. E.; Chv´tal, V.; Cook, W. J.
                                        a
    The Traveling Salesman Problem: A Computational Study. 2006.
    Bj¨rklund, A.
      o
    Determinant Sums for Undirected Hamiltonicity. 2010.

 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   60 / 62
Литература III


    Cook, W.
    In Pursuit of the Travelling Salesman: Mathematics at the Limits
    of Computation. 2011.
    Paluch, K., Elbassioni, K., Zuylen, A. van.
    Simpler Approximation of the Maximum Asymmetric Traveling
    Salesman Problem. 2012.
    Cygan, M., Kratsch, S., Nederlof, J.
    Fast Hamiltonicity checking via bases of perfect matchings.
    2013.




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   61 / 62
Спасибо!




      Спасибо за внимание!




 А. Куликов (ПОМИ РАН)   Алгоритмы для задачи коммивояжёра   1–2 марта 2013   62 / 62

Weitere ähnliche Inhalte

Mehr von Computer Science Club

20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 
20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrison20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrisonComputer Science Club
 
20130915 lecture1 2-tarski_matiyasevich
20130915 lecture1 2-tarski_matiyasevich20130915 lecture1 2-tarski_matiyasevich
20130915 lecture1 2-tarski_matiyasevichComputer Science Club
 

Mehr von Computer Science Club (20)

20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 
20130922 h10 lecture1_matiyasevich
20130922 h10 lecture1_matiyasevich20130922 h10 lecture1_matiyasevich
20130922 h10 lecture1_matiyasevich
 
20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrison20130928 automated theorem_proving_harrison
20130928 automated theorem_proving_harrison
 
20130922 lecture3 matiyasevich
20130922 lecture3 matiyasevich20130922 lecture3 matiyasevich
20130922 lecture3 matiyasevich
 
20130915 lecture1 2-tarski_matiyasevich
20130915 lecture1 2-tarski_matiyasevich20130915 lecture1 2-tarski_matiyasevich
20130915 lecture1 2-tarski_matiyasevich
 

20130301 np algorithms_kulikov_lecture02-03_tsp

  • 1. Алгоритмы для NP-трудных задач Лекции 2–3: Алгоритмы для задачи коммивояжёра Александр Куликов Петербургское отделение Математического института им. В. А. Стеклова Российская академия наук Computer Science клуб в Екатеринбурге 1–2 марта 2013 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 1 / 62
  • 2. 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 2 / 62
  • 3. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 3 / 62
  • 4. Формулировка задачи Задача о гамильтоновом цикле: проверить, есть ли в графе цикл, проходящий по каждой вершине ровно один раз. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 4 / 62
  • 5. Формулировка задачи Задача о гамильтоновом цикле: проверить, есть ли в графе цикл, проходящий по каждой вершине ровно один раз. Задача коммивояжёра: найти в данном полном взвешенном графе гамильтонов цикл минимального веса. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 4 / 62
  • 6. Формулировка задачи Задача о гамильтоновом цикле: проверить, есть ли в графе цикл, проходящий по каждой вершине ровно один раз. Задача коммивояжёра: найти в данном полном взвешенном графе гамильтонов цикл минимального веса. Периодически мы будем искать не цикл, а путь. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 4 / 62
  • 7. Формулировка задачи Задача о гамильтоновом цикле: проверить, есть ли в графе цикл, проходящий по каждой вершине ровно один раз. Задача коммивояжёра: найти в данном полном взвешенном графе гамильтонов цикл минимального веса. Периодически мы будем искать не цикл, а путь. Применения: проектирование схем, планирование, сборка генома. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 4 / 62
  • 8. Формулировка задачи Задача о гамильтоновом цикле: проверить, есть ли в графе цикл, проходящий по каждой вершине ровно один раз. Задача коммивояжёра: найти в данном полном взвешенном графе гамильтонов цикл минимального веса. Периодически мы будем искать не цикл, а путь. Применения: проектирование схем, планирование, сборка генома. Сложность полного перебора: O(n!). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 4 / 62
  • 9. Цикл по 15 городам Германии Оптимальный маршрут коммивояжёра че- рез 15 крупнейших городов Германии. Ука- занный маршрут является самым коротким из всех возможных 43 589 145 600. http://en.wikipedia.org/wiki/Travelling_salesman_problem А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 5 / 62
  • 10. Цикл по 13 509 городам США David Applegate, Robert Bixby, Vasek Chvatal and William Cook. The Traveling Salesman Problem: A Computational Study. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 6 / 62
  • 11. Оптимальный путь лазера 85 900 «городов» David Applegate, Robert Bixby, Vasek Chvatal and William Cook. The Traveling Salesman Problem: A Computational Study. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 7 / 62
  • 12. Ещё интересное http://www.tsp.gatech.edu/ книги, статьи мировые рекорды датасеты программы игры триллер А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 8 / 62
  • 13. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 9 / 62
  • 14. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 10 / 62
  • 15. Пример графа 1 F E 2 2 G D 1 1 1 1 1 5 H C 1 1 A B 2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 11 / 62
  • 16. Пример графа 1 F E 2 2 G D 1 1 1 1 1 5 H C 1 1 A B 2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 11 / 62
  • 17. Дерево поиска 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 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 12 / 62
  • 18. Дерево поиска 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 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 12 / 62
  • 19. Подзадачи и нижняя граница подзадача: [a, S, b] — достроение простого пути из a в b, проходящего по всем вершинам из S ∋ a, b (то есть кратчайший путь из b в a, проходящий по V ∖ S) А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 13 / 62
  • 20. Подзадачи и нижняя граница подзадача: [a, S, b] — достроение простого пути из a в b, проходящего по всем вершинам из S ∋ a, b (то есть кратчайший путь из b в a, проходящий по V ∖ S) начальная задача: [a, {a}, a] А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 13 / 62
  • 21. Подзадачи и нижняя граница подзадача: [a, S, b] — достроение простого пути из a в b, проходящего по всем вершинам из S ∋ a, b (то есть кратчайший путь из b в a, проходящий по V ∖ S) начальная задача: [a, {a}, a] нижняя граница — сумма из А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 13 / 62
  • 22. Подзадачи и нижняя граница подзадача: [a, S, b] — достроение простого пути из a в b, проходящего по всем вершинам из S ∋ a, b (то есть кратчайший путь из b в a, проходящий по V ∖ S) начальная задача: [a, {a}, a] нижняя граница — сумма из самого лёгкого ребра из a в V ∖ S, А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 13 / 62
  • 23. Подзадачи и нижняя граница подзадача: [a, S, b] — достроение простого пути из a в b, проходящего по всем вершинам из S ∋ a, b (то есть кратчайший путь из b в a, проходящий по V ∖ S) начальная задача: [a, {a}, a] нижняя граница — сумма из самого лёгкого ребра из a в V ∖ S, самого лёгкого ребра из b в V ∖ S и А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 13 / 62
  • 24. Подзадачи и нижняя граница подзадача: [a, S, b] — достроение простого пути из a в b, проходящего по всем вершинам из S ∋ a, b (то есть кратчайший путь из b в a, проходящий по V ∖ S) начальная задача: [a, {a}, a] нижняя граница — сумма из самого лёгкого ребра из a в V ∖ S, самого лёгкого ребра из b в V ∖ S и минимального покрывающего дерева графа на вершинах V ∖ S. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 13 / 62
  • 25. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 14 / 62
  • 26. Локальный поиск 1 s ← какое-нибудь начальное решение 2 while в окрестности s есть решение s ′ большей стоимости 3 do заменить s на s ′ 4 return s А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 15 / 62
  • 27. 2-окружение А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 16 / 62
  • 28. Узкое место А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 17 / 62
  • 29. 3-окружение А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 18 / 62
  • 30. Пример локального поиска (с 3-окружением) А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 19 / 62
  • 31. Пример локального поиска (с 3-окружением) А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 19 / 62
  • 32. Пример локального поиска (с 3-окружением) А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 19 / 62
  • 33. Пример локального поиска (с 3-окружением) А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 19 / 62
  • 34. Пример локального поиска (с 3-окружением) А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 19 / 62
  • 35. Локальный поиск абстрактно стоимость локальный оптимум А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 20 / 62
  • 36. Метод имитации отжига 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 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 21 / 62
  • 37. Метод имитации отжига абстрактно А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 22 / 62
  • 38. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 23 / 62
  • 39. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 24 / 62
  • 40. Задача коммивояжёра в метрическом пространстве Задача коммивояжёра в метрическом пространстве (Metric TSP): частный случай для графов, веса рёбер которых удовлетворяют неравенству треугольника (w (i, j) ≤ w (i, k) + w (k, j)). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 25 / 62
  • 41. 2-приближённый алгоритм 1 построить минимальное покрывающее дерево T 2 продублировать каждое ребро дерева T и в полученном графе найти эйлеров цикл 3 выкинуть из этого цикла все повторения вершин и вернуть полученный цикл А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 26 / 62
  • 42. Пример А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 27 / 62
  • 43. Пример А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 27 / 62
  • 44. Пример А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 27 / 62
  • 45. Пример 7 14 8 13 6 1 10 11 9 12 3 2 4 5 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 27 / 62
  • 46. Пример 7 14 8 13 6 1 10 11 9 12 3 2 4 5 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 27 / 62
  • 47. Пример А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 27 / 62
  • 48. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 28 / 62
  • 49. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 28 / 62
  • 50. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево каждое ребро построенного гамильтонова цикла заменяет какой-то путь эйлерова цикла, длина которого по неравенству треугольника не менее длины этого ребра А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 28 / 62
  • 51. Доказательство пусть WT — вес минимального остовного дерева, а Wopt — вес оптимального гамильтонова цикла WT ≤ Wopt , поскольку при выкидывании ребра из гамильтонва цикла получается остовное дерево каждое ребро построенного гамильтонова цикла заменяет какой-то путь эйлерова цикла, длина которого по неравенству треугольника не менее длины этого ребра значит, длина найденного пути не превосходит 2WT , а следовательно, и 2Wopt А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 28 / 62
  • 52. 1.5-приближённый алгоритм 1 построить минимальное покрывающее дерево T 2 найти минимальное полное паросочетание всех вершин дерева T нечетной степени 3 добавить найденные рёбра в дерево T и найти в полученном графе эйлеров цикл 4 выкинуть из этого цикла все повторения вершин и вернуть полученный цикл А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 29 / 62
  • 53. Доказательство как и в предыдущем доказательстве, вес построенного цикла не превосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 30 / 62
  • 54. Доказательство как и в предыдущем доказательстве, вес построенного цикла не превосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 30 / 62
  • 55. Доказательство как и в предыдущем доказательстве, вес построенного цикла не превосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 обозначим через A множество всех вершин нечётной степени дерева T А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 30 / 62
  • 56. Доказательство как и в предыдущем доказательстве, вес построенного цикла не превосходит WT + WP , где WP — вес минимального паросочетания вершин нечетной степени дерева T нужно показать, что WP ≤ Wopt /2 обозначим через A множество всех вершин нечётной степени дерева T рассмотрим такой гамильтонов цикл на вершинах множества A: вершины множества A в нём будут встречаться в такой последовательности, в какой они идут в оптимальном гамильтоновом цикле графа G А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 30 / 62
  • 57. Доказательство (продолжение) важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 31 / 62
  • 58. Доказательство (продолжение) важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на чётные и нечётные, мы получим два паросочетания А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 31 / 62
  • 59. Доказательство (продолжение) важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на чётные и нечётные, мы получим два паросочетания вес хотя бы одного из них будет не более Wopt /2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 31 / 62
  • 60. Доказательство (продолжение) важно отметить, что нам не нужно строить такой цикл; нам важен лишь факт его существования разбив вершины только что построенного цикла на чётные и нечётные, мы получим два паросочетания вес хотя бы одного из них будет не более Wopt /2 значит, и вес минимального паросочетания не превосходит Wopt /2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 31 / 62
  • 61. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 32 / 62
  • 62. Неприближаемость Предположим, что существует 𝛼-приближённый алгоритм для задачи коммивояжёра. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 33 / 62
  • 63. Неприближаемость Предположим, что существует 𝛼-приближённый алгоритм для задачи коммивояжёра. Возьмём тогда произвольный (невзвешенный и необязательно полный) граф и присвоим всем его рёбрам вес 1. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 33 / 62
  • 64. Неприближаемость Предположим, что существует 𝛼-приближённый алгоритм для задачи коммивояжёра. Возьмём тогда произвольный (невзвешенный и необязательно полный) граф и присвоим всем его рёбрам вес 1. Между любыми двумя не соединёнными ребром вершинами добавим ребро веса 𝛼n + 1. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 33 / 62
  • 65. Неприближаемость Предположим, что существует 𝛼-приближённый алгоритм для задачи коммивояжёра. Возьмём тогда произвольный (невзвешенный и необязательно полный) граф и присвоим всем его рёбрам вес 1. Между любыми двумя не соединёнными ребром вершинами добавим ребро веса 𝛼n + 1. Заметим теперь, что если в исходном графе существует гамильтонов цикл, то в новом графе существует гамильтонов цикл веса n. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 33 / 62
  • 66. Неприближаемость (продолжение) Если же такого цикла в исходном графе нет, то самый лёгкий цикл в новом графе имеет вес хотя бы (𝛼n + 1) + (n − 1) > 𝛼n. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 34 / 62
  • 67. Неприближаемость (продолжение) Если же такого цикла в исходном графе нет, то самый лёгкий цикл в новом графе имеет вес хотя бы (𝛼n + 1) + (n − 1) > 𝛼n. Таким образом, с помощью 𝛼-приближенного алгоритма для задачи о коммивояжёре мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 34 / 62
  • 68. Неприближаемость (продолжение) Если же такого цикла в исходном графе нет, то самый лёгкий цикл в новом графе имеет вес хотя бы (𝛼n + 1) + (n − 1) > 𝛼n. Таким образом, с помощью 𝛼-приближенного алгоритма для задачи о коммивояжёре мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет. А это позволит нам понять (за полиномиальное время!), есть в исходном графе гамильтонов цикл или нет. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 34 / 62
  • 69. Неприближаемость (продолжение) Если же такого цикла в исходном графе нет, то самый лёгкий цикл в новом графе имеет вес хотя бы (𝛼n + 1) + (n − 1) > 𝛼n. Таким образом, с помощью 𝛼-приближенного алгоритма для задачи о коммивояжёре мы можем понять, стоимость оптимального цикла в построенном графе превосходит n или нет. А это позволит нам понять (за полиномиальное время!), есть в исходном графе гамильтонов цикл или нет. Но тогда P = NP. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 34 / 62
  • 70. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 35 / 62
  • 71. Покрытие ориентированными циклами 4 5 3 1 2 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 36 / 62
  • 72. Покрытие ориентированными циклами 4 1 1 2 2 5 3 3 3 4 4 1 2 5 5 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 36 / 62
  • 73. Покрытие ориентированными циклами 4 1 1 2 2 5 3 3 3 4 4 1 2 5 5 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 36 / 62
  • 74. Покрытие ориентированными циклами 4 1 1 2 2 5 3 3 3 4 4 1 2 5 5 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 36 / 62
  • 75. 1/2-приближение для максимизационной версии Найдём покрытие циклами максимального веса. Выкинем из каждого цикла самое лёгкое ребро (при этом суммарный вес уменьшится не более чем вдвое). Соединим полученные пути произвольно. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 37 / 62
  • 76. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 38 / 62
  • 77. Теория и практика Camil Demetrescu. Engineering shortest path algorithms А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 39 / 62
  • 78. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 40 / 62
  • 79. Динамическое программирование Подзадачи: для подмножества городов S ⊆ {1, 2, . . . , n}, включающего 1 и j, обозначим через C [S, j] длину кратчайшего пути, начинающегося в 1 и заканчивающегося в j, проходящего через каждый город из множества S ровно один раз. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 41 / 62
  • 80. Динамическое программирование Подзадачи: для подмножества городов S ⊆ {1, 2, . . . , n}, включающего 1 и j, обозначим через C [S, j] длину кратчайшего пути, начинающегося в 1 и заканчивающегося в j, проходящего через каждый город из множества S ровно один раз. Пересчёт: C [S, j] = min {C [S ∖ {j}, i] + dij }. i∈S,i̸=j А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 41 / 62
  • 81. Псевдокод 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 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 42 / 62
  • 82. Сложность алгоритма Время работы данного алгоритма есть O(n2 2n ) = O * (2n ). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 43 / 62
  • 83. Сложность алгоритма Время работы данного алгоритма есть O(n2 2n ) = O * (2n ). Более того, памяти ему требуется тоже O * (2n ), что делает его совсем непрактичным. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 43 / 62
  • 84. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 44 / 62
  • 85. Формула включений-исключений Пусть A∑︀ некоторое множество, f , g : 2A → R, т.ч. — f (X ) = Y ⊆X g (Y ). Тогда ∑︁ g (X ) = (−1)|X −Y | f (Y ) . Y ⊆X А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 45 / 62
  • 86. Формула включений-исключений Пусть 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 , и нулю иначе). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 45 / 62
  • 87. Задача о гамильтоновом пути Формулировка задачи: необходимо проверить, есть ли в данном графе простой путь, проходящий через все вершины, начинающийся в заданной вершине s и заканчивающийся в заданной вершине t. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 46 / 62
  • 88. Задача о гамильтоновом пути Формулировка задачи: необходимо проверить, есть ли в данном графе простой путь, проходящий через все вершины, начинающийся в заданной вершине s и заканчивающийся в заданной вершине t. Для {s, t} ⊆ X ⊆ V обозначим через f (X ) количество путей (не обязательно простых! путь может проходить по некоторым вершинам несколько раз, а по некоторым вообще не проходить) длины n − 1 из s в t, проходящих только по вершинам множества X . А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 46 / 62
  • 89. Задача о гамильтоновом пути Формулировка задачи: необходимо проверить, есть ли в данном графе простой путь, проходящий через все вершины, начинающийся в заданной вершине s и заканчивающийся в заданной вершине t. Для {s, t} ⊆ X ⊆ V обозначим через f (X ) количество путей (не обязательно простых! путь может проходить по некоторым вершинам несколько раз, а по некоторым вообще не проходить) длины n − 1 из s в t, проходящих только по вершинам множества X . Нетрудно видеть, что значение f (X ) содержится в строке s и столбце t матрицы An−1 , где A — матрица смежности графа G [X ]. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 46 / 62
  • 90. Задача о гамильтоновом пути (продолжение) Пусть теперь g (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, g (V ) есть количество гамильтоновых путей из s в t. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 47 / 62
  • 91. Задача о гамильтоновом пути (продолжение) Пусть теперь g (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, g (V ) есть количество гамильтоновых путей из s в t. Тогда ∑︁ g (V ) = (−1)|V −Y | f (Y ) . Y ⊆V А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 47 / 62
  • 92. Задача о гамильтоновом пути (продолжение) Пусть теперь g (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, g (V ) есть количество гамильтоновых путей из s в t. Тогда ∑︁ g (V ) = (−1)|V −Y | f (Y ) . Y ⊆V Таким образом, количество гамильтоновых путей в графе может быть найдено за время O * (2n ) и полиномиальную память. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 47 / 62
  • 93. Задача о гамильтоновом пути (продолжение) Пусть теперь g (X ) есть количество путей длины n − 1 из s в t, проходящих по всем вершинам множества X . В частности, g (V ) есть количество гамильтоновых путей из s в t. Тогда ∑︁ g (V ) = (−1)|V −Y | f (Y ) . Y ⊆V Таким образом, количество гамильтоновых путей в графе может быть найдено за время O * (2n ) и полиномиальную память. Интересно отметить, что данный алгоритм переизобретался три раза. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 47 / 62
  • 94. Содержание 1 Введение 2 Эвристики Метод ветвей и границ Метод локального поиска 3 Приближённые алгоритмы 1.5-приближение для Metric-TSP Неприближаемость общего случая 1/2-приближение для максимизационной версии 4 Точные алгоритмы Динамическое программирование Формула включений-исключений Матрица Татта и перманент А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 48 / 62
  • 95. Замечание Далее мы рассмотрим алгоритм Бьорклунда для решения задачи о гамильтоновом цикле в двудольном графе за время O * (2n/2 ). Для общего случая задачи коммивояжёра оценка на время работы алгоритма Бьорклунда составляет O * (1.657n · W ) (W — максимальный вес ребра). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 49 / 62
  • 96. Перманент матрицы Татта 1 2 x12 x13 x14 x12 x24 x13 x34 3 4 x14 x24 x34 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 50 / 62
  • 97. Перманент матрицы Татта 1 2 x12 x13 x14 x12 x24 x13 x34 3 4 x14 x24 x34 perm(M) = А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 50 / 62
  • 98. Перманент матрицы Татта 1 2 x12 x13 x14 x12 x24 x13 x34 3 4 x14 x24 x34 perm(M) = x12 x24 x43 x31 + . . . А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 50 / 62
  • 99. Перманент матрицы Татта 1 2 x12 x13 x14 x12 x24 x13 x34 3 4 x14 x24 x34 2 2 perm(M) = x12 x24 x43 x31 + x13 x24 + . . . А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 50 / 62
  • 100. Перманент матрицы Татта 1 2 x12 x13 x14 x12 x24 x13 x34 3 4 x14 x24 x34 2 2 perm(M) = x12 x24 x43 x31 + x13 x24 + x12 x24 x43 x31 + . . . А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 50 / 62
  • 101. Поле характеристики 2 Если вычислять перманент над полем характеристики 2, то все циклы, не полностью состоящие из циклов длины 2, сократятся. Действительно, если в покрытии циклами есть цикл длины не 2, то возьмём первый из них (первый относительного какого-нибудь фиксированного порядка на вершинах) и обратим в нём все рёбра. Получим другое покрытие циклами, которому соответствует тот же самый моном. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 51 / 62
  • 102. Поле характеристики 2 Если вычислять перманент над полем характеристики 2, то все циклы, не полностью состоящие из циклов длины 2, сократятся. Действительно, если в покрытии циклами есть цикл длины не 2, то возьмём первый из них (первый относительного какого-нибудь фиксированного порядка на вершинах) и обратим в нём все рёбра. Получим другое покрытие циклами, которому соответствует тот же самый моном. Мы хотим исправить следующие два момента: во-первых, чтобы гамильтоновы циклы не сокращались, а во-вторых, чтобы покрытия с циклами длины 2 всё же пропадали. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 51 / 62
  • 103. Первая цель: оставить гамильтоновы циклы Сделаем вершину 1 графа выделенной: TG [1, j] = x1j , но TG [j, 1] = xj1 для ребра {1, j} ∈ E . Тогда каждому гамильтонову циклу будут соответствовать два разных монома. x12 x13 x14 x21 x24 x31 x34 x41 x24 x34 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 52 / 62
  • 104. Вторая цель: сократить всё остальное 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 А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 53 / 62
  • 105. Почему же всё сократится? В новом графе нам нужен помеченный гамильтонов цикл. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 54 / 62
  • 106. Почему же всё сократится? В новом графе нам нужен помеченный гамильтонов цикл. В матрице Татта теперь будут помеченные переменные: вместо x24 будет x24,C + x24,E . А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 54 / 62
  • 107. Почему же всё сократится? В новом графе нам нужен помеченный гамильтонов цикл. В матрице Татта теперь будут помеченные переменные: вместо x24 будет x24,C + x24,E . При вычислении над полем характеристики 2 гамильтоновы циклы по-прежнему не сократятся (из-за специальной переменной 1). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 54 / 62
  • 108. Почему же всё сократится? В новом графе нам нужен помеченный гамильтонов цикл. В матрице Татта теперь будут помеченные переменные: вместо x24 будет x24,C + x24,E . При вычислении над полем характеристики 2 гамильтоновы циклы по-прежнему не сократятся (из-за специальной переменной 1). Всё остальное: А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 54 / 62
  • 109. Почему же всё сократится? В новом графе нам нужен помеченный гамильтонов цикл. В матрице Татта теперь будут помеченные переменные: вместо x24 будет x24,C + x24,E . При вычислении над полем характеристики 2 гамильтоновы циклы по-прежнему не сократятся (из-за специальной переменной 1). Всё остальное: покрытия циклами, в которых используются не все пометки — сократятся по формуле включений-исключений (рассмотрим все 2n/2 подмножеств пометок); А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 54 / 62
  • 110. Почему же всё сократится? В новом графе нам нужен помеченный гамильтонов цикл. В матрице Татта теперь будут помеченные переменные: вместо x24 будет x24,C + x24,E . При вычислении над полем характеристики 2 гамильтоновы циклы по-прежнему не сократятся (из-за специальной переменной 1). Всё остальное: покрытия циклами, в которых используются не все пометки — сократятся по формуле включений-исключений (рассмотрим все 2n/2 подмножеств пометок); негамилтьтоновы покрытия циклами, в которых есть все пометки, разобьются на пары и сократятся (из-за пометок). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 54 / 62
  • 111. Получившийся алгоритм Рассмотрим многочлен ∑︁ P(¯) = x perm(MS ). S⊆L А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 55 / 62
  • 112. Получившийся алгоритм Рассмотрим многочлен ∑︁ P(¯) = x perm(MS ). S⊆L Как мы уже выяснили, этот многочлен не равен нулю тогда и только тогда, когда в графе есть гамильтонов цикл. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 55 / 62
  • 113. Получившийся алгоритм Рассмотрим многочлен ∑︁ P(¯) = x perm(MS ). S⊆L Как мы уже выяснили, этот многочлен не равен нулю тогда и только тогда, когда в графе есть гамильтонов цикл. Проверять, равен он нулю или нет, мы будем вероятностно: подставим случайные значения всем переменным; если получился не ноль, то и многочлен точно не равен нулю; в противном случае мы могли попасть в корень. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 55 / 62
  • 114. Проверка равенства нулю многочлена Лемма Пусть P — ненулевой многочлен полной степени d над полем F и пусть S ⊆ F. Тогда Prr1 ,...,rn ∈S {P(r1 , . . . , rn ) = 0} ≤ d/|S| . А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 56 / 62
  • 115. Проверка равенства нулю многочлена Лемма Пусть P — ненулевой многочлен полной степени d над полем F и пусть S ⊆ F. Тогда Prr1 ,...,rn ∈S {P(r1 , . . . , rn ) = 0} ≤ d/|S| . Доказательство Индукция по n. При n = 1 утверждение верно, поскольку у многочлена степени d от одной переменной может быть не более d корней. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 56 / 62
  • 116. Переход Разложим многочлен P по степеням переменной xn : k ∑︁ i P(x1 , . . . , xn ) = xn Pi (x1 , . . . , xn−1 ) , i=0 где deg(Pi ) ≤ d − i, k ≤ d и Pk ̸≡ 0. Распишем теперь по формуле полной вероятности: Pr{P(r1 , . . . , rn ) = 0} = Pr{P(r1 , . . . , rn ) = 0 ∧ Pk (r1 , . . . , rn−1 ) = 0}+ Pr{P(r1 , . . . , rn ) = 0 ∧ Pk (r1 , . . . , rn−1 ) ̸= 0} ≤ (d − k)/|S| + Pr{P(r1 , . . . , rn ) = 0 | Pk (r1 , . . . , rn−1 ) ̸= 0} (d − k)/|S| + k/|S| = d/|S| А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 57 / 62
  • 117. Открытые задачи Открытые задачи Точный алгоритм для задачи о гамильтоновом цикле в ориентированных графах за O * (1.99n ). А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 58 / 62
  • 118. Открытые задачи Открытые задачи Точный алгоритм для задачи о гамильтоновом цикле в ориентированных графах за O * (1.99n ). Какое-нибудь константное приближение для metric TSP в ориентированных графах. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 58 / 62
  • 119. Открытые задачи Открытые задачи Точный алгоритм для задачи о гамильтоновом цикле в ориентированных графах за O * (1.99n ). Какое-нибудь константное приближение для metric TSP в ориентированных графах. Приближение лучше 1.5 для metric TSP в неориентированных графах. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 58 / 62
  • 120. Открытые задачи Открытые задачи Точный алгоритм для задачи о гамильтоновом цикле в ориентированных графах за O * (1.99n ). Какое-нибудь константное приближение для metric TSP в ориентированных графах. Приближение лучше 1.5 для metric TSP в неориентированных графах. Приближение лучше 2/3 для максимального цикла коммивояжёра. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 58 / 62
  • 121. Литература I Held, M., Karp, R. M. A dynamic programming approach to sequencing problems. 1962. Lin, Shen; Kernighan, B. W. An Effective Heuristic Algorithm for the Traveling-Salesman Problem. 1973. Christofides, N. Worst-case analysis of a new heuristic for the travelling salesman problem. 1973. Kohn, S., Gottlieb, A., Kohn, M. A generating function approach to the traveling salesman problem. 1977. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 59 / 62
  • 122. Литература II Lawler, E. L.; Lenstra, J. K.; Rinnooy Kan, A. H. G.; Shmoys, D. B. The Traveling Salesman Problem: A Guided Tour of Combinatorial Optimization. 1985. Goldberg, D. E. Genetic Algorithms in Search, Optimization and Machine Learning. 1989. Arora, S. Polynomial time approximation schemes for Euclidean traveling salesman and other geometric problems. 1998. Applegate, D. L.; Bixby, R. E.; Chv´tal, V.; Cook, W. J. a The Traveling Salesman Problem: A Computational Study. 2006. Bj¨rklund, A. o Determinant Sums for Undirected Hamiltonicity. 2010. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 60 / 62
  • 123. Литература III Cook, W. In Pursuit of the Travelling Salesman: Mathematics at the Limits of Computation. 2011. Paluch, K., Elbassioni, K., Zuylen, A. van. Simpler Approximation of the Maximum Asymmetric Traveling Salesman Problem. 2012. Cygan, M., Kratsch, S., Nederlof, J. Fast Hamiltonicity checking via bases of perfect matchings. 2013. А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 61 / 62
  • 124. Спасибо! Спасибо за внимание! А. Куликов (ПОМИ РАН) Алгоритмы для задачи коммивояжёра 1–2 марта 2013 62 / 62