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

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

(i) מאתחלים מערך חד-ממדי באמצעות הכלל:(ii) לולאה חיצונית: חוזרים שוב ושוב על הפעולה הבאה.

(ii.1) לולאה פנימית: סורקים את הצלעות בסדר לקסיקוגרפי. לכל צלע מבצעים:
אם
אז מעדכנים .

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

(א) רישמו מה מחשב האלגוריתם (אין צורך להוכיח נכונות).

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

(ג) הציגו סדרת גרפים אחרת , עבורם נכנסים ללולאה החיצונית פעמיים בלבד, וזאת למרות ששמספר הצלעות שלהם זהה לגרפים מהסעיף הקודם, כלומר לכל .
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד ב2020סמסטר א
ניתוח אלגוריתמיםמסלולים קצריםבלמן-פורדסיבוכיותגרפיםמעקב אחר אלגוריתם
שימו לב כיצד המידע על המרחקים מתקדם מהמקור לאורך המסלולים בגרף בכל איטרציה של הלולאה החיצונית. מהו המבנה הגרפי שיגרום להתקדמות האיטית ביותר (הגרועה ביותר) של מידע זה?
(א) האלגוריתם מחשב את אורכי המסלולים הקצרים ביותר מהקדקוד המקור לכל שאר הקדקודים בגרף, . המערך בסיום האלגוריתם יכיל את המרחקים הללו, כלומר לכל , כאשר הוא אורך המסלול הקצר ביותר מ- ל-. אלגוריתם זה הוא וריאציה של אלגוריתם בלמן-פורד. הפעולה הפנימית (ii.1) היא פעולת ריפוי (relaxation), והאלגוריתם מפסיק כאשר איטרציה שלמה על כל הצלעות אינה מניבה שיפור באורכי המסלולים הנשמרים במערך .

(ב) המספר המרבי של איטרציות הוא .
סדרת גרפים
המשיגה חסם זה היא גרף מסלול (path graph) בעל קדקודים.
* קדקודים:
.
* צלעות:
.
* מקור:
.
* משקלים:
לכל צלע.

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

(ג) סדרת גרפים שעבורה האלגוריתם מבצע שתי איטרציות בלבד היא גרף כוכב (star graph), שהמקור במרכזו.
* קדקודים:
.
* צלעות:
.
* מקור:
.
* משקלים:
לכל צלע.
מספר הצלעות בגרף זה הוא
, הזהה למספר הצלעות ב-.

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

סה"כ, הלולאה החיצונית רצה 2 פעמים בלבד.