Featured image of post حل مشكلة البائع المتجول باستخدام Mathematica

حل مشكلة البائع المتجول باستخدام Mathematica

حل مشكلة البائع المتجول باستخدام Mathematica

مشكلة

حل

1
d=SparseArray[{{1,2}->10,{2,1}->10,{1,5}->15,{5,1}->15,{1,4}->12,{4,1}->12,{1,3}->20,{3,1}->20,{2,5}->10,{5,2}->10,{3,4}->10,{4,3}->10,{3,8}->30,{8,3}->30,{3,7}->20,{7,3}->20,{3,6}->25,{6,3}->25,{4,5}->15,{5,4}->15,{4,8}->20,{8,4}->20,{5,9}->18,{9,5}->18,{5,8}->15,{8,5}->15,{6,7}->5,{7,6}->5,{7,8}->35,{8,7}->35,{8,9}->12,{9,8}->12},{9,9},Infinity];

إنشاء مصفوفة باستخدام وظيفة SparseArray. يمثل كل عنصر المسافة بين المدن في صف وعمود هذا العنصر. على سبيل المثال، العنصر الأول {1,2}->10 يعني أن المسافة بين 1 و 2 هي 10. العنصر قبل الأخير {9,9} يشير إلى حجم المصفوفة، والعنصر الأخير Infinity يعني أن طول المسار بين المدن غير المحددة لا نهائي. وبعبارة أخرى، يعني أنه لا يوجد مسار.

1
{len,tour}=FindShortestTour[{1,2,3,4,5,6,7,8,9},DistanceFunction->(d[[#1,#2]]&)]

يمكنك بسهولة حل مشكلة البائع المتجول باستخدام وظيفة FindShortestTour. تمثل {1,2,3,4,5,6,7,8,9} أرقام المدن. تمرر DistanceFunction->(d[[#1,#2]]&) المصفوفة d التي تمثل المسافات بين المدن.

انتاج

1
{137, {1, 2, 5, 9, 8, 7, 6, 3, 4}}

المخرجات هي أقصر مسافة والمسار في ذلك الوقت. أقصر مسافة هي 137، والمسار هو 1→2→5→9→8→7→6→3→4→1. إذا تم تغيير الترتيب إلى ABC، فسيصبح A, B, E, I, H, G, F, C, D.

comments powered by Disqus
مبني بستخدام Hugo
قالب Stack مصمم من Jimmy