Lösung des Problems des Handlungsreisenden mit Mathematica
Problem
電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL
— 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022
Lösung
| |
Erstellen Sie eine Matrix mit der Funktion SparseArray. Jedes Element repräsentiert die Entfernung zwischen den Städten in seiner Zeile und Spalte. Das erste Element {1,2}->10 bedeutet beispielsweise, dass die Entfernung zwischen 1 und 2 gleich 10 ist. Das vorletzte Element {9,9} gibt die Größe der Matrix an, und das letzte Element Infinity bedeutet, dass die Weglänge zwischen nicht angegebenen Städten unendlich ist, das heißt, es gibt keinen Weg.
| |
Mit der Funktion FindShortestTour können Sie das Problem des Handlungsreisenden ganz einfach lösen. {1,2,3,4,5,6,7,8,9} repräsentiert die Stadtnummern. DistanceFunction->(d[[#1,#2]]&) übergibt die Matrix d, die die Entfernung zwischen den Städten darstellt.
Ausgabe
| |
Die Ausgabe ist die kürzeste Entfernung und die Tourroute zu diesem Zeitpunkt. Die kürzeste Entfernung ist 137, und die Tourroute ist 1→2→5→9→8→7→6→3→4→1. Bei der Konvertierung in die alphabetische ABC-Reihenfolge wird es zu A, B, E, I, H, G, F, C, D.
