Решение задачи коммивояжера с помощью Mathematica
Проблема
電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL
— 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022
Решение
| |
Создайте матрицу с помощью функции SparseArray. Каждый элемент представляет расстояние между городами в строке и столбце этого элемента. Например, первый элемент {1,2}->10 означает, что расстояние между 1 и 2 равно 10. Предпоследний элемент {9,9} указывает на размер матрицы, а последний элемент Infinity означает, что длина пути между неуказанными городами бесконечна. Другими словами, это означает, что пути нет.
| |
Вы можете легко решить задачу коммивояжера с помощью функции FindShortestTour. {1,2,3,4,5,6,7,8,9} представляют номера городов. DistanceFunction->(d[[#1,#2]]&) передает матрицу d, представляющую расстояния между городами.
Вывод
| |
Выводом являются кратчайшее расстояние и маршрут в это время. Кратчайшее расстояние равно 137, а маршрут — 1→2→5→9→8→7→6→3→4→1. Если изменить порядок на ABC, он станет A, B, E, I, H, G, F, C, D.
