שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2020 - עץ פורש מינימלי

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

יהי גרף קשיר ולא מכוון עם פונקציית משקל . נרצה להראות כי אלגוריתם Kruskal ואלגוריתם Prim מוצאים עץ פורש מזערי (MST) גם כאשר ישנן צלעות עם משקל שלילי.

ראשית, נגדיר בעיית MST חדשה ו"שקולה" על גרף עם משקלים אי-שליליים בלבד. נבחר קבוע כך שלכל צלע יתקיים . בחירה טבעית לקבוע כזה היא .

כעת, נגדיר פונקציית משקל חדשה, w': E \to \mathbb{R}_{iguplus 0}, באופן הבא: לכל .

לפי הגדרת , כל המשקלים תחת הם אי-שליליים. על פי הנתון בשאלה, האלגוריתמים של Prim ו-Kruskal פועלים נכונה על גרפים עם משקלים אי-שליליים, ולכן ימצאו עץ פורש מזערי עבור הגרף עם פונקציית המשקל .

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

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

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

סיכום ההוכחה:
1. בהינתן גרף
עם משקלים (שחלקם שליליים), אנו יוצרים בעיה חדשה עם משקלים המבטיחה אי-שליליות.
2. אנו יודעים שהאלגוריתמים של Prim ו-Kruskal ימצאו עץ פורש מזערי, נקרא לו
, עבור הבעיה עם המשקלים .
3. הראינו שעץ הוא MST ביחס ל-
אם ורק אם הוא MST ביחס ל-.
4. מכאן נובע שהעץ
שהאלגוריתמים מצאו הוא אכן עץ פורש מזערי עבור הבעיה המקורית עם המשקלים .

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