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

נתון גרף מכוון עם משקלים וקדקוד מקור . בנוסף נתון עץ פורש מכוון המושרש ב-. הציגו אלגוריתם המכריע האם הוא אכן עץ מסלולים מזעריים (עמ"מ) מ-. האלגוריתם חייב לרוץ מהר יותר אסימפטוטית מ-Dijkstra, ופלטו הוא "כן (Accept)" או "לא (Reject)" בלבד (אינכם נדרשים לחשב עמ"מ בעצמכם).
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 85 · 2020 · סמסטר א
מסלולים קצריםהוכחת נכונותגרפיםסיבוכיות
הוא עמ"מ אם ורק אם מרחקי-העץ מקיימים את תנאי האופטימליות של Bellman: אף צלע אינה מקיימת . מעבר יחיד על הצלעות מספיק — ללא תור-קדימויות.
האלגוריתם.
1. עבור מ-
על העץ וחשב לכל קדקוד את = משקל המסלול מ- ל- בתוך (מעבר יחיד, ).
2. לכל צלע
: אם — פלוט "לא (Reject)" וסיים.
3. פלוט "כן (Accept)".


כלומר הוא עמ"מ אם ורק אם אף צלע אינה "מרפה" (relax) מרחק בעץ: לכל צלע.

זמן ריצה. לחישוב , ו- למעבר על הצלעות — סה"כ . מהיר יותר מ-Dijkstra () — ללא גורם לוגריתמי ותור-קדימויות.

הוכחת נכונות.
  • אם עמ"מ: אז לכל , ולכל צלע מתקיים אי-שוויון המשולש , כלומר — אין הפרה, ומוחזר Accept.
  • אם אינו עמ"מ: קיים קדקוד שמרחקו בעץ גדול מהמרחק האמיתי. יהי מסלול מזערי אמיתי; קיימת עליו צלע שעבורה (אחרת כל מרחקי העץ היו אופטימליים), והאלגוריתם מזהה אותה ומחזיר Reject.