شجرة Kruskal الممتدة الدنيا
إضافة أرخص الحواف دون دورات
شجرة Kruskal الممتدة الدنيا درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ما هي شجرة الامتداد الدنيا
تصل شجرة الامتداد الدنيا كل رأس باستخدام أقل وزن إجمالي ممكن للحواف، من دون دورات. تخيّل توصيل بلدة بأقل تكلفة. 🌲
الفكرة الأساسية لخوارزمية Kruskal's
Kruskal's algorithm خوارزمية جشعة تمامًا: تستمر في إضافة أرخص حافة لا تنشئ دورة حتى تتصل كل أجزاء الرسم البياني.
الخطوة الأولى: ترتيب الحواف
رتّب أولًا كل حافة حسب الوزن، بدءًا من الأصغر. إن تفضيل الحواف الرخيصة بشكل جشع هو ما يجعل المجموع النهائي أدنى ما يمكن.
edges.sort() # (weight, u, v)لماذا تناسبها DSU تمامًا
لا تؤدي إضافة حافة إلى تكوين دورة إلا إذا كان طرفاها متصلين مسبقًا. تجيب DSU عن اختبار الاتصال هذا في وقت يقارب الثابت. 🤝
تفقّد الحواف المرتبة
مرّ على الحواف من الأرخص إلى الأغلى. ولكل حافة، تحقّق مما إذا كان طرفاها يشتركان مسبقًا في جذر واحد داخل DSU.
for w, u, v in edges:
ru, rv = find(u), find(v)القبول أو الرفض
إذا اختلف الجذران، فإن الحافة تصل بين جزأين منفصلين، لذا اقبلها وادمجهما. وإذا تطابق الجذران، فتجاوزها لتجنّب تكوين دورة.
if ru != rv:
union(u, v)
total += wاعرف متى تتوقف
تحتوي شجرة امتداد تضم n من الرؤوس على n ناقص 1 حافة بالضبط. وبمجرد قبول هذا العدد، يمكنك التوقف مبكرًا.
اكتشاف عدم الاتصال
إذا انتهيت من جميع الحواف وقد قبلت أقل من n ناقص 1، فالرسم البياني غير متصل ولا توجد شجرة امتداد.
التكلفة الزمنية
يستحوذ الترتيب على معظم الوقت، لذا تعمل خوارزمية Kruskal's في O(E log E). أما عمليات DSU فهي رخيصة جدًا ولا تكاد تضيف شيئًا إلى هذا المجموع.
لماذا تكون الخوارزمية الجشعة صحيحة
تضمن خاصية القطع أن أخف حافة تعبر أي تقسيم تكون آمنة للإضافة، ولهذا لا يخطئ اختيار الحواف بدءًا من الأرخص.
متى تستخدم Kruskal
تتألق خوارزمية Kruskal's مع الرسوم البيانية قليلة الحواف المقدّمة على شكل قائمة حواف، وهو التنسيق الذي تمنحك إياه معظم مسائل المسابقات مباشرة. ⚡
اختبار سريع
حدّد ما الذي يخبر خوارزمية Kruskal's برفض حافة.
مراجعة
أنشأت Kruskal's MST: رتّبت الحواف، وأضفت الأرخص التي تصل بين مكوّنين عبر DSU، وتوقفت عند n ناقص 1 حافة. 🎉
الأسئلة الشائعة
هل درس «شجرة Kruskal الممتدة الدنيا» مجاني؟
نعم — نص درس «شجرة Kruskal الممتدة الدنيا» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «شجرة Kruskal الممتدة الدنيا»؟
إضافة أرخص الحواف دون دورات تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «شجرة Kruskal الممتدة الدنيا»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- DSU مع ضغط المسار
- الضم حسب الرتبة والمكوّنات
- شجرة Kruskal الممتدة الدنيا
- MST لخوارزمية Prim باستخدام كومة