حل مشكلة البائع المتجول باستخدام 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.
