Город: Тест Санкт-Петербург Новосибирск Казань Язык: Русский English

Алгоритмы для задачи коммивояжёра (Александр Куликов, ПОМИ РАН)
Computer Science семинар

Что: Лекция
Когда: Воскресенье, 24 февраля 2013, 15:35–17:10
Где: ПОМИ РАН
Слайды: csseminar_lecture_240213.pdf

Описание

Задача коммивояжёра — классическая NP-трудная задача с достаточно простой формулировкой: даны \( n \) городов и попарные расстояния между ними, необходимо найти кратчайший маршрут, проходящий по всем городам ровно по одному разу. Практические применения данной задачи включают в себя разработку микросхем, планирование, сборку генома. Трудность данной задачи объясняется тем, что с ростом количества городов количество потенциальных маршрутов растёт очень быстро. Например, даже для пятнадцати городов количество таких маршрутов равно 43 589 145 600. Если считать, что компьютер может перебрать миллиард маршрутов в секунду, то искать решение для задачи с сотней городов ему придётся больше триллиона лет. В то же время в задачах, возникающих на практике, количество городов обычно составляет десятки тысяч. К счастью, всё же есть методы, позволяющие решать такие примеры на практике. Например, в 2004 году был найден оптимальный цикл по 24 978 городам Швеции, а в 2006 был вычислен оптимальный маршрут лазера при построении интегральной схемы через 85 900 точек.

Задаче коммивояжёра посвящено огромное количество статей и исследований, как практических, так и теоретических. На сайте http://www.tsp.gatech.edu/index.html можно найти множество ссылок (статьи, книги, датасеты, программы, игры, соревнования и даже фильм).

В докладе мы рассмотрим методы практического и теоретического решения задачи коммивояжёра. Методы, которые мы рассмотрим, включают в себя: метод ветвей и границ, локальный поиск, метод имитации отжига, динамическое программирование, перебор с возвратом, приближённые алгоритмы, формула включений-исключений, матрицы Татта и проверка равенства нулю многочлена.

Более подробный план:

  • методы, с помощью которых задачу коммивояжёра решают на практике, — метод ветвей и границ и метод локального поиска; почему в общем случае для данной задачи приближённые алгоритмы вряд ли существуют;
  • \( 1.5 \)-приближённый алгоритмы для задачи коммивояжёра в метрическом пространстве (когда длины рёбер графа удовлетворяют неравенству треугольника);
  • \( 2/3 \)-приближённый алгоритм для случая, когда найти необходимо не минимальный, а максимальный путь коммивояжёра;
  • классический алгоритм, основанный на методе динамического программирования, со временем работы \( O^*(2^n) \);
  • алгоритм, основанный на формуле включений-исключений, со временем работы \( O^*(2^n) \) и псевдополиномиальной памятью;
  • алгоритм со временем работы \( O^*(4^nn^{\log n}) \) и полиномиальной памятью, основанный на методе перебора с возвратом;
  • недавний алгоритм, улучшающий верхнюю оценку \( O^*(2^n) \), основанный на матрицах Татта и быстрой проверке на равенство нуля многочлена;
  • применения к другим NP-трудным задачам.
Лекция предполагает знакомство слушателей лишь с базовыми алгоритмическими идеями.

Видео