الگوریتم پریم
الگوریتم پریم، الگوریتمی در نظریه گرافها است که زیردرخت پوشای کمینه را برای یک گراف همبند وزن دار پیدا میکند یعنی زیرمجموعهای از یالها را در آن گراف مییابد که درختی را تشکیل میدهند که همه رئوس را شامل میشود در حالیکه مجموع وزن همه آن یالها کمینه شدهاست. این الگوریتم در سال ۱۹۳۰ توسط ریاضیدانی به نام جارنیک داده شد وسپس در سال ۱۹۵۷ پریم، دانشمند علوم کامپیوتر آن را مستقل از جارنیک کشف کرد و در سال ۱۹۵۹ دایکسترا دوباره به آن دست یافت. ازاین رو این الگوریتم گاهی با نام الگوریتم DJP نیز شناخته میشود که برگرفته از اسامی دایکسترا، جارنیک و پریم است.
محتویات |
[ویرایش] شرح الگوریتم
این الگوریتم مرتبا سایز درخت را که از یک یال شروع شدهاست، افزایش میدهد تاجائی که همه رئوس وارد درخت شوند.
این الگوریتم را به طور خلاصه میتوان چنین شرح داد:
- ورودی: یک گراف همبند وزن دار با مجموعه رئوس V و یالهای E
- مقدار دهی اولیه: {Vnew = {x که Vnew مجموعه رئوس درخت پوشای کمینه در حالت آغازین را نشان میدهد و x یک راس دلخواه است (نقطه شروع) و
{} = Enew که Enew بیانگر مجموعه یالهای این درخت است.
- حلقه زیر را تا وقتی که Vnew = V تکرار کن:
- یال (u,v) را با وزن کمینه انتخاب کن به طوری که u در Vnew قرار داشته باشد ولی v عضوی از این مجموعه نباشد (اگر چند یال باوزن یکسان وجود دارند یکی را به دلخواه انتخاب کن)
- راس v را به Vnew و یال (u , v) رابه Enew اضافه کن.
- خروجی :Vnew و Enew درخت پوشای کمینه را توصیف میکنند.
[ویرایش] هزینه زمانی
یک پیاده سازی ساده، استفاده از نمایش گراف به صورت ماتریس مجاورت است که درآن به دنبال آرایهای از وزنها باشیم و یالهای با وزن کمینه را به مجموعه خود بیفزائیم. این روش (O(V۲ زمان میبرد. الگوریتم پریم بااستفاده از داده ساختار هیپ دودوئی ساده و نمایش فهرست مجاورت میتواند در زمان (O(E log V اجرا شود که در آن E تعداد یالها و V تعداد رئوس است. استفاده از مدل پیچیده تری به نام هیپ فیبوناچی باعث میشود این زمان تا حد (O(E + V log V کاهش یابد. سرعت این روش به خصوص زمانی آشکار میشود که در گراف رابطه (E = ω(V بین رئوس و یالها برقرار باشد.
[ویرایش] مثال
[ویرایش] منابع
[ویرایش] پیوند های خارجی
- شبیه سازی الگوریتم پریم روی نمونههای گوناگونی از گراف ها /
- Analyze Prim's algorithm in an online Javascript IDE
| در ویکیانبار پروندههایی دربارهٔ الگوریتم پریم موجود است. |