خوارزمية بلمان فورد

خوارزمية بلمان فورد
بيانات عامّة
الصنف
بنية البيانات
مشتق من
المكتشف
سمي نسبة لـ
الأداء
أسوء حالة
الحالة المُثلى
أسوأ حالة تعقيد مكاني

خوارزمية بلمان - فورد (بالإنجليزية: Bellman–Ford algorithm)‏ تقوم بحساب الطريق الأقصر والأسرع في مخطط موجه من خلال مصدر القمة، على عكس خوارزمية دجكسترا فانها تقوم بحساب الحواف الموجهة السالبة (إضافة إلى الموجبة)، و تمت تسميتها نسبة للعالمين ريتشارد بلمان وفورد لستر.[3] تسمح هذه الخوارزمية بوجود عدة أقواس أو دوائر ذات اتجاه سالب كما تسمح بالكشف عن وجود دوائر ماصة أي دوائر ذات وزن إجمالي سالب (اتجاه سالب)، قابلة للحصول من مصدر القمة.

الخوارزمية

[عدل]

تعتمد هذه الخوارزمية على مقاربة البرمجة الديناميكية، تشبه في هيكلها الأساسي لخوارزمية دجكسترا ولكنها عوضاً عن اختيار العقدة الأقل وزناً والتي لم يتم تمديدها، فإنها تقوم بتمديد جميع الحواف وتقوم بذلك |ق-1| مرة، حيث |ق| هو عدد القمم في المخطط، التكرار يسمح بالحصول على أصغر مسافة ممكنة على طول المخطط، في حالة عدم وجود دوائر سالبة فإن الطريق الأقصر يمر على كل عقدة مرة واحدة على الأكثر.

الشفرة

[عدل]
إجراءات بلمان - فورد(قائمة الحواف، قائمة القمم، مصدر القمة):
 // هذا التطبيق يأخذ في الرسم البياني، كما هو ممثل قوائم القمم والحواف، ويملى مسافة صفين.
 
  // الخطوة 1: بداية البيان:
 لكل قمة ق:
   إذا القمة هي المصدر فإن المسافة(ق) = 0
   وإلا فالمسافة(ق) = مالانهاية 
   مع السلف = معدوم 
 
   // الخطوة 2: تمديد الحواف مراراً 
  لكل ر من 1 إلى حجم (القمم - 1):
    لكل حافة (ق، ع) مع الوزن (و) في الحواف : 
    إذا المسافة[ع] + و <المسافة[ق]:
      المسافة [ق] = المسافة [ع] + و 
   // الخطوة 3: التحقق من وجود دورات سلبية: 
  لكل حافة (ق، ع) مع حواف ث الوزن في: 
    إذا المسافة[ع] + و <المسافة[ق]: 
     خطأ "الرسم البياني يحتوي على دورات سلبية"
  

برهان صحتها

[عدل]

يمكن إظهار صحة الخوارزمية بواسطة الاستقراء الرياضي: مبرهنة: بعد تكرار للدورات:

المراجع

[عدل]
  1. ^ الوصول: 28 مايو 2022. مذكور في: RFC 2453: RIP Version 2. الاقتباس: RIP is a routing protocol based on the Bellman-Ford (or distance vector) algorithm.. المُؤَلِّف: Gary Scott Malkin. الناشر: مجموعة مهندسي الإنترنت. مُعرِّف الغرض الرَّقميُّ (DOI): 10.17487/RFC2453. لغة العمل أو لغة الاسم: الإنجليزية. تاريخ النشر: نوفمبر 1998.
  2. ^ الوصول: 28 مايو 2022. مذكور في: RFC 6126: The Babel Routing Protocol. الاقتباس: Babel […] is based on the Bellman-Ford protocol […]. المُؤَلِّف: Juliusz Chroboczek. الناشر: مجموعة مهندسي الإنترنت. مُعرِّف الغرض الرَّقميُّ (DOI): 10.17487/RFC6126. لغة العمل أو لغة الاسم: الإنجليزية. تاريخ النشر: أبريل 2011.
  3. ^ "معلومات عن خوارزمية بلمان-فورد على موقع brilliant.org". brilliant.org. مؤرشف من الأصل في 2019-02-02.