خوارزمية بوروفكا
خوارزمية بوروفكا هي خوارزمية جشعة لإيجاد شجرة ممتدة دنيا في الرسم البياني، أو غابة ممتدة دنيا في حالة الرسم البياني غير المتصل.
نُشرت هذه الخوارزمية لأول مرة عام 1926 على يد أوتاكار بوروفكا كطريقة لإنشاء شبكة كهرباء فعّالة لمورافيا . [ 1 ] [ 2 ] [ 3 ] أُعيد اكتشاف الخوارزمية بواسطة شوكيه عام 1938؛ [ 4 ] ثم بواسطة فلوريك ، ولوكاسيفيتش ، وبيركال ، وستاينهاوس ، وزوبرزيكي عام 1951؛ [ 5 ] وأخيرًا بواسطة جورج سولين عام 1965. [ 6 ] وتُعرف هذه الخوارزمية غالبًا باسم خوارزمية سولين ، خاصةً في أدبيات الحوسبة المتوازية .
تبدأ الخوارزمية بإيجاد الحافة ذات الوزن الأدنى المتصلة بكل رأس من رؤوس الرسم البياني، ثم تضيف جميع هذه الحواف إلى الغابة. بعد ذلك، تكرر عملية مماثلة لإيجاد الحافة ذات الوزن الأدنى من كل شجرة تم إنشاؤها حتى الآن إلى شجرة مختلفة، وتضيف جميع هذه الحواف إلى الغابة. كل تكرار لهذه العملية يقلل عدد الأشجار، داخل كل مكون متصل من الرسم البياني، إلى نصف القيمة السابقة على الأكثر، لذا بعد عدد لوغاريتمي من التكرارات تنتهي العملية. عندئذٍ، تُشكل مجموعة الحواف التي تمت إضافتها الغابة الممتدة الدنيا.
الشفرة الزائفة
يوضح الكود الزائف التالي تطبيقًا أساسيًا لخوارزمية بوروفكا. في العبارات الشرطية، يُعتبر كل ضلع uv أقل تكلفة من "لا شيء". الغرض من المتغير المكتمل هو تحديد ما إذا كانت الغابة F غابة ممتدة أم لا.
إذا لم تكن للحواف أوزان مميزة، فيجب استخدام قاعدة ثابتة لكسر التعادل ، كأن تعتمد على ترتيب كلي للرؤوس أو الحواف. يمكن تحقيق ذلك بتمثيل الرؤوس كأعداد صحيحة ومقارنتها مباشرةً، أو بمقارنة عناوينها في الذاكرة ، وما إلى ذلك. قاعدة كسر التعادل ضرورية لضمان أن الرسم البياني الناتج هو بالفعل غابة، أي أنه لا يحتوي على دورات. على سبيل المثال، لنفترض رسمًا بيانيًا مثلثيًا بعقد { أ ، ب ، ج } وجميع حوافه وزنها 1. عندئذٍ، يمكن إنشاء دورة إذا اخترنا ab كأصغر حافة وزن لـ { أ }، وbc لـ { ب }، و ca لـ { ج }. قاعدة كسر التعادل التي ترتب الحواف أولًا حسب المصدر، ثم حسب الوجهة، ستمنع إنشاء دورة، مما ينتج عنه الشجرة الممتدة الدنيا { ab ، bc }.
خوارزمية Borůvka هي المدخلات: رسم بياني غير موجه مرجح G = ( V , E ). المخرجات: F ، غابة ممتدة دنيا لـ G. قم بتهيئة غابة F إلى ( V ، E ′ ) حيث E ′ = {}. مكتمل := خطأ بينما غير مكتمل do أوجد المكونات المتصلة لـ F وقم بتعيين مكونها لكل رأس قم بتهيئة أرخص حافة لكل مكون إلى "لا شيء" لكل حافة uv في E ، حيث u و v في مكونات مختلفة من F : ليكن wx هو الحافة الأرخص للمكون u. إذا كانت wx مفضلة على uv ، فاجعل uv هي الحافة الأرخص للمكون u. ليكن yz هو الحافة الأرخص للمكون v . إذا كانت yz مفضلة على uv ، فاجعل uv هي الحافة الأرخص للمكون v. إذا كانت الحافة الأرخص لجميع المكونات مُعيّنة على " لا شيء" ، فهذا يعني أنه لا يمكن دمج المزيد من الأشجار - لقد انتهينا. اكتمل := صحيح. وإلا، اكتمل := خطأ. لكل مكون لا تكون حافته الأرخص "لا شيء"، أضف حافته الأرخص إلى E'.دالة is-preferred-over( edge1 , edge2 ) تُرجع ( edge2 is "None") أو (وزن( الحافة1 ) < وزن( الحافة2 )) أو (وزن( الحافة1 ) = وزن( الحافة2 ) وقاعدة كسر التعادل( الحافة1 ، الحافة2 )) دالة tie-breaking-rule( edge1 , edge2 ) هي قاعدة كسر التعادل؛ تُرجع القيمة true إذا وفقط إذا تم تفضيل edge1 على edge2 في حالة التعادل.
كتحسين، يمكن للمرء إزالة كل حافة من G التي تم العثور عليها لربط رأسين في نفس المكون، بحيث لا تساهم في وقت البحث عن أرخص الحواف في المكونات اللاحقة.
تعقيد
يمكن إثبات أن خوارزمية بوروفكا تستغرق O (log V ) تكرارًا للحلقة الخارجية حتى تنتهي، وبالتالي تعمل في زمن O ( E log V ) ، حيث E هو عدد الحواف، و V هو عدد الرؤوس في G (بافتراض أن E ≥ V ). في الرسوم البيانية المستوية ، وبشكل أعم في عائلات الرسوم البيانية المغلقة تحت عمليات الرسم البياني الجزئي ، يمكن جعلها تعمل في زمن خطي، عن طريق إزالة جميع الحواف باستثناء الحافة الأقل تكلفة بين كل زوج من المكونات بعد كل مرحلة من مراحل الخوارزمية. [ 7 ]
مثال
| صورة | عناصر | وصف |
|---|---|---|
| {أ} {ب} {ج} {د} {هـ} {و} {ز} | هذا هو الرسم البياني الموزون الأصلي. تشير الأرقام القريبة من الحواف إلى وزنها. في البداية، كل رأس بمفرده يمثل مكونًا (الدوائر الزرقاء). | |
| {أ، ب، د، و} {ج، هـ، ز} | في التكرار الأول للحلقة الخارجية، تُضاف الحافة ذات الوزن الأدنى من بين كل مكون. يتم اختيار بعض الحواف مرتين (AD، CE). ويبقى مكونان. | |
| {أ، ب، ج، د، هـ، و، ز} | في التكرار الثاني والأخير، تُضاف الحافة ذات الوزن الأدنى من كلٍّ من المكوّنين المتبقيين. وهما في الواقع نفس الحافة. يبقى مكوّن واحد، وبذلك نكون قد انتهينا. لا تُؤخذ الحافة BD في الاعتبار لأن كلا طرفيها يقعان في نفس المكوّن. |
خوارزميات أخرى
تشمل الخوارزميات الأخرى لحل هذه المشكلة خوارزمية بريم وخوارزمية كروسكال . ويمكن الحصول على خوارزميات متوازية سريعة من خلال دمج خوارزمية بريم مع خوارزمية بوروفكا. [ 8 ]
خوارزمية أسرع لشجرة الامتداد الدنيا العشوائية، والمستندة جزئيًا إلى خوارزمية بوروفكا، من ابتكار كارغر وكلاين وتارجان، تعمل في زمن متوقع قدره O( E ) . [ 9 ] أما خوارزمية شجرة الامتداد الدنيا (الحتمية) الأكثر شهرة، والتي وضعها برنارد شازيل، فهي أيضًا مستندة جزئيًا إلى خوارزمية بوروفكا، وتعمل في زمن قدره O( Eα ( E , V )) ، حيث α هي دالة أكرمان العكسية . [ 10 ] تجمع هذه الخوارزميات العشوائية والحتمية بين خطوات خوارزمية بوروفكا، التي تقلل عدد المكونات المتبقية للربط، وخطوات من نوع مختلف تقلل عدد الحواف بين أزواج المكونات.
ملحوظات
- ^ بوريفكا، أوتاكار (1926). "O jistém problému minimálním" [ حول مشكلة بسيطة معينة ] . برايس مور. بريدودوفد. سبول. V Brně III (باللغة التشيكية والألمانية). 3 : 37 - 58.
- ^ بوريفكا، أوتاكار (1926). "Příspěvek k řešení otázky ekonomické stavby elektrovodních sítí (مساهمة في حل مشكلة البناء الاقتصادي للشبكات الكهربائية)". Elektronický Obzor (باللغة التشيكية). 15 : 153 – 154.
- ^ نيشتريل، ياروسلاف ؛ ميلكوفا، إيفا؛ نيسيتريلوفا، هيلينا (2001). “Otakar Borůvka حول مشكلة الحد الأدنى من الشجرة الممتدة: ترجمة كل من أوراق عام 1926 والتعليقات والتاريخ”. الرياضيات المنفصلة . 233 ( 1– 3): 3– 36. دوى : 10.1016/S0012-365X(00)00224-7 . اتش دي ال : 10338.dmlcz/500413 . السيد 1825599 .
- ^ شوكيه، غوستاف (1938). "دراسة بعض شبكات الطرق". Comptes Rendus de l'Académie des Sciences (باللغة الفرنسية). 206 : 310 – 313.
- ^ فلوريك، ك. Łukaszewicz، J .؛ بيركال، J.؛ الأماكن القريبة : زوبرزيكي، س. (1951). "Sur la liaison et la Division des Points d'un ensemble fini" . ندوة الرياضيات (باللغة الفرنسية). 2 ( 3– 4): 282– 285. دوى : 10.4064/سم-2-3-4-282-285 . السيد 0048832 .
- ^ سولين، جورج (1965). “Le Tracé de Canalisation”. البرمجة والألعاب وشبكات النقل (باللغة الفرنسية).
- ↑ إبستين، ديفيد (1999). "الأشجار الممتدة والممتدات". في ساك، جيه.-آر .؛ أوروتيا، جيه. (محرران). دليل الهندسة الحسابية . إلسيفير. ص 425-461 . ; ماريش، مارتن (2004). “خوارزميتان زمنيتان خطيتان لـ MST على فئات الرسم البياني الصغيرة المغلقة” (PDF) . أرشيف الرياضيات . 40 (3): 315 – 320..
- ↑ Bader, David A.; Cong, Guojing (2006). "خوارزميات سريعة للذاكرة المشتركة لحساب الغابة الممتدة الدنيا للرسوم البيانية المتفرقة". مجلة الحوسبة المتوازية والموزعة . 66 (11): 1366-1378 . CiteSeerX 10.1.1.129.8991 . doi : 10.1016/j.jpdc.2006.06.001 . S2CID 2004627 .
- ↑ كارغر، ديفيد ر.؛ كلاين، فيليب ن.؛ تارجان، روبرت إي. (1995). "خوارزمية خطية عشوائية لإيجاد الأشجار الممتدة الدنيا". مجلة ACM . 42 (2): 321-328 . CiteSeerX 10.1.1.39.9012 . doi : 10.1145/201019.201022 . S2CID 832583 .
- ↑ شازيل، برنارد (2000). "خوارزمية الشجرة الممتدة الدنيا ذات تعقيد من نوع أكرمان العكسي" (ملف PDF) . مجلة ACM . 47 (6): 1028-1047 . CiteSeerX 10.1.1.115.2318 . doi : 10.1145/355541.355562 . S2CID 6276962 .
- خوارزميات الرسوم البيانية
- شجرة ممتدة
