الگوریتم کراسکال: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Rezabot (بحث | مشارکت‌ها)
جز ربات: حذف از رده:ویکی‌سازی رباتیک
ARSHA (بحث | مشارکت‌ها)
بدون خلاصۀ ویرایش
خط ۱:
در [[نظریه گراف]]، '''الگوریتم کروسکالکراسکال''' الگوریتمی برای یافتن یک [[زیرگراف]] فراگیر [[گراف همبند|همبند]] با کمترین وزن در یک [[گراف وزن‌دار]] است (در یک گراف وزن دار، به هر یال وزنی نسبت داده شده‌است). همچنین این الگوریتم برای یافتن کوچکترین درخت فراگیر در یک گراف وزن دار استفاده می‌شود.
 
به عنوان مثال فرض کنید یک شبکه [[راه آهن]] که تعدادی شهر را به یکدیگر متصل می‌کند در دست احداث است می‌خواهیم با داشتن هزینه<math>{c_{ij}}</math> مربوط به احداث خط مستقیم بین شهرهای <math>{v_i},{v_j}</math> شبکه را طوری طراحی کنیم که مجموع هزینه‌های ساخت به کمترین مقدار خود برسد. با در نظر گرفتن هر شهر به عنوان یک راس از گراف وزن دار با وزن‌های <math>w({v_i},{v_j})={c_{ij}}</math> مسئله به یافتن یک زیر گراف فراگیر همبند با کمترین وزن در یک گراف منجر می‌شود.
خط ۵:
فرض کنید وزن‌ها نامنفی هستند بنابراین می‌توانیم تصور کنیم که زیر گراف فراگیر با کمترین وزن یک درخت فراگیر <math>T</math> از <math>G</math> است حال الگوریتم زیر را برای این کار ارائه می‌دهیم.
 
== [[الگوریتم]] [[کروسکالکراسکال]] ==
 
۱-یال پیوندی<math>e_1</math> را طوری انتخاب کن که وزن آن کوچکترین مقدار موجود باشد.
خط ۵۱:
 
== اثبات ==
ثابت می‌کنیم هر درخت فراگیر <math>U</math> با یال‌های <math>{e_1},{e_2},{...},{e_{v-1}}</math> که با الگوریتم [[کروسکالکراسکال]] ساخته شود یک درخت بهینه‌است.
 
''از طریق تناقض'': به ازای هر درخت فراگیر <math>T</math> از <math>G</math> به غیر از <math>U</math> کوچکترین مقدار <math>i</math> را به طوری که <math>{e_i}</math> در <math>T</math> نباشد با<math>f(t)</math> نمایش می‌دهیم.
خط ۵۹:
<math>w({T^'})=w(T)+w({e_k})-w({{e^'}_k})</math>
 
ولی در [[الگوریتم]] کروسکالکرسکال <math>{e_k}</math> به عنوان یالی با کمترین وزن طوری انتخاب شده‌است که زیرگراف <math>G</math> با یال‌های <math>{e_k},{...},{e_2},{e_1}</math> بدون دور باشد. چون زیرگراف <math>G</math> با یال‌های <math>{{e^'}_k},{...},{e_2},{e_1}</math> زیر گرافی از <math>T</math> است. بنابرین ان هم بدون دور است و نیتجه می‌گیریم که:
 
<math>w({{e^'}_k})</math> ≥ <math>w({{e}_k}),</math>
خط ۷۳:
که این با <math>T</math> انتخاب در تناقض است. بنابرین <math>T=U</math> و در نتیجه<math> U</math> یک درخت بهینه‌است.
 
== شبه کد الگوریتم کروسکالکراسکال ==
 
مسئله:یک درخت پوشای می نیمم مشخص کنید.