Задача коммивояжёра — история и теория | OTUS
⚡ Открываем подписку на курсы!
Проходите параллельно 3 онлайн-курса в месяц по цене одного.
Подробнее

Курсы

Программирование
iOS Разработчик. Продвинутый курс Программист 1С Реверс-инжиниринг. Продвинутый курс
-16%
Java Developer. Professional
-17%
JavaScript Developer. Professional
-18%
Flutter Mobile Developer
-15%
MS SQL Server Developer
-14%
Unity Game Developer. Basic
-19%
Супер-практикум по использованию и настройке GIT
-18%
Супер-интенсив "СУБД в высоконагруженных системах"
-18%
Web-разработчик на Python
-11%
Backend-разработчик на PHP
-8%
PostgreSQL
-10%
Базы данных
-19%
Разработчик Node.js VOIP инженер Разработчик C# Разработчик Golang Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик голосовых ассистентов и чат-ботов Backend-разработка на Kotlin C# ASP.NET Core разработчик Scala-разработчик Супер - интенсив по Kubernetes Symfony Framework Advanced Fullstack JavaScript developer
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02

Задача коммивояжёра — история и теория

Algo_Deep_17.12_site-5020-fa5048.png

Есть N городов, связанных дорогами. Как помочь коммивояжёру проложить наиболее короткий/выгодный/дешёвый маршрут между этими городами, чтобы посетить каждый город хотя бы по одному разу и вернуться в исходную точку? Многие, изучающие computer science, знают о существовании этой задачи как одной из самых известных задач на графах. Все знают, что эта задача NP-полная и нерешаема в общем виде на современных компьютерах.

Подробности

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

Как давно эту задачу не могут решить?

Интересна историческая подоплёка появления этой задачи. Как гласит википедия: “...известна изданная в 1832 году книга с названием «Коммивояжёр — как он должен вести себя и что должен делать для того, чтобы доставлять товар и иметь успех в своих делах — советы старого курьера» (нем. Der Handlungsreisende – wie er sein soll und was er zu tun hat, um Aufträge zu erhalten und eines glücklichen Erfolgs in seinen Geschäften gewiß zu sein – von einem alten Commis-Voyageur), в которой описана проблема, но математический аппарат для её решения не применяется.”

И что сегодня?

Впоследствии задачу коммивояжёра исследовали многие учёные в разных вариантах постановки и с разными ограничениями, применяя математический аппарат по максимуму. Какие только способы не применялись для её решения: от динамического программирования до нейросетей!

Исследование этой задачи до сих пор продолжается, и она привлекает учёных, несмотря на несложную и понятную всем формулировку.

А какие вы можете предложить решения? Пишите в комментариях!

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться