פתרונות 2 אלגוריתמים תרגיל בית
Transcription
פתרונות 2 אלגוריתמים תרגיל בית
אלגוריתמים תרגיל בית 2פתרונות שאלה 1 מצאו רק"חים ,ובדקו אם יש 𝑘 רק"חים שאין אף קשת שיוצאת ממנו .אם כן ,החזירו קודקוד אחד מכל רק"ח. שאלה ( 2פתרון מלא) א .נגדיר את Wכקבוצת הקודקודים המבוקשת ,ונאתחל ∅ = .Wמכל קודקוד 𝑉 ∈ 𝑣 ,נריץ BFSונבדוק אם ניתן להגיע ממנו לבדיוק 𝑘 קודקודים נוספים .אם כן ,נוסיף את 𝑣 ל .W-נשים לב שאם הגענו ל 𝑘 + 1 - קודקודים ,נוכל לעצור את ריצת ה BFSכי 𝑣 לא יתווסף ל . W-זמן הריצה של BFSעל 𝑘 קודקודים הוא ) 𝑂(𝑘 2ולכן זמן הריצה של BFSיהיה ) 𝑂(𝑘 2לכל קודקוד ,וסך הכל נקבל שסיבוכיות האלגוריתם היא )|𝑉| .𝑂(𝑘 2 ב .נגדיר ונאתחל את Wכמו בסעיף א' .נריץ DFSעל Gונמצא רכיבי קשירות .נכניס את קודקודי רכיב קשירות 𝐺′ל W-אמ"ם יש בו 𝑘 + 1קודקודים .זמן הריצה הוא של + BFSזמן מעבר על כל הקודקודים: )|𝐸| .𝑂(|𝑉| + שאלה 3 נחזיק משתנה 𝑡𝑜𝑜𝑟 ,ונאתחל אותו להיות השורש הראשון של ה DFSשלנו .כשגיע לקודקוד 𝑣 ,נעדכן 𝑡𝑜𝑜𝑟 = )𝑣(𝑡𝑜𝑜𝑟 .כשחליף שורש ,נעדכן את 𝑡𝑜𝑜𝑟 . שאלה 4 נמצא את גרף העל ,G′ולכל רכיב קשירות , 𝑣′ ∈ 𝐺′נסמן את מספר הקודקוד הקטן ביותר 𝐺 ∈ 𝑣 ברכיב הקשירות ע"י ) .𝑦𝑜𝑢𝑛𝑔(𝑣′נמיין את G′טופולוגית ,נעבור עליו מהסוף להתחלה ונעדכן לכל קודקוד את )𝑣(𝜌. שאלה 5 נשים לב שלכל הקשתות חוץ משלוש הקשתות הקלות ביותר יש משקלים שונים .לפי פעולת קרוסקל ,כל אחת מהקשתות הקלות ביותר יכולה להיות בעפ"מ .נריץ פרים ,ניקח את כל הקשתות שנבחרו ,ונוסיף את הקשת הקלה ביותר הנוספת ,אם היא לא נבחרה ע"י פרים. שאלה 6 א. G s ב. T s שאלה 7 א .נניח שיש סידור אחר אז קיימת קשת בכוון הלא נכון. ב .נכון .מספיק להוכיח את הלמה הבאה :אם אין קשת בין 2קודקודים צמודים במיון הטופולוגי ,ניתן להחליף ביניהם ולקבל מיון טופולוגי תקין. שאלה 8 ′ )′ א .נוריד את כל הקשתות 𝑒 אשר עבורם )𝑒(𝑤 ≥ 𝑒(𝑤 .נבדוק האם קיים מעגל המכיל את הקשת 𝑒 (ע"י הורדת ) e = (u, vוהרצת DFSלמצוא מסלול מ v -ל(.u - משפט :קיים מעגל כזה אם"ם אין עפ"מ המכיל את . e הוכחה >= :נניח שקיים מעגל כזה .נניח בשלילה ש ) e = (u, vהיא חלק מעפ"מ .Tנוריד את eונקבל שני רכיבי קשירות .נוסיף את אחת מקשתות המעגל שמחברות בין רכיבי הקשירות של 𝑢 ו( v -קיימת לפחות אחת כזאת) .קיבלו עץ עם משקל קטן מ.T - <=נניח שאין אף עפ"מ המכיל את ) .e = (u, vבכל עפ"מ ,קיים מסלול מ u -ל , v -כשמשקלות כל הקשתות במסלול קטן מ ,eאחרת האלגוריתם של קרוסקל היה יכול להוסיף את eלעפ"מ כשהיא הראשונה במשקל שלה .הוספת eלמסלול זה סוגרת מעגל בו eהיא הקשת הכבדה ביותר. ב .נוריד את כל הקשתות 𝑒 ′אשר עבורם )𝑒(𝑤 > ) .𝑤(𝑒 ′נבדוק האם קיים מעגל המכיל את הקשת 𝑒 ע"י הרצת DFSשמתחיל בה. משפט :קיים מעגל כזה אם"ם קיים עפ"מ שלא מכיל את . e הוכחה >= :נניח שקיים מעגל כזה .נניח בשלילה ש 𝑒 היא חלק מכל עפ"מ .כמו בסעיף נוריד את eונוסיף את אחת מקשתות המעגל שמחברות בין רכיבי הקשירות של uו v -וכיוון שמשקל הקשת שנשארנו איתה במקום eקטן שווה למשקל ,eקיבלנו עפ"מ ללא .e <=נניח שקיים עפ"מ Tשלא מכיל את .eנסמן ) e = (u, vונביט במסלול מ vל u -ב .T -משקל כל הקשתות במסלול הזה קטן או שווה למשקל ( eאחרת האלגוריתם של קרוסקל היה מוסיף את ) e והוספת eלמסלול זה סוגרת מעגל.