43. خوارزمية Dijkstra's: خطوات التطبيق المفصلة
دعونا نرسم الخطوات الرسمية لـ Dijkstra's:
- التهيئة (Initialization): إنشاء مصفوفة مسافة
dist(جميعها مضبوطة على ما لا نهاية، المصدر مضبوط على 0) ومجموعةvisited(فارغة). - إعداد قائمة انتظار ذات أولوية: إدراج عُقدة المصدر (مسافة 0) في Min Heap.
- التكرار: طالما أن Min Heap ليست فارغة:
أ. استخراج العُقدة
Uذات المسافة الدنيا (الخطوة الجشعة). ب. إذا تمت معالجةUبالفعل (في مجموعةvisited)، فاستمر. ج. وضع علامة علىUكمُزارة. د. الاسترخاء (Relaxation): لكل جارVلـU: * حساب المسافة الجديدة المؤقتة:new_dist = dist[U] + weight(U, V). * إذا كانnew_dist < dist[V]، قم بتحديثdist[V]وأدرج/حدّثVفي قائمة الانتظار ذات الأولوية.
- التعقيد: مع كومة Fibonacci، O(E + V log V). مع كومة ثنائية قياسية (أكثر شيوعاً)، O((V + E) log V).