📋 المحتوى المنظم
📖 محتوى تعليمي مفصّل
نوع: محتوى تعليمي
يمكن استخدام المقطع البرمجي التالي لإنشاء نسخة من مشكلة البائع المتجول، وتقبل الدالة عدد المواقع المراد زيارتها، ونطاق المسافة يمثل الفرق بين المسافة الأقصر والمسافة الأطول بين موقعين، ثم تظهر:
نوع: محتوى تعليمي
• مصفوفة المسافة التي تشمل المسافة المسندة بين كل زوج ممكن من المواقع.
• مجموعة عناوين المواقع العددية (عنوان لكل موقع).
• الموقع الذي يكون بمثابة بداية الطريق ونهايته، ويشار إليه باسم موقع startstop (الانطلاق والتوقف).
Python Code Example
نوع: محتوى تعليمي
import random
import numpy
from itertools import combinations
def create_problem_instance(num_locations, distance_range):
# initializes the distance matrix to be full of zeros
dist_matrix = numpy.zeros((num_locations, num_locations))
# creates location ids: 0,1,2,3,4,...
location_ids = set(range(num_locations))
# creates all possible location pairs
location_pairs = combinations(location_ids, 2)
for i,j in location_pairs: # for each pair
distance = random.randint(*distance_range) # samples a distance within range
# the distance from i to j is the same as the distance from j to i
dist_matrix[j,i] = distance
dist_matrix[i,j] = distance
# returns the distance matrix, location ids and the startstop vertix
return dist_matrix, location_ids, random.randint(0, num_locations - 1)
نوع: محتوى تعليمي
يستخدم المقطع البرمجي التالي الدالة الواردة سابقًا لإنشاء نسخة من مشكلة البائع المتجول، بحيث يتضمن 8 مواقع، ومسافات ثنائية تتراوح بين 5 و20:
Python Code Execution
نوع: محتوى تعليمي
dist_matrix, location_ids, startstop = create_problem_instance(8, (5, 20))
print(dist_matrix)
print(startstop)
Output Matrix and Start/Stop Location
نوع: محتوى تعليمي
[[ 0. 19. 17. 15. 18. 17. 7. 15.]
[19. 0. 15. 18. 11. 6. 20. 5.]
[17. 15. 0. 17. 15. 7. 5. 11.]
[15. 18. 17. 0. 19. 7. 7. 16.]
[18. 11. 15. 19. 0. 17. 20. 17.]
[17. 6. 7. 7. 17. 0. 15. 14.]
[ 7. 20. 5. 7. 20. 15. 0. 14.]
[15. 5. 11. 16. 17. 14. 14. 0.]]
3
نوع: محتوى تعليمي
لاحظ أن الخط القطري يمثل المسافات من العقد إلى نفسها (dist_matrix[i,i])، وبالتالي فإن المسافات تساوي أصفارًا.
نوع: METADATA
وزارة التعليم
Ministry of Education
287
2023 - 1447
📄 النص الكامل للصفحة
يمكن استخدام المقطع البرمجي التالي لإنشاء نسخة من مشكلة البائع المتجول، وتقبل الدالة عدد المواقع المراد زيارتها، ونطاق المسافة يمثل الفرق بين المسافة الأقصر والمسافة الأطول بين موقعين، ثم تظهر:• مصفوفة المسافة التي تشمل المسافة المسندة بين كل زوج ممكن من المواقع.
• مجموعة عناوين المواقع العددية (عنوان لكل موقع).
• الموقع الذي يكون بمثابة بداية الطريق ونهايته، ويشار إليه باسم موقع startstop (الانطلاق والتوقف).--- SECTION: Python Code Example ---
import random import numpy from itertools import combinations def create_problem_instance(num_locations, distance_range):
# initializes the distance matrix to be full of zeros dist_matrix = numpy.zeros((num_locations, num_locations))
# creates location ids: 0,1,2,3,4,...
location_ids = set(range(num_locations))
# creates all possible location pairs location_pairs = combinations(location_ids, 2)
for i,j in location_pairs: # for each pair distance = random.randint(*distance_range) # samples a distance within range
# the distance from i to j is the same as the distance from j to i dist_matrix[j,i] = distance dist_matrix[i,j] = distance# returns the distance matrix, location ids and the startstop vertix return dist_matrix, location_ids, random.randint(0, num_locations - 1)يستخدم المقطع البرمجي التالي الدالة الواردة سابقًا لإنشاء نسخة من مشكلة البائع المتجول، بحيث يتضمن 8 مواقع، ومسافات ثنائية تتراوح بين 5 و20:--- SECTION: Python Code Execution ---
dist_matrix, location_ids, startstop = create_problem_instance(8, (5, 20))
print(dist_matrix)
print(startstop)--- SECTION: Output Matrix and Start/Stop Location ---
[[ 0. 19. 17. 15. 18. 17. 7. 15.]
[19. 0. 15. 18. 11. 6. 20. 5.]
[17. 15. 0. 17. 15. 7. 5. 11.]
[15. 18. 17. 0. 19. 7. 7. 16.]
[18. 11. 15. 19. 0. 17. 20. 17.]
[17. 6. 7. 7. 17. 0. 15. 14.]
[ 7. 20. 5. 7. 20. 15. 0. 14.]
[15. 5. 11. 16. 17. 14. 14. 0.]]لاحظ أن الخط القطري يمثل المسافات من العقد إلى نفسها (dist_matrix[i,i])، وبالتالي فإن المسافات تساوي أصفارًا.2023 - 1447
🎴 بطاقات تعليمية للمراجعة
عدد البطاقات: 5 بطاقة لهذه الصفحة
ما هي الأغراض الرئيسية للدالة `create_problem_instance` في المثال البرمجي؟
الإجابة: الغرض الرئيسي للدالة هو إنشاء نسخة من مشكلة البائع المتجول. تقوم بذلك عن طريق إنشاء مصفوفة مسافات بين المواقع، وتحديد عناوين المواقع، واختيار موقع بداية ونهاية (startstop).
الشرح: الدالة `create_problem_instance` مصممة لتهيئة جميع العناصر اللازمة لبدء حل مشكلة البائع المتجول، مما يجعلها جاهزة للاستخدام في خوارزميات التحسين.
تلميح: فكر في المدخلات التي تأخذها الدالة والمخرجات التي تنتجها لإنشاء مشكلة معينة.
كيف يتم تمثيل المسافات في مصفوفة المسافات (`dist_matrix`) التي تنشئها الدالة `create_problem_instance`؟
الإجابة: يتم تمثيل المسافات في مصفوفة المسافات كقيم عددية. تمثل القيمة في الصف `i` والعمود `j` المسافة بين الموقع `i` والموقع `j`. المسافة من موقع إلى نفسه (على الخط القطري) تساوي صفرًا.
الشرح: تُظهر مصفوفة المسافات علاقة المسافة بين أي زوج من المواقع. كون المصفوفة متماثلة (المسافة من i إلى j تساوي المسافة من j إلى i) هو خاصية شائعة في هذه المشاكل.
تلميح: لاحظ كيف يتم تعبئة المصفوفة في حلقة `for` وكيف يتم التعامل مع القطر الرئيسي.
ما هو دور `location_ids` في سياق مشكلة البائع المتجول كما هو موضح في المثال؟
الإجابة: يمثل `location_ids` مجموعة من المعرفات الرقمية الفريدة لكل موقع في المشكلة (مثل 0, 1, 2, ...). تُستخدم هذه المعرفات لتحديد المواقع في مصفوفة المسافات وللإشارة إلى كل موقع على حدة.
الشرح: بدون معرفات المواقع، ستكون مصفوفة المسافات مجرد مجموعة من الأرقام بدون سياق. `location_ids` توفر هذا السياق الضروري.
تلميح: فكّر في كيفية ربط كل قيمة في مصفوفة المسافات بموقع فعلي.
ماذا يعني `startstop` في سياق مشكلة البائع المتجول؟
الإجابة: `startstop` هو المعرف الرقمي للموقع الذي يُستخدم كنقطة انطلاق للسائق ونقطة توقف نهائية في رحلته. يجب أن يبدأ السائق من هذا الموقع ويعود إليه بعد زيارة جميع المواقع الأخرى.
الشرح: تتطلب مشكلة البائع المتجول الكلاسيكية أن يكون هناك موقع بداية ونهاية محدد، والذي يمثله `startstop` في هذا السياق، مما يضمن أن المسار يكون دائريًا.
تلميح: ما هو الشرط الأساسي الذي يجب أن يحققه المسار في مشكلة البائع المتجول؟
لماذا قيمة المسافة على الخط القطري في مصفوفة المسافات (`dist_matrix[i,i]`) تساوي صفرًا؟
الإجابة: قيمة المسافة على الخط القطري تساوي صفرًا لأنها تمثل المسافة من أي موقع إلى نفسه. لا يوجد مسافة تقطع للانتقال من موقع إلى نفس الموقع.
الشرح: هذا هو التمثيل القياسي للمسافة بين أي عقدة ونفسها في مصفوفات المسافات، مما يعكس عدم وجود حركة أو انتقال.
تلميح: تخيل أنك تقف في مكان ما، ما هي المسافة التي تقطعها للوصول إلى نفس المكان؟