درخت پوشای مینیمم توزیع شده

مسئله درخت پوشای مینیمم توزیع شده (به انگلیسی: Distributed minimum spanning tree)، شامل درخت پوشای مینیمم توسط الگوریتم توزیع شده در شبکه (جایی که گره‌ها با عبور پیام با هم در ارتباط اند) است، اگرچه اساس این روش شبیه الگوریتم Borůvka است. یکی از کاربردهای مهم این مسئله، پیدا کردن درختی برای  broadcasting (پخش کردن) استفاده می‌شود. به‌طور خاص، زمانی را که هزینه یک پیام از طریق لبه در گراف منتقل کند قابل توجه است. MST می‌تواند هزینه کل فرایند منبع برای برقراری ارتباط با تمام فرایندهای دیگر در شبکه را به حداقل برساند.
این مسئله برای اولین بار در سال ۱۹۸۳ و در زمان توسط Gallager و همکارانش پیشنهاد شد.
که  تعداد رئوس در گراف است. بعدها راه حل دیگری ارائه شد

و سرانجام که D شبکه یا قطر گراف است. پیچیدگی زمانی کمتر راه حل مقید بوده‌است که در نهایت نشان داده می‌شود .

بررسی اجمالی

گراف ورودی   در یک شبکه در نظر گرفته شده، که رئوس   گره‌ها و لبه‌های مستقل هستند.  لینک‌های ارتباطی هستند. لینک‌ها مانند مسئله کلاسیک برای نمایش وزن داده شده‌است.
در آغاز الگوریتم، گره‌ها فقط وزن لینک‌هایی که به آن متصل هستند را می‌دانند.
به عنوان خروجی این الگوریتم، هر گره می‌داند کدامیک از لینک‌های خود را متعلق به درخت پوشا حداقل قرار دهد و کدام را قرار ندهد.

الگوریتم GHS

الگوریتم GHS تشکیل شده‌است از Gallager, Humblet و Spira. یکی از شناخته شده‌ترین الگوریتم‌های نظریه محاسبات توزیع شده‌است. این الگوریتم می‌تواند MST را در مدل گذر پیام غیرهمزمان ایجاد کند.

منتشر کردن

دو گره مجاور به پخش پیام‌های هسته به بقیه گره‌ها در قطعه می‌پردازند. پیام‌ها از طریق لبه شاخه، فرستاده شده‌است نه از طریق هسته. هر یک از پیام‌های پخشی شامل ID و سطح قطعه است. در پایان این مرحله، هر گره، ID و سطح قطعه جدید را دریافت کرده‌است.

convergecast

در این مرحله، تمام گره‌ها در قطعه، برای پیدا کردن حداقل وزن لبه خروجی قطعه همکاری می‌کنند. لبه‌های خروجی، لبه‌هایی هستند که به قطعات دیگر متصل می‌شوند. پیام‌هایی که در این مرحله فرستاده می‌شوند در جهت مخالف مرحله پخش هستند. برای مقدار دهی اولیه تمام برگ‌ها (گره‌هایی که تنها یک لبهٔ شاخه دارند)، یک پیام از طریق لبهٔ شاخه فرستاده می‌شود. پیام‌هایی که حداقل وزن لبهٔ خروجی را دارند پیدا می‌شوند. راه حلی برای پیدا کردن حداقل لبه خروجی بعداً مورد بحث قرار خواهد گرفت. برای هر یک از گره‌های بدون برگ (تعدادلبه‌های شاخه آن را n در نظر بگیرید)، پس از دریافت n-1 پیام convergecast، حداقل وزن پیام انتخاب می‌شود و با وزن‌های لبه‌های خروجی مقایسه می‌شود. کمترین وزن به سمت شاخهٔ آن فرستاده می‌شود و از broadcast دریافت می‌شود.

تغییرهسته

پس از اتمام مرحله قبل، دو گره متصل شده به هسته می‌توانند همدیگر را از بهترین لبه‌هایی که دریافت کرده‌اند، مطلع کنند. سپس آن‌ها می‌توانند حداقل لبه خروجی از کل قطعه را تشخیص دهند. پیام از هسته با یک مسیر از لبه‌های شاخه به حداقل لبهٔ خروجی فرستاده می‌شود و در نهایت پیام به لبهٔ خروجی انتخاب شده برای مقایسه دو قطعه که لبه‌هایشان به هم متصل اند فرستاده می‌شود. بسته به نوع سطح دو قطعه، یکی از دو قطعه با عملیات ترکیبی به شکل یک قطعه جدید انجام می‌شود.

چگونه می‌توان حداقل وزن خروجی لبه را پیدا کرد؟

همان‌طور که در بالا بحث شد، هر گره نیاز به پیدا کردن حداقل وزن لبه خروجی پس از دریافت پیام پخش از هسته دارد. اگر گره n یک broadcast دریافت کند، می‌تواند حداقل وزن اولیهٔ لبه را انتخاب کند و یک پیام به گره n در سوی دیگر با استفاده از ID (شماره قطعه) و سطح آن ارسال کند. سپس گره n، تصمیم می‌گیرد که آیا لبه یک لبهٔ خروجی است یا نه و یک پیام برای اطلاع دادن نتیجه به گره n می‌فرستد.
این تصمیم با توجه به موارد زیر گرفته می‌شود:
 (Case 1: Fragment_ID(n) = Fragment_ID(n
سپس، گره n و 'n متعلق به قطعه مشابه است.
 (Case 2: Fragment_ID(n) != Fragment_ID(n’) and Level(n) <= Level(n
سپس، گره n و 'n متعلق به قطعات مختلف است.
 (Case 3: Fragment_ID(n) != Fragment_ID(n’) and Level(n)> Level(n
نمی‌توانیم نتیجه‌گیری خاصی کنیم و دلیل آن این است در حال حاضر ممکن است دو گره به همان قطعه تعلق داشته باشد. اما گره 'n به علت تأخیر پیام broadcast هنوز این حقیقت را کشف نکرده‌است. در این حالت، الگوریتم به شما اجازه می‌دهد که گره ’n، پاسخ را تا زمانی که سطح آن بالاتر یا برابر با سطح باشد از گره n دریافت کند و به تعویق بیندازید.

بیشترین تعداد سطوح

همان‌طور که در بالا ذکر شد، قطعات با "Merge" یا "Absorb" ترکیب شده‌است. "Absorb"، حداکثر سطح میان قطعات را تغییر نمی‌دهد.
"Merge"، حداکثر سطح را یک واحد افزایش می‌دهد. در بدترین حالت، همه قطعات با"Merge" مقایسه می‌شود. به‌طوری‌که تعداد قطعات، حدوداً بیش از نیمی در هر سطح، کاهش می‌یابد؛ بنابراین حداکثر تعداد سطوح ، که در آن V تعداد گره است.

الگوریتم‌های تقریبی

الگوریتم تقریبی   توسط مالک خان و گوپال توسعه داده شد. زمان اجرای این الگوریتم،  است که   که قطر کوتاه‌ترین مسیر محلی گراف است.