freeCodeCamp/guide/arabic/computer-science/shortest-path-on-a-graph/index.md

3.5 KiB

title localeTitle
Shortest Path on a Graph أقصر مسار على الرسم البياني

أقصر مسار على الرسم البياني

يعد العثور على أقصر مسار بين نقطتين على الرسم البياني مشكلة شائعة في هياكل البيانات خاصة عند التعامل مع التحسين. الرسم البياني عبارة عن سلسلة من العقد المتصلة بالحواف. يمكن ترجيح الرسوم البيانية (القيم تحمل حواف) واتجاهي (حواف لها اتجاه).

بعض تطبيقات هذا هي تحسين مسار الرحلة أو 6 درجات من كيفن بيكون

خوارزمية Dijkstra

الحل الأكثر شيوعًا لهذه المشكلة هو خوارزمية Dijkstra التي تقوم بتحديث أقصر مسار بين العقدة الحالية وكل جيرانها. بعد تحديث المسافة بين جميع الجيران يتحرك إلى العقدة مع أقل مسافة ويكرر العملية مع جميع الجيران غير المرغوب فيها. تستمر هذه العملية حتى تتم زيارة الرسم البياني بأكمله.

صورة مستويات الكود

الخطوة 0:

يحتاج الرسم البياني لدينا إلى الإعداد حتى نتمكن من تسجيل القيم المطلوبة. على أي حافة لدينا المسافة بين العقدتين يربط. على أي عقدة لدينا أقصر مسافة من عقدة البداية. يتيح تعيين القيمة على كل عقدة إلى ما لا نهاية موجبة ، وتعيين القيمة على عقدة البداية إلى الصفر.

الخطوة 1:

انظر إلى جميع العقد مباشرة إلى عقدة البداية. القيم التي تحملها الحواف التي تربط البداية وهذه العقدات المجاورة هي أقصر المسافات لكل عقدة. سجل هذه المسافات على العقدة - الكتابة فوق اللانهاية - وعبر أيضا العقد ، وهذا يعني أنه تم العثور على أقصر مسار لها.

الخطوة 2:

حدد واحدة من العقد التي تم حساب أقصر مسار لها ، وسنطلق على هذا المحور الخاص بنا. انظر إلى العقد المؤدية إليه (سوف نطلق على هذه العقد الوجهة) والمسافات التي تفصل بينها. لكل عقدة وجهة: إذا كانت القيمة في المحور بالإضافة إلى قيمة الحافة تربطها بالمجموعات أقل من قيمة عقدة الوجهة ، فقم بتحديث قيمتها ، كما تم العثور على مسار أقصر جديد. إذا تم استكشاف جميع المسارات إلى عقدة الوجهة هذه ، فيمكن شطبها.

الخطوه 3:

كرر الخطوة 2 حتى تم شطب جميع العقد. لدينا الآن رسم بياني حيث ستكون القيم الممسوكة في أي عقدة هي أقصر مسافة لها من عقدة البداية.

معلومات اكثر:

المزيد عن خوارزمية Dijkstra

خوارزميات مسار أقصر أخرى