تخفیف نوروزی پی استور

کد تخفیف: PR1404

شامل تمامی آثار
روز
ساعت
دقیقه
ثانیه

با خرید اشتراک ویژه ، با هزینه بسیار کمتر به فایل های پاورپوینت دسترسی داشته باشید!

الگوریتم کروسکال Kruskal’s algorithm

الگوریتم کروسکال Kruskal's algorithm
الگوریتم کروسکال Kruskal's algorithm یک الگوریتم حریصانه (Heuristic) برای یافتن درخت پوشای کمینه MST است. الگوریتم کروسکال، الگوریتمی در نظریه گراف‌ها است که درخت پوشای مینیمم را برای یک گراف همبند وزن دار (همبندی یعنی حداقل تعداد رأس‌ها یا یال‌هایی است که با حذفشان، ارتباط رأس‌های باقی‌مانده از بین نرود) پیدا می‌کند. یعنی زیرمجموعه‌ای از یال‌ها را در آن گراف می‌یابد که درختی را تشکیل می‌دهند که همه راس‌ها را شامل شود و دارای حداقل هزینه یال‌ها باشد.

فهرست مطالب

مقدمه پست الگوریتم کروسکال Kruskal’s algorithm

همانطور که گفته شد با توجه به یک گراف متصل و همبند، درخت پوشا از آن گراف یک زیرگراف است که یک درخت است و تمام رأس‌ها را با یکدیگر متصل می‌کند. یک گراف تنها می‌تواند انواع درخت‌های مختلف را پوشش دهد. یک درخت پوشای کمینه (MST) یا درخت پوشای مینیمم درختی برای یک گراف وزن دار، متصل  یک درخت پوشا با وزن کم‌تر یا برابر با وزن هر درخت دیگر است. وزن یک درخت، مجموع وزن‌های داده شده به هر لبه درخت است.

درخت پوشای کمینه Minimum Spanning Tree

درخت یک گراف متصل بدون حلقه است. یک درخت پوشا (Spanning Tree) زیرگرافی از گراف G است که شامل کلیه رئوس گراف G باشد و یک درخت باشد. بنابراین اگر گراف G دارای n گره باشد درخت پوشای آن دارای n-1 یال nhvn. پیمایش‌های DFS و BFS هر کدام یک درخت پوشا تولید می‌کنند. تعداد درخت‌های پوشای یک گراف کامل با n گره برابر ۲n-1-۱  است.

درخت پوشای حداقل (Minimum Spanning Tree) گراف وزن دار G، درخت پوشائی است که مجموع وزن‌های آن حداقل باشد. برای بدست آوردن درخت پوشای حداقل  الگوریتم کروسکال (Kruskal) و الگوریتم پریم (Prim) و الگوریتم سولین (Sollin) به روش حریصانه شروع به حل مسئله می‌کنند. دو الگوریتم پریم و کروسکال بطور کامل در همین سایت بررسی شده‌اند. در ادامه به بررسی و تشریح الگوریتم کروسکال خواهیم پرداخت.

الگوریتم کروسکال Kruskal’s algorithm

گراف G با n رأس را در نظر بگیرید. الگوریتم کروسکال به صورت زیر عمل می‌کند:

۱. تمام یال‌ها را به طور صعودی بر حسب وزن مرتب کنید.
2. درخت T را متشکل از گره‌های G بدون یال را ایجاد کنید.
3. عملیات زیر را n-1 بارتکرار کنید:
4. یک یال با حداقل وزن را به درخت T اضافه کنید به طوری که حلقه ایجاد نشود.

گاهی چند یال دارای یک وزن هستند، در این حالت ترتیب یال‌هایی که انتخاب می‌شوند مهم نیست. درخت‌های پوشای حداقل مختلفی ممکن است حاصل شود اما مجموع وزن آنها همیشه یکسان و حداقل می‌شود. پیچیدگی زمانی الگوریتم (O(mn می‌شود. که m تعداد یال‌ها و n تعداد رئوس گراف G است.

شبه کد الگوریتم کروسکال

Void kruskal (int n ,int m ,set _of_edges E,set_of_edges & F)
{
 index i, j;
 Set_pointer p , q ;
 edge e;
 Sort the m edges in E by weight in nondecreasing order ;
 F=∅;
 initial(n);          //زیر مجموعه غیر الحاقی n مقدار دهی
 While(number of edges in F is less than n-1){
 e= edge with least weight not yet considered;
 i, j = indices of vertices connected by e ;
 p=find(i);
 q=find(j);
 if(!equal(p,q)){
 merge(p,q);
 add e to F ;
 }
 }
 }

مثال الگوریتم کروسکال

این الگوریتم یک الگوریتم حریصانه است پس انتخاب حریصانه انتخاب کوچکترین (کم هزینه ترین) وزن  لبه است که باعث ایجاد چرخه ای در MST نشود. در مثال گراف ورودی را در نظر بگیرید.

الگوریتم کروسکال

این گراف شامل ۹ رأس و ۱۴ لبه است بنابراین، حداقل درخت پوشا تشکیل شده (۹ – ۱) = 8 لبه خواهد بود. ابتدا لبه‌ها را به ترتیب کوچکتر به بزرگتر یعنی صعودی مرتب می‌کنیم.

After sorting:
Weight   Src    Dest
۱         ۷      ۶
۲         ۸      ۲
۲         ۶      ۵
۴         ۰      ۱
۴         ۲      ۵
۶         ۸      ۶
۷         ۲      ۳
۷         ۷      ۸
۸         ۰      ۷
۸         ۱      ۲
۹         ۳      ۴
۱۰        ۵      ۴
۱۱        ۱      ۷
۱۴        ۳      ۵

حالا همه لبه‌ها را یک به یک از فهرست لبه‌های مرتب شده انتخاب کنید.

۱- لبه ۶-۷ را انتخاب کنید: حلقه‌ای شکل نمی‌گیرد لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 1

۲- لبه ۲-۸ را انتخاب کنید: حلقه‌ای شکل نمی‌شود پس لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 2۳- لبه ۶-۵ را انتخاب کنید: حلقه‌ای شکل نمی‌شود پس لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 3

۴- لبه ۰-۱ را انتخاب کنید: حلقه‌ای شکل نمی‌شود پس لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 4

 

مراحل تشکیل الگوریتم کروسکال 5

۶- لبه ۸-۶ را انتخاب کنید: حلقه شکل می‌شود پس لبه به MST اضافه نمی‌شود.

۷- لبه ۲-۳ را انتخاب کنید: حلقه‌ای شکل نمی‌شود پس لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 6۸- لبه ۷-۸ را انتخاب کنید: حلقه شکل می‌شود پس لبه به MST اضافه نمی‌شود.

۹- لبه ۰-۷ را انتخاب کنید: حلقه‌ای شکل نمی‌شود پس لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 7۱۰- لبه ۱-۲ را انتخاب کنید: حلقه شکل می‌شود پس لبه به MST اضافه نمی‌شود.

۱۱- لبه ۳-۴ را انتخاب کنید: حلقه‌ای شکل نمی‌شود پس لبه به MST اضافه شود.

مراحل تشکیل الگوریتم کروسکال 8

از آنجا که تعداد لبه‌ها برابر است ۸=(۹-۱)، الگوریتم در اینجا متوقف می‌شود.

سخن آخر

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

8 پاسخ

  1. سلام
    مطمئن هستین که این فایل ها اجرا میشه چون میخوام بفرستم برا استادم و عجله دارم خواهشا جواب بدین

    واینکه ویدئو محصول هم بالا نمیاد همش میزنه مشکلی رخ داده لطفا درستش کنید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *