שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2022 - מסלולים קצרים
שאלה 4 – מסלולים קצרים בגרפים (עמוד 12)
נתון גרף קשיר ולא מכוונן עם משקלות על הקשתות (אם קיימים). נניח שהגרף לא מכיל מעגלים שליליים.
מטרה: כתבו את הדרוג בתוך הדרוג הנתון, כאשר היא תת-גרף קשיר המכיל:
1. חדרות הרודג 2. יחודות חציבה בין לפי 3. יחודות קשירות בין לפי 4. מה הגלוריתמים מבצעים עם בנסיגה לסדור?
5. הוכחות קשירות בין לפי 6. וכמה אלגוריתמים משתמשים במטריצות הסמיכות לחישוב מסלולים קצרים?
7. מה הגלוריתמים מבצעים עם ומדוע זה סופיסטי?
נתון גרף קשיר ולא מכוונן עם משקלות על הקשתות (אם קיימים). נניח שהגרף לא מכיל מעגלים שליליים.
מטרה: כתבו את הדרוג בתוך הדרוג הנתון, כאשר היא תת-גרף קשיר המכיל:
1. חדרות הרודג 2. יחודות חציבה בין לפי 3. יחודות קשירות בין לפי 4. מה הגלוריתמים מבצעים עם בנסיגה לסדור?
5. הוכחות קשירות בין לפי 6. וכמה אלגוריתמים משתמשים במטריצות הסמיכות לחישוב מסלולים קצרים?
7. מה הגלוריתמים מבצעים עם ומדוע זה סופיסטי?
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 912022סמסטר א
★★★★★
מסלולים קצריםדייקסטרהבלמן-פורדפלויד-וורשלגרפיםהוכחת נכונותשמורת לולאה
ניתן לפרש את המבוקש כעץ המסלולים הקצרים ביותר (SPT) מצומת מקור כלשהו . חישבו כיצד אלגוריתמים כמו דייקסטרה בונים ומנצלים מבנה זה.
השאלה, כפי שהיא מנוסחת, אינה ברורה ומשתמשת בטרמינולוגיה לא סטנדרטית. נפרש את השאלה מתוך ההקשר של מסלולים קצרים בגרפים, ונניח כי הוא עץ המסלולים הקצרים ביותר (Shortest Path Tree - SPT) מנקודת מקור בגרף . עץ זה הוא תת-גרף של המקיים שני תנאים: (1) הוא עץ מושרש ב-. (2) עבור כל צומת $v
otin V'svG'svG$.
בהינתן פרשנות זו, נענה על הסעיפים:
1. **צמתי הגרף **: מכיוון שהגרף המקורי קשיר, קיים מסלול מ- לכל צומת אחר $v
otin VG'V' = V$.
2. ו-3. חתכים וקשירות: אלגוריתמים לבניית עץ מסלולים קצרים, כמו אלגוריתם דייקסטרה, עובדים על ידי חלוקה של צמתי הגרף לשתי קבוצות: קבוצה של צמתים שהמרחק הקצר ביותר אליהם מ- כבר ידוע, וקבוצה של שאר הצמתים. בכל שלב, האלגוריתם בוחר צומת $u
otin V-SsSuSG'(S, V-S)Vs
otin Se=(u,v)SV-SsvG's$ לכל צומת אחר.
4. פעולת האלגוריתמים: אלגוריתמים כמו דייקסטרה ובלמן-פורד בונים את באופן איטרטיבי, לא רקורסיבי. הם מתחילים עם ומרחיבים את העץ צומת אחר צומת. אלגוריתם דייקסטרה עושה זאת באופן חמדני על ידי בחירת הצומת הקרוב ביותר שטרם התגלה. אלגוריתם בלמן-פורד מבצע איטרציות, ובכל איטרציה עובר על כל הקשתות ומבצע פעולות רלקסציה (relaxation), עד שהמרחקים מתייצבים.
5. הוכחות קשירות ונכונות: הוכחת הנכונות של אלגוריתם דייקסטרה, לדוגמה, משתמשת בשמורת לולאה: בתחילת כל איטרציה של הלולאה הראשית, לכל צומת $u
otin Sd[u]suSSG'\blacksquare$
6. אלגוריתמים המשתמשים במטריצת שכנויות: מספר אלגוריתמים לחישוב מסלולים קצרים מיועדים או יכולים להיות ממומשים ביעילות באמצעות מטריצת שכנויות, במיוחד עבור גרפים צפופים:
* אלגוריתם פלויד-וורשל (Floyd-Warshall): זהו אלגוריתם קלאסי לבעיית כל הזוגות מסלולים קצרים (All-Pairs Shortest Paths). הוא מבוסס על תכנות דינמי ופועל בסיבוכיות , המתאימה לייצוג מטריציוני.
* מימוש של אלגוריתם דייקסטרה באמצעות מטריצת שכנויות (ללא תור עדיפויות מתוחכם): מציאת הצומת עם המרחק המינימלי בכל שלב לוקחת זמן, מה שמוביל לסיבוכיות כוללת של .
* אלגוריתם בלמן-פורד: ניתן לממשו באמצעות מעבר על מטריצת השכנויות. סיבוכיות הזמן שלו, , הופכת ל- בגרף צפוף, מה שמתאים לייצוג מטריציוני.
7. **תפקיד ומורכבותו**: האלגוריתמים למעשה *בונים* את כתוצר לוואי של חישוב המרחקים. מבנה זה הוא מתוחכם (sophisticated) מכיוון שהוא מהווה פתרון קומפקטי לבעיית ה-Single-Source Shortest Paths. במקום לשמור את כל המסלולים, אנו שומרים רק עץ, שממנו ניתן לשחזר את המסלול הקצר ביותר מ- לכל צומת אחר. היעילות והנכונות של האלגוריתמים הנדרשים לבנייתו, כמו דייקסטרה, אינן טריוויאליות ותלויות בתכונות עמוקות של הגרף (כמו אי-קיום משקלים שליליים).
otin V'svG'svG$.
בהינתן פרשנות זו, נענה על הסעיפים:
1. **צמתי הגרף **: מכיוון שהגרף המקורי קשיר, קיים מסלול מ- לכל צומת אחר $v
otin VG'V' = V$.
2. ו-3. חתכים וקשירות: אלגוריתמים לבניית עץ מסלולים קצרים, כמו אלגוריתם דייקסטרה, עובדים על ידי חלוקה של צמתי הגרף לשתי קבוצות: קבוצה של צמתים שהמרחק הקצר ביותר אליהם מ- כבר ידוע, וקבוצה של שאר הצמתים. בכל שלב, האלגוריתם בוחר צומת $u
otin V-SsSuSG'(S, V-S)Vs
otin Se=(u,v)SV-SsvG's$ לכל צומת אחר.
4. פעולת האלגוריתמים: אלגוריתמים כמו דייקסטרה ובלמן-פורד בונים את באופן איטרטיבי, לא רקורסיבי. הם מתחילים עם ומרחיבים את העץ צומת אחר צומת. אלגוריתם דייקסטרה עושה זאת באופן חמדני על ידי בחירת הצומת הקרוב ביותר שטרם התגלה. אלגוריתם בלמן-פורד מבצע איטרציות, ובכל איטרציה עובר על כל הקשתות ומבצע פעולות רלקסציה (relaxation), עד שהמרחקים מתייצבים.
5. הוכחות קשירות ונכונות: הוכחת הנכונות של אלגוריתם דייקסטרה, לדוגמה, משתמשת בשמורת לולאה: בתחילת כל איטרציה של הלולאה הראשית, לכל צומת $u
otin Sd[u]suSSG'\blacksquare$
6. אלגוריתמים המשתמשים במטריצת שכנויות: מספר אלגוריתמים לחישוב מסלולים קצרים מיועדים או יכולים להיות ממומשים ביעילות באמצעות מטריצת שכנויות, במיוחד עבור גרפים צפופים:
* אלגוריתם פלויד-וורשל (Floyd-Warshall): זהו אלגוריתם קלאסי לבעיית כל הזוגות מסלולים קצרים (All-Pairs Shortest Paths). הוא מבוסס על תכנות דינמי ופועל בסיבוכיות , המתאימה לייצוג מטריציוני.
* מימוש של אלגוריתם דייקסטרה באמצעות מטריצת שכנויות (ללא תור עדיפויות מתוחכם): מציאת הצומת עם המרחק המינימלי בכל שלב לוקחת זמן, מה שמוביל לסיבוכיות כוללת של .
* אלגוריתם בלמן-פורד: ניתן לממשו באמצעות מעבר על מטריצת השכנויות. סיבוכיות הזמן שלו, , הופכת ל- בגרף צפוף, מה שמתאים לייצוג מטריציוני.
7. **תפקיד ומורכבותו**: האלגוריתמים למעשה *בונים* את כתוצר לוואי של חישוב המרחקים. מבנה זה הוא מתוחכם (sophisticated) מכיוון שהוא מהווה פתרון קומפקטי לבעיית ה-Single-Source Shortest Paths. במקום לשמור את כל המסלולים, אנו שומרים רק עץ, שממנו ניתן לשחזר את המסלול הקצר ביותר מ- לכל צומת אחר. היעילות והנכונות של האלגוריתמים הנדרשים לבנייתו, כמו דייקסטרה, אינן טריוויאליות ותלויות בתכונות עמוקות של הגרף (כמו אי-קיום משקלים שליליים).