Menyelesaikan Masalah Pedagang Keliling dengan Mathematica
Masalah
電車でこんな広告を見かけました😁📸 pic.twitter.com/iXEgvtXrpL
— 早稲田大学 早水桃子研究室 (@hayamizu_lab) October 11, 2022
Solusi
| |
Buat matriks menggunakan fungsi SparseArray. Setiap elemen mewakili jarak antara kota-kota di baris dan kolom elemen tersebut. Misalnya, elemen pertama {1,2}->10 berarti jarak antara 1 dan 2 adalah 10. Elemen kedua dari belakang {9,9} menunjukkan ukuran matriks, dan elemen terakhir Infinity berarti panjang jalur antar kota yang tidak ditentukan adalah tak terhingga. Dengan kata lain, itu berarti tidak ada jalan.
| |
Anda dapat dengan mudah menyelesaikan masalah pedagang keliling dengan fungsi FindShortestTour. {1,2,3,4,5,6,7,8,9} mewakili nomor kota. DistanceFunction->(d[[#1,#2]]&) meneruskan matriks d yang mewakili jarak antar kota.
Keluaran
| |
Keluarannya adalah jarak terpendek dan rute pada saat itu. Jarak terpendek adalah 137, dan rutenya adalah 1→2→5→9→8→7→6→3→4→1. Jika urutannya diubah menjadi ABC, maka akan menjadi A, B, E, I, H, G, F, C, D.
