Resolvendo o Problema do Caixeiro Viajante com Mathematica
Problema
電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL
— 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022
Solução
| |
Crie uma matriz usando a função SparseArray. Cada elemento representa a distância entre as cidades em sua respectiva linha e coluna. Por exemplo, o primeiro elemento {1,2}->10 significa que a distância entre 1 e 2 é 10. O penúltimo elemento {9,9} indica o tamanho da matriz, e o último elemento Infinity significa que o comprimento do caminho entre cidades não especificadas é infinito, ou seja, não há caminho.
| |
Com a função FindShortestTour, você pode resolver facilmente o problema do caixeiro viajante. {1,2,3,4,5,6,7,8,9} representa os números das cidades. DistanceFunction->(d[[#1,#2]]&) passa a matriz d que representa a distância entre as cidades.
Saída
| |
A saída mostra a distância mais curta e a rota correspondente. A distância mais curta é 137, e a rota é 1→2→5→9→8→7→6→3→4→1. Convertendo para ordem alfabética ABC, torna-se A, B, E, I, H, G, F, C, D.
