Алгоритмы для задачи коммивояжёра
В мини-курсе будут рассмотрены алгоритмы для классической NP-трудной задачи — задачи коммивояжёра, которая формулируется следующим образом: даны nn городов и попарные расстояния между ними, необходимо найти кратчайший маршрут, проходящий по всем городам ровно по одному разу. Практические применения данной задачи включают в себя разработку микросхем, планирование, сборку генома. Трудность данной задачи объясняется тем, что с ростом количества городов количество потенциальных маршрутов растёт очень быстро. Например, даже для пятнадцати городов количество таких маршрутов равно 43 589 145 600. Если считать, что компьютер может перебрать миллиард маршрутов в секунду, то искать решение для задачи с сотней городов ему придётся больше триллиона лет. В то же время в задачах, возникающих на практике, количество городов обычно составляет десятки тысяч. К счастью, всё же есть методы, позволяющие решать такие примеры на практике. Например, в 2004 году был найден оптимальный цикл по 24 978 городам Швеции, а в 2006 был вычислен оптимальный маршрут лазера при построении интегральной схемы через 85 900 точек.
Задаче коммивояжёра посвящено огромное количество статей и исследований, как практических, так и теоретических. На сайте http://www.tsp.gatech.edu/index.html можно найти множество ссылок (статьи, книги, датасеты, программы, игры, соревнования и даже фильм).
Для данной задачи мы узнаем:
— методы, с помощью которых задачу коммивояжёра решают на практике, — метод ветвей и границ и метод локального поиска;
— почему в общем случае для данной задачи приближённые алгоритмы вряд ли существуют;
— 1.51.5-приближённый алгоритмы для задачи коммивояжёра в метрическом пространстве (когда длины рёбер графа удовлетворяют неравенству треугольника);
— 2/32/3-приближённый алгоритм для случая, когда найти необходимо не минимальный, а максимальный путь коммивояжёра;
— классический алгоритм, основанный на методе динамического программирования, со временем работы O∗(2n)O∗(2n);
— алгоритм, основанный на формуле включений-исключений, со временем работы O∗(2n)O∗(2n) и псевдополиномиальной памятью;
— алгоритм со временем работы O∗(4nnlogn)O∗(4nnlogn) и полиномиальной памятью, основанный на методе перебора с возвратом;
— недавний алгоритм, работающий за время O∗(1.66n)O∗(1.66n) для неориентированных графов, основанный на матрицах Татта и быстрой проверке на равенство нуля многочлена;
— применения к другим NP-трудным задачам.
(Обозначение O∗(⋅)O∗(⋅) выше скрывает множители, зависящие от размера входа полиномиально.)
АвторАлександр Куликов
ОрганизаторComputer Science клуб при ПОМИ РАН
Лекции
2Онлайн-курсы по математике
3
Математика для поступающих в 8 класс
Курс поможет ученикам 6−7 классов подготовиться к поступлению в физико-математическую школу. Вы научитесь решать задания из вступительных работ Президентского ФМЛ № 239, ФТЛ им. П. Л. Капицы, школы № 179, лицея «Вторая школа» и ФМШ № 2007.
Бесплатный

Математика: от баллов к знаниям
Если вы абитуриент или студент нематематических специальностей и хотите не завалить сессию, наш курс для вас.
Бесплатный

Алгебра 7 класс
Бесплатные уроки по алгебре для 7 класса, записанные в студии Президентского ФМЛ № 239 для проекта Российская Электронная Школа.
Бесплатный
Ещё курсы Александра Куликова
10Алгоритмы для NP-трудных задач
13 лекций · Александр Куликов
Алгоритмы для NP-трудных задач (2013)
13 лекций · Александр Куликов
Алгоритмы и структуры данных. I семестр
13 лекций · Александр Куликов, Михаил Дворкин
Алгоритмы и структуры данных. II семестр
24 лекции · Александр Куликов, Михаил Дворкин
Дискретная математика | Александр Куликов
14 лекций · Александр Куликов
Зимняя студенческая школа по математике и теоретической информатике
16 лекций · Юрий Белов и ещё 5
Машинное обучение
13 лекций · Василий Усатюк и ещё 12
Эффективные алгоритмы
11 лекций · Александр Куликов
Computer Science семинар (Весна 2013)
4 лекции · Александр Куликов и ещё 3
Computer Science семинар (Осень 2011)
9 лекций · Бен Лившиц и ещё 7