Задача коммивояжера — одна из самых известных задач оптимизации. Несмотря на простоту формулировки, задача является NP-сложной, и поэтому существует большое количество подходов к ее решению и созданных на их основе различных алгоритмов. Тем не менее, со временем задача меняет свой контекст, и теперь разработка новых алгоритмов необходима не столько для решения конкретных вариантов задачи и поиска пути, сколько в контексте прикладном. В настоящее время задача является актуальной в сфере транспорта, поскольку транспортные, логистические и курьерские службы, а также службы такси заинтересованы в оптимизации своих маршрутов [1].
В последнее время более перспективными для модификаций считаются приближенные и эвристические алгоритмы, поскольку они достаточно просты для программной реализации и дают за приемлемое время результат в пределах необходимой точности. Кроме того, эти алгоритмы отличаются большей, по сравнению с точными методами, гибкостью за счет параметров. Эти алгоритмы хорошо поддаются оптимизации в том числе распараллеливанием.
Целью данной работы является реализация приближенного параллельного алгоритма решения задачи коммивояжера.
Задачи представлены ниже:
1. Изучение существующих алгоритмов решения задачи коммивояжера.
2. Реализация приближенного алгоритма, его модификация и оптимизация.
3. Проведение вычислительного эксперимента.
Полученные результаты позволяют сделать некоторые выводы:
1. Наиболее точные варианты алгоритма создают небольшую долю от общего количества дополнительных маршрутов, однако чем больше отношение количества дополнительных маршрутов к количеству вершин, тем более точен результат.
2. Наиболее быстрые варианты алгоритма создают менее разнообразные маршруты и за счет этого теряют в точности.
3. На данный момент алгоритм сильно уступает во временной эффективности многим существующим алгоритмам.
4. Алгоритм обладает перспективами к дальнейшему распараллеливанию, а также к дальнейшей оптимизации путем полной замены алгоритма ближайшего соседа на алгоритм с большей эффективностью.
Были выполнены следующие задачи:
1. Изучение существующих алгоритмов решения задачи коммивояжера.
2. Реализация приближенного алгоритма, его модификация и оптимизация.
3. Проведение вычислительного эксперимента.
1. Рынок BI в России 2013. Бизнес осваивает возможности
геоаналитики [Электронный ресурс] - Режим доступа:
http://www.cnews.ru/reviews/rynok_bi_v_rossii_2013/articles/biznes_osvaivaet_v ozmozhnosti_geoanalitiki/ — свободный
2. Задача коммивояжёра — Википедия [Электронный ресурс] — Режим доступа: https://ru.wikipedia.org/wiki/Задача_коммивояжёра - свободный (дата обращения: 01.04.2019)
3. Модификация циклов для повышения производительности параллельной обработки данных [Электронный ресурс] — Режим доступа: https://software.intel.com/ru-ru/articles/loop-modifications-to-enhance-data- parallel-performance - свободный (дата обращения: 02.05.2019)
4. TSPLIB / Ruprecht-Karls-Universitat Heidelberg [Электронный ресурс] -
Режим доступа:
http://www.iwr. uniheidelberg.de/groups/comopt/software/TSPLIB95/ -
свободный (дата обращения: 02.05.2019)
5. Concorde TSP Solver for Windows [Электронный ресурс] - Режим доступа: http://www.math.uwaterloo.ca/tsp/concorde/gui/gui.htm - свободный (дата обращения: 25.05.2019)
6. Кристофидес Н. Теория графов. Алгоритмический подход. - М.: Мир, 1978.