Practical Session No. 14 MST Minimum Spanning Tree (MST) Given a connected, undirected graph: A spanning tree is a sub-graph that is a tree and connects all the vertices of the original graph together. A minimum spanning tree (MST) is a spanning tree with weight less than or equal to the weight of every other spanning tree. Known algorithms: Prim and Kruskal
Kruskal The algorithm starts with V different trees (each tree consisting of one of the vertices in V) and each time unions the trees by adding the next minimal weight edge that doesn't creates a cycle. MST-Kruskal(G, w) A Ø for each vertex v V(G) Make-Set(v) sort the edges in E(G) by non-decreasing weight w for each edge (u,v) E(G) in order by non-decreasing weight if Find-Set(u) Find-Set(v) A A {(u,v)} Union(u,v) return A Complexity: used., assuming that the optimized union-find was Prim The algorithm starts in the tree T={r} (tree consisting of a single vertex) and extends it until it spans all the vertices in V(G). In each iteration the minimal weight edge of all the edges connecting T to the vertices that have not been covered by T yet is added to T. key[u] =min{w(u,v): (u,v)e(g) and vt} MST-Prim (G, w, r) Q V(G) for each v Q key[v] key[r] 0 π[r] NIL while Q Ø v Extract-Min(Q) for each u Adj[v] if u Q and w(v,u) < key[v] π[u] v key[u] w(v,u) Update (Q, u) Complexity: if using binary heap
שאלה 1 נתון גרף לא מכוון וקשיר עם משקלות חיוביים על הצלעות. רוצים למצוא קבוצת צלעות ' E שמכילה צלע אחת לפחות מכל מעגל ב- G ואשר משקלה מינימאלי.. נמצא עץ פורש מקסימאלי ואז נחזיר את ראשית, נראה שאכן מכילה קשת אחת לכל מעגל. זה נכון משום ש- T לא מכיל מעגלים, כלומר בכל מעגל של G יש לפחות צלע אחת שאינה נמצאת ב- T, כלומר היא נמצאת ב-. ממשקל מינימאלי. נסמן משקל ע"י. wt כעת נראה ש-, אשר מכילה צלע אחת לפחות מכל מעגל של G. בגלל ש- נתבונן באיזושהי קבוצת צלעות אחרת, מכילה צלע אחת לפחות מכל מעגל של G, ברור שבקבוצה ''E \E אין מעגלים, כלומר הצלעות ב- )הערה: ומקבלים ש- הן יער ואפשר להשלים אותן לעץ יש צלעות משותפות ולכן משקלם הכללי עשוי ו- ו- T לא מכילים צלעות משותפות אבל ייתכן שב-. להיות יותר גדול(. כעת, מכיוון ש- T הוא עץ פורש מקסימאלי, הרי ש- כנדרש. לכן מקבלים ש- שאלה 2 יש לתכנן רשת תקשורת עבור n ערים, כאשר מחיר קו בין עיר u ועיר v הוא המרחק בין שתי הערים )בקו אווירי(. יש לתכנן רשת תקשורת כך שמחירה יהיה מינימאלי תוך התחשבות בתנאים הבאים: חלק מהערים כבר מחוברות ביניהן ע"י קווי תקשורת ולכן ניתן לחסוך בהקמת הרשת החדשה ע"י שימוש בתשתיות קיימות. קמו ארגוני ירוקים שמתנגדים לחיבור קווי בחלק מן הערים )שאינן מחוברות לתשתיות קיימות( תקשורת ואנחנו מעוניינים לחבר את אותן ערים למספר קטן ככל האפשר של קווי תקשורת, כלומר למזער את מספרם של קווי התקשורת ברשת אשר מחוברים לאיזושהי עיר "ירוקה". הצע אלגוריתם למציאת רשת בעלות מינימאלית. רדוקציה לבעיית :MST כאשר נעניק לכל זוג ערים משקל עבור הצלע נייצג את הערים וקווי התקשורת ע"י גרף שמחברת אותם באופן הבא: כל קווי התקשורת הקיימים יקבלו משקל. 0 כל קווי התקשורת האחרים אשר אינם מקושרים לעיר שבה יש ארגוני-ירוקים יקבלו את המשקל של עלות הקמתם.
לבסוף, נסמן ב- X את המרחק המקסימאלי של שתי ערים כלשהן. עבור קווי התקשורת שקשורות לעיר או ערים שבהן יש ארגוני ירוקים, נעניק לצלע משקל שהוא המרחק בין שתי הערים + X. על הרשת שנוצרה נחשב.MST נבחן את התנהגותו של האלגוריתם של קרוסקל לחישוב MST על הגרף שהגדרנו. בסדר המיון של הצלעות, יופיעו בהתחלה כל הצלעות שמייצגות קווי-תקשורת קיימים, אח"כ כאלו המייצגות קוי-תקשורת לערים "לא-ירוקות" ולבסוף צלעות המייצגות קווי-תקשורת לערים "ירוקות". לכן, בהתחלה הוא יבחר קווי תקשורת קיימ םי והוא יעבור לבחור צלעות שיש להן משקל גדול מ- 0 רק לאחר שימצה את האפשרות לבחור צלעות במשקל 0. לאחר מכן, יבחר מתוך הצלעות שמייצגות קוי-תקשרות של ערים "לא-ירוקות" ויעבור לבחור קווים לערים ירוקות רק לאחר שימצה את האפשרות לצלעות אחרות. שאלה 3 מפקד של רשת ריגול צריך למסור הודעה לכל N הפעילים בקבוצה, ההודעה כמובן צריכה להשאר סודית. לכל שני פעילים,i j הנמצאים בקשר יש הסתברות ידועה > 1 P(i,j) < 0 שאם i מעביר את ההודעה ל- j ההודעה תתגלה. המטרה של המפקד היא לתכנן את רשת העברת ההודעה כך המידע יגיע לכל הפעילים תוך מזעור הסתברות גלוי ההודעה. מה יעשה? נבנה גרף על כל הפעילים, כאשר יש צלע בין כל שני פעילים הנמצאים בקשר. אנחנו רוצים שההודעה תגיע לכל הפעילים ולכן מחפשים תת-גרף בו יש מסלול מהצומת s, המייצג את המפקד לכל הפעילים, כלומר, תת-גרף קשיר. בתת-גרף האופטימאלי עבורנו לא יופיע מעגל, מכיוון שלו היה מעגל היה ניתן לזרוק צלע במעגל בלי לפגוע בקשירות ותוך הפחתת הסיכון להתגלות, ולפיכך לא היה אופטימאלי. ולכן אנחנו מחפשים עץ פורס בגרף עבורו ההסתברות לגילוי ההודעה מינימאלי. ההסתברות לאי גילוי ההודעה עבור צלע בודדת הוא )1-P(i,j(( ולכן ההסתברות הכללית לאי גילוי ההודעה על פני כל עבור תת-עץ כלשהוא T הוא: על פני כל הוא מקסימלי. כלומר אנחנו מחפשים עץ T עבורו נשתמש בכך ש log)( היא פונקציה מונוטונית עולה ולכן מחפשים T כך ש מקסימלי. אבל: ולכן שקול למציאת עץ פורש מקסימלי בגרף שלנו כאשר משקל צלע (i,j) הוא log(1-p(i,j)) או לחלופין למציאת MST כאשר משקל צלע (i,j) הוא -log(1-p(i,j)( -log(1-p(i,j)( הוא מספר חיובי(.
שאלה 4 האם אפשר לפתור הבעיה הקודמת ללא הפונקציה log()? למעשה אפשר להריץ MST כאשר משקל צלע (i,j) הוא P(i,j(!! בריצת prim על הגרף תחת כל אחת משני המישקולים השונים אותה הצלע תבחר בכל שלב! כאשר P(i,j( מינימלי בכל שלב אם"ם -log(1-p(i,j)) מינימלי. )כלומר הפתרון הקודם רק מסביר למה זה עובד (. שאלה ממבחן נתון גרף G עם משקולות חיוביים ושונים. תהא w פונקצית המשקל כך ש- w(e)>1 לכל e. סמנו נכון / לא נכון לגבי כל אחד מהמשפטים הבאים: נגדיר פונקצית משקל חדשה: 1/w(e(.w (e) = w(e) טענה: העץ הפורש המינימאלי עפ"י 'w. זהה בקבוצת צלעותיו לעץ הפורש המינימאלי עפ"י w נכון/לא נכון עץ מכפלה פורש מינימלי הוא עץ פורש של G שמכפלת משקלות צלעותיו מינימלית. טענה: עץ מכפלה פורש מינימלי זהה בקבוצת צלעותיו לעץ הפורש המינימאלי. נכון/לא נכון.1.2 נתון גרף קשיר ולא מכוון,G=(V,E( וידוע שכל המשקלות על הקשתות שונים זה מזה ורק לשתי קשתות יש אותו המשקל. תארו בקצרה אלגוריתם הבודק אם ל- G קיים MST )עץ פורש מינימלי( יחיד. נתחו זמן ריצה ונמקו. 1. נכון 2. נכון נמיין את צלעות G עפ"י משקלן בזמן.O( E log E ( תהי S1 הסדרה שהתקבלה. נסרוק את הסדרה S1 בזמן O( E ( ונמצא את זוג הצלעות עם אותו המשקל. ניצור סדרה נוספת S2 הזהה ל- S1 פרט לכך שזוג הצלעות עם אותו המשקל מופיעות בה בסדר הפוך. נריץ את האלגוריתם למציאת עפ"מ של קרוסקל פעמיים, פעם על S1 ופעם על S2. יהיו T1 ו- T2 העצים שהתקבלו, בהתאמה. אם T1 מכיל את אחד מבני הזוג בלבד ואלו T2 מכיל את השני, אזי קיימים שני עפ"מ, אחרת קיים עץ יחיד. במהלך ריצת האלגוריתם למציאת עפ"מ, נשים לב מה קורה אם זוג הצלעות עם אותו המשקל, כך שנוכל לקבוע מיד בגמר הריצה האם T2 שונה מ- T1 או לא.