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

محتوای حذف‌شده محتوای افزوده‌شده
Rezabot (بحث | مشارکت‌ها)
جز ربات: حذف میان‌ویکی موجود در ویکی‌داده: ۲۳ میان‌ویکی
خط ۱:
در [[نظریه گراف]]، '''الگوریتم کروسکال''' الگوریتمی برای یافتن یک [[زیرگراف]] فراگیر [[گراف همبند|همبند]] با کمترین وزن در یک [[گراف وزن‌دار]] است (در یک گراف وزن دار، به هر یال وزنی نسبت داده شده‌است). همچنین این الگوریتم برای یافتن کوچکترین درخت فراگیر در یک گراف وزن دار استفاده می‌شود.
 
به عنوان مثال فرض کنید یک شبکه [[راه آهن]] که تعدادی شهر را به یکدیگر متصل می‌کند در دست احداث است می‌خواهیم با داشتن هزینه<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> است حال الگوریتم زیر را برای این کار ارائه می‌دهیم.
خط ۱۶:
 
۳-در صورتی که مرحله ۲ دیگر قابل اجرا نیست توقف کن.
== برنامه ی Graph Explorer ==
دانلود سورس از لینک زیر<br />{{سخ}}
 
http://www.programyar.com/?p=5183<br />%7B%7Bسخ}}
 
نمونه ای از خروجی برنامه:<br />{{سخ}}
 
[[Fileپرونده:Kruskal algorithm.gif|Kruskal algorithm]]
 
== مثال ==
خط ۵۵:
''از طریق تناقض'': به ازای هر درخت فراگیر <math>T</math> از <math>G</math> به غیر از <math>U</math> کوچکترین مقدار <math>i</math> را به طوری که <math>{e_i}</math> در <math>T</math> نباشد با<math>f(t)</math> نمایش می‌دهیم.
اکنون فرض کنید که <math>U</math> یک [[درخت]] بهینه نباشد و <math>T</math> را به عنوان درخت بهینه در نظر بگیرید که در آن<math>f(t)</math> دارای بزرگترین مقدار ممکن باشد. فرض کنید <math>f(t)=k</math> این بدان معنی است که <math>{e_{k-1}},{...},{e_2},{e_1}</math> هم در <math>T</math> و هم در <math>U</math> هستند. ولی <math>{e_k}</math> در <math>T</math> نیست پس شامل یک دور یکتای <math>C</math> می‌باشد. فرض کنید <math>{{e^'}_k}</math> یالی از <math>C</math> باشد که در <math>T</math> هست ولی در <math>U</math> نیست. پس <math>{{e^'}_k}</math>[[یال برشی]] ازT+<math>{e_k}</math> نیست.
بنابراین <math>{T^'}=(T+{e_k}-{{e^'}_k})</math> یک [[گراف همبند]] با <math>v-1</math> یال بوده در نتیجه [[درخت فراگیر]] دیگری برای <math>G</math> خواهد بود. روشن است که:
 
<math>w({T^'})=w(T)+w({e_k})-w({{e^'}_k})</math>
خط ۷۷:
مسئله:یک درخت پوشای می نیمم مشخص کنید.
 
ورودی:عدد صحیح n>=2 ، [[عدد صحیح]] مثبت m و یک گراف بدون جهت و وزن دار و متصل شامل n گره و m لبه. گراف با یک مجموعه E که شامل لبه‌های گراف همراه با وزن‌های انها است نشان داده می‌شود
 
خروجی:مجموعه‌ای از لبه‌ها F در یک [[درخت پوشا]] مینیمم
 
{{چپ‌چین}}
خط ۱۳۲:
[[رده:الگوریتم‌های گراف]]
[[رده:درخت پوشا]]
[[رده:ویکی‌سازی رباتیک]]