/ / Algorithm Kraskal - בניית מסגרת אופטימלית

אלגוריתם Kruskal - בניית המסגרת האופטימלית

В начале 19 века геометр из Берлина Якоб Штейнер להגדיר את המשימה של איך לחבר את שלושת הכפרים כך אורכם היה הקצר ביותר. לאחר מכן, הוא סיכם את הבעיה: הוא נדרש למצוא נקודה על המטוס, כך המרחק ממנו אל n נקודות אחרות הוא הקטן ביותר. במאה ה -20 נמשכה העבודה בנושא זה. הוחלט לקחת כמה נקודות ולחבר אותן כך שהמרחק ביניהם יהיה הקצר ביותר. כל זה הוא מקרה מיוחד של הבעיה הנחקרת.

אלגוריתמים חמדנים

אלגוריתם Kraskal שייך לאלגוריתמים "חמדנים"(הם נקראים גם שיפוע). המהות של אלה - הרווח הגדול ביותר בכל צעד. לא תמיד האלגוריתמים "החמדנים" נותנים את הפתרון הטוב ביותר לבעיה. יש תיאוריה שמראה שכאשר מיושמים על משימות ספציפיות, הם מספקים את הפתרון האופטימלי. זוהי התיאוריה של matroids. אלגוריתם Kraskal מתייחס לבעיות כאלה.

מציאת מסגרת המשקל המינימלי

האלגוריתם נחשב בונה אופטימליגרף מסגרת. הבעיה לגבי זה היא כדלקמן. גרף לא מכוונן ללא קצוות מרובים ולולאות ניתנת, ופונקציה של משקל w ניתנת על קבוצת הקצוות שלה, אשר מקצה לכל קצה e מספר המשקל של הקצה - w (e). המשקל של כל קבוצת משנה מקבוצת הקצוות נקבע על פי סכום משקולות הקצוות. זה נדרש למצוא את השלד של המשקל הקטן ביותר.

תיאור

אלגוריתם Kraskal עובד ככה.ראשית, כל הקצוות של הגרף המקורי מסודרים לפי הגדלת משקולות. בתחילה, המסגרת אינה מכילה קצוות, אך כוללת את כל קודקודי התרשים. לאחר השלב הבא של האלגוריתם, קצה אחד נוסף לחלק שנבנה כבר של המסגרת, שהוא יער פורש. זה לא נבחר באופן שרירותי. כל הקצוות של הגרף, שאינם שייכים למסגרת, יכולים להיקרא אדום וירוק. קודקודים של כל קצה אדום נמצאים מרכיב אחד של הקישוריות של היער בבנייה, ואת הקודקודים של הירוק הם שונים. לכן, אם נוסיף לו קצה אדום, יופיע מחזור, ואם הוא ירוק, ביער המתקבל לאחר שלב זה, רכיבי הקישוריות יהיו פחות. לכן, אין קצה אדום ניתן להוסיף את הבנייה, אבל כל קצה ירוק ניתן להוסיף כדי להשיג יער. ולהוסיף קצה ירוק עם משקל מינימלי. התוצאה היא מסגרת של המשקל הנמוך ביותר.

יישום

בואו נציין את היער הנוכחי F.הוא מחלק את קבוצת הקודקודים של הגרף לאזורי קישוריות (האיחוד שלהם יוצר F, והם לא מצטלבים בזוגות). בקצוות האדומים יש שני קודקודים באותו חלק. חלק (x) הוא פונקציה אשר עבור כל קודקוד x מחזירה את שם החלק שאליו שייך x. Unite (x, y) הוא הליך הבונה מחיצה חדשה, המורכבת מאיחוד החלקים x ו- y וכל שאר החלקים. תן n להיות מספר הקצוות בגרף. כל המושגים הללו כלולים באלגוריתם של קרוסקאל. יישום:

  1. סדר את כל קצוות הגרף מה -1 ל- n בסדר משקולות עולה. (ai, bi הם קודקודי הקצה עם המספר i).

  2. עבור i = 1 ל- n do.

  3. x: = חלק (ai).

  4. y: = חלק (bi).

  5. אם x אינו שווה ל- y אז התאחד (x, y), כלול את הקצה i ב- F.

נְכוֹנוּת

תן T להיות השלד של הגרף המקורי שנבנה באמצעות האלגוריתם של קרוסקאל, ו- S יהיה השלד השרירותי שלו. עלינו להוכיח ש- w (T) אינו עולה על w (S).

תן ל- M להיות קבוצת הקצוות S, P להיות קבוצת הקצוותT. אם S אינו שווה ל- T, אז יש קצה et של המסגרת T שלא שייך ל- S. בואו נצטרף ל- et ל- S. נוצר מחזור, נקרא לזה C. אנחנו מסירים מ- C כל קצה es השייכים ל- S. אנו מקבלים מסגרת חדשה, מכיוון שהקצוות, ויש בה כמה שיותר פסגות. משקלו אינו עולה על w (S), מכיוון ש w (et) הוא לכל היותר w (s) מכוח האלגוריתם של קרוסקאל. אנו נחזור על פעולה זו (החלפת הקצוות S בקצוות T) עד שנקבל T. המשקל של כל מסגרת שהתקבלה לאחר מכן אינו גדול ממשקל הקודם, ומכאן נובע ש- w (T) אינו גדול מ w (S).

כמו כן, נכונות האלגוריתם של קרוסקאל נובעת ממשפט Rado-Edmonds על מטרואידים.

דוגמאות ליישום האלגוריתם של קרוסקאל

האלגוריתם של קרוסקאל

ניתן לך גרף עם קודקודים a, b, c, d, e וקצוות (a,ב), (א, ה), (ב, ג), (ב, ה), (ג, ד), (ג, ה), (ד, ה). משקולות הצלעות מוצגות בטבלה ובאיור. בתחילה, היער F בבנייה מכיל את כל קודקודי הגרף ואינו מכיל שום קצוות. האלגוריתם של קרוסקאל יוסיף תחילה את הקצה (a, e), מכיוון שיש לו את המשקל הקטן ביותר, והקודקודים a ו- e נמצאים ברכיבים מחוברים שונים של היער F (הקצה (a, e) הוא ירוק), ואז הקצה (ג, ד), לכן שלקצה זה יש את המשקל הנמוך ביותר מקצוות הגרף שאינו שייך ל- F, והוא ירוק, ואז הקצה (a, b) מתווסף מאותן סיבות. אבל מדלגים על הקצה (b, e), למרות שיש לו את המשקל הקטן ביותר של הקצוות הנותרים, מכיוון שהוא אדום: הקודקודים b ו- e שייכים לאותו מרכיב מחובר של היער F, כלומר אם נוסיף הקצה (b, e) ל- F, נקבל מחזור. ואז מוסיפים קצה ירוק (b, c), מדלגים על קצה אדום (c, e) ואז d, e. לפיכך, הקצוות (a, e), (c, d), (a, b), (b, c) מתווספים ברצף. השלד האופטימלי של הגרף הראשוני מורכב מהם. כך עובד האלגוריתם במקרה זה צָבוּעַ. דוגמה הראתה זאת.

דוגמת האלגוריתם של קרוסקאל

האיור מראה גרף המורכב משני רכיבים מחוברים. הקווים המודגשים מראים את קצוות מסגרת החוטים האופטימלית (ירוקה) שנבנתה באמצעות האלגוריתם של קרוסקאל.

יישום האלגוריתם של קרוסקאל

האיור העליון מציג את הגרף המקורי, והתחתון מציג את מסגרת המשקל המינימלית שנבנתה עבורו באמצעות האלגוריתם הנחשב.

רצף הקצוות שנוספו: (1,6); (0.3), (2.6) או (2.6), (0.3) - לא משנה; (3.4); (0.1), (1.6) או (1.6), (0.1) אדישים גם הם (5.6).

נכונות האלגוריתם של קרוסקאל

האלגוריתם של קרוסקאל מוצא יישום מעשי, למשל, לייעל את הנחת התקשורת, הכבישים בשכונות חדשות ביישובים בכל מדינה, כמו גם במקרים אחרים.