מבני נתונים ואלגוריתמים - מחברת קורס/גרפים/אלגוריתמים למציאת עפ"מ/תרגילים/קבוצת היזון חוזר/תשובה

ראשית נאפיין את בעזרת התנאי שניתן על .



משפט:

אם היא קבוצת ההיזון החוזר הזולה ביותר, אז היא קבוצת קשתות עץ פורש מקסימום.


נסמן כ את מחיר כל קשת (כלומר Edge-Costs[e]), ונסמן כאת סך משקל הקשתות, .


הוכחה: הקבוצה , היא, עפ"י ההגדרה, הקבוצה המביאה למינימום את


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

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

נסמן כ את מחיר הקשת היקרה ביותר פלוס 1 (כלומר ),‏ ונסמן לכל קשת ,‏ .



משפט:

אם נבנה טבלה Edge-Costs'כל שלכל קשת ,‏ Edge-Costs'[e] , ונריץ אלגוריתם עץ פורש מינימום עם Edge-Costs', אז קבוצת הקשתות שתוחזר תהווה קשתות לעץ פורש מקסימום עם Edge-Costs.



הוכחה: נשים לב שכל חיובי ממש (לפי הבניה), ולכן נוכל להריץ אלגוריתם עץ פורש מינימום עם Edge-Costs', והקבוצה שתוחזר לנו תהיה קבוצה בת גודל . בנוסף,





נוכל, לכן, לפתור את הבעיה בשלבים הבאים:

  1. נבנה את טבלת העלויות Edge-Costs'(בסיבוכיות ).
  2. נריץ את אלגוריתם Prim עם Edge-Costs' (בסיבוכיות ).
  3. נמצא את הקשתות שלא הוחזרו מאלגוריתם Prim (בסיכוכיות ).

הסיבוכיות הכוללת היא .