Résoudre le problème du voyageur de commerce avec Mathematica
Problème
電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL
— 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022
Solution
| |
Créez une matrice à l’aide de la fonction SparseArray. Chaque élément représente la distance entre les villes à sa ligne et sa colonne. Par exemple, le premier élément {1,2}->10 signifie que la distance entre 1 et 2 est de 10. L’avant-dernier élément {9,9} indique la taille de la matrice, et le dernier élément Infinity signifie que la longueur du chemin entre les villes non spécifiées est infinie, c’est-à-dire qu’il n’y a pas de chemin.
| |
Avec la fonction FindShortestTour, vous pouvez facilement résoudre le problème du voyageur de commerce. {1,2,3,4,5,6,7,8,9} représente les numéros de ville. DistanceFunction->(d[[#1,#2]]&) transmet la matrice d qui représente la distance entre les villes.
Sortie
| |
La sortie correspond à la distance la plus courte et à l’itinéraire de visite à ce moment-là. La distance la plus courte est 137 et l’itinéraire de la visite est 1→2→5→9→8→7→6→3→4→1. En le convertissant dans l’ordre alphabétique ABC, il devient A, B, E, I, H, G, F, C, D.
