Floyd-Warshall لجميع الأزواج
أقصر المسارات بين كل زوج
Floyd-Warshall لجميع الأزواج درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
كل زوج دفعة واحدة
تحتاج أحيانًا إلى أقصر مسار بين كل زوج من العقد، لا من مصدر واحد فقط. تُعرف هذه بمشكلة جميع الأزواج.
تعرّف إلى Floyd-Warshall
تملأ خوارزمية Floyd-Warshall جدول مسافات كاملًا لجميع الأزواج باستخدام ثلاث حلقات متداخلة مرتبة، ومن دون إعداد يُذكر.
مصفوفة المسافات
استخدم مصفوفة تكون فيها dist[i][j] أفضل تكلفة معروفة للانتقال من i إلى j. وابدأ بها من الحواف المباشرة المعطاة لك.
dist = [[INF] * n for _ in range(n)]عيّن القطر
يمكن لكل عقدة الوصول إلى نفسها مجانًا، لذا عيّن قيمة القطر dist[i][i] إلى الصفر قبل بدء الإرخاء.
for i in range(n):
dist[i][i] = 0فكرة العقدة الوسيطة
الحيلة هي السماح للمسارات بالمرور عبر عقدة وسيطة k، ثم التحقق مما إذا كان المرور عبر k أرخص من الانتقال المباشر.
ترتيب الحلقات مهم
تكون الحلقة الخارجية هي k، أي نقطة المنتصف المختارة. وتجرّب الحلقتان الداخليتان i وj كل زوج مقابل نقطة المنتصف تلك.
for k in range(n):
for i in range(n):
for j in range(n):خطوة الإرخاء
لكل زوج، أرخِ عبر k: فإذا كان الانتقال من i إلى k ثم إلى j أقصر، حدّث dist[i][j] إلى تلك التكلفة المجمعة.
if dist[i][k] + dist[k][j] < dist[i][j]:
dist[i][j] = dist[i][k] + dist[k][j]لماذا تكون k خارجية
عند انتهاء معالجة k، قد تستخدم جميع الأزواج عقدًا وسيطة تصل إلى k. ويضمن وضع k في الحلقة الخارجية صحة هذا الترتيب.
الحواف السالبة مقبولة
تقبل Floyd-Warshall الحواف السالبة، لكنها لا تقبل الدورات السالبة. وتترك الدورة السالبة قيمة قطرية ما أقل من الصفر.
زمن التنفيذ
تنتج ثلاث حلقات على n من العقد زمنًا قدره O(n^3) ومساحة قدرها O(n^2)، ولا يكون ذلك عمليًا إلا عندما يبقى n في حدود بضع مئات.
متى تختارها
اختر Floyd-Warshall عندما يكون الرسم البياني صغيرًا وكثيفًا وتحتاج فعلًا إلى مسافة كل زوج، لا إلى مسافات مصدر واحد.
اختبار سريع
أي حلقة يجب أن تكون الخارجية في Floyd-Warshall؟
مراجعة: Floyd-Warshall
هيّئ مصفوفة، واجعل القطر يساوي صفرًا، ثم نفّذ الحلقات بالترتيب k, i, j وأرخِ عبر k. أقصر المسارات بين جميع الأزواج في O(n^3). 🧮
الأسئلة الشائعة
هل درس «Floyd-Warshall لجميع الأزواج» مجاني؟
نعم — نص درس «Floyd-Warshall لجميع الأزواج» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «Floyd-Warshall لجميع الأزواج»؟
أقصر المسارات بين كل زوج تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «Floyd-Warshall لجميع الأزواج»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- خوارزمية Dijkstra باستخدام كومة
- 0-1 BFS باستخدام Deque
- Bellman-Ford والحواف السالبة
- Floyd-Warshall لجميع الأزواج