תכנון אלגוריתמים 202--204 סמסטר ב' תש''ע ללא חומר עזר הנחיות חשובות: הבוחן ללא חומר עזר מכל סוג שהוא. משך הבוחן שעתיים וחצי. פתרו את הבוחן תחילה במחברת טיוטא. לאחר מכן העתיקו את התשובות למקום המיועד בטופס התשובות. שימו לב: בדיקת הבוחן לא תביא בחשבון את מחברת הטיוטה או תוספות בגב העמוד! רשמו את מספר הנבחן בראש כל דף. הבוחן מורכב מ- שאלות, יש לענות על כל השאלות. מותר להשתמש במשפטים מהכיתה ומהתרגול, אך יש לציין את הניסוח המדויק של המשפט. ניתן להסתמך על סעיפים קודמים גם אם לא פתרתם אותם. אם לא מצוין אחרת, על תאור האלגוריתם לכלול ניתוח זמן ריצה והוכחת נכונות. במידה ואינכם יודעים את התשובה לסעיף כלשהו, רשמו "לא יודעים" ותזכו ב- 20% מניקוד הסעיף. שימו לב, לא תהיינה הארכות זמן למבחן זה (פרט לסטודנטים עם אישורים). בהצלחה!
. w i f i, s i זמן סיום 5) שאלה נקודות) ניזכר בבעיית הפעילויות הממושקלת שהוגדרה בהרצאות: =A כאשר לכל פעילות נתונים זמן התחלה קלט: קבוצת פעילויות {n,...,} ומשקל פתרון חוקי: קבוצת פעילויות זרות. יש למצוא: פתרון חוקי עם משקל מקסימום. נתון קלט לבעיה ובו משקל כל פעילות גדול ממש מ-. נתבונן באלגוריתם הבא:. הורד ממשקל כל פעילות. 2. פתור את הבעיה ע"י אלגוריתם שתואר בכיתה (עם המשקלים החדשים).. החזר את רשימת הפעילויות שהאלגוריתם החזיר. הוכיחו או הפריכו את הטענה הבאה: האלגוריתם מחזיר פיתרון חוקי עם משקל מקסימום לפי המשקלים המקוריים. 55) שאלה 2 יהי G= ( V, E) שליליים. יהי גרף נקודות) מכוון עם פונקצית משקל w : E R i 0 נגדיר V ומספר שלם V עבור. s V (יתכנו משקלים שליליים) OPT(, i) חסר מעגלים להיות משקל מסלול קל ביותר מ s ל שאורכו בדיוק i אם קיים (כאשר אורך של מסלול הינו מספר הצלעות במסלול); אחרת. ל s להיות משקל מסלול קל ביותר מ OPT( ( כמו כן, נגדיר. OPT(, i ) =. OPT(, i) סעיף א (0 נקודות) נסחו נוסחת מבנה (נוסחת נסיגה) ותנאי בסיס עבור סעיף ב (5 נקודות) הוכיחו את הנוסחה שהגדרתם בסעיף א'. חובה להשתמש במסגרת ההוכחה שהוצגה בכיתה. אין צורך להוכיח את מקרי הבסיס. i). OPT(, הסבירו תשובתכם. סעיף ג (8 נקודות) בטאו את ( OPT( בעזרת סעיף ד (2 נקודות) נסחו אלגוריתם איטרטיבי בסיבוכיות (זמן ריצה) שפורט לעיל) מערך מחזיר 2 ( + ) O V V E 2 שעבור קלט w,g ו- s בגודל D V V כך ש D(, i) = OPT(, i) V לכל d. כמו כן, על האלגוריתם שלכם להחזיר מערך 0 i V V בגודל. V נתחו את זמן ריצת האלגוריתם. אין צורך להוכיח את נכונות האלגוריתם. ניקוד חלקי יינתן על אלגוריתם בסיבוכיות.O( V ) (כפי ולכל כך ש ) d( ) = OPT( לכל (כפי שפורט לעיל), מערך ה- d() (כפי s, w G, סעיף ה (0 נקודות) הציעו אלגוריתם בסיבוכיות ()O שבהינתן קלט. (,u ( את הצלע המכיל ל- s מחזיר האם קיים מסלול קל ביותר מ, (,u ( E שחושב בסעיף ד') וצלע אין צורך להוכיח את נכונות האלגוריתם או לנתח את זמן ריצתו.
(0 נקודות) שאלה e סעיף א (20 נקודות) יהי (E =G ( V, גרף לא מכוון קשיר עם פונקצית משקל, w : E R קודקוד בגרף ו- ביותר מבין הצלעות הנוגעות ב-. הוכיחו כי קיים עץ פורש מינימום של G המכיל את e. צלע קלה סעיף ב (0 נקודות) נגדיר את בעיית העלה בעץ פורש מינימום: קלט: גרף לא מכוון קשיר G עם פונקצית משקל w : E R וקודקוד. יש למצוא: האם קיים עץ פורש מינימום של G בו דרגת היא (כלומר, הוא עלה בעץ). דוגמא: 2 4 2 2 בגרף הימני יש עץ פורש בו דרגת היא לעומת הגרף השמאלי שבו אין עץ מינימום כזה. תארו אלגוריתם בסיבוכיות O( V log V + E ) להוכיח את נכונות האלגוריתם או לנתח את זמן ריצתו. הפותר את בעיית העלה בעץ פורש מינימום. אין צורך רמז: הסתכלו על גרף השונה קצת מ- G. בהצלחה!
תכנון אלגוריתמים 202--204 דפי עזר לבוחן האלגוריתם של קרוסקל (Kruskal). w : E R G= קלט: גרף לא מכוון (E ( V, קשיר עם פונקצית משקל, B, C אתחל E כל עוד V B < בצע: 2.. הוצא צלע זולה ביותר מ- C, נקרא לה e 2. אם e אינה יוצרת מעגל עם הצלעות ב- B החזר את B) ( V,. B אז B {e}.. האלגוריתם של פרים (Prim). w : E R G= קלט: גרף לא מכוון (E ( V, קשיר עם פונקצית משקל u S, S כך ש- ( u, ) E בחר r V כלשהו B, S אתחל{ r { כל עוד V B < בצע:,u ( צלע זולה ביותר מבין הצלעות.. תהי ) B B {e}. S S { }.. החזר את B) ( V,....4 האלגוריתם של דיקסטרה (Dijkstra) INITIALIZE-SINGLE-SOURCE(G, s) for each ertex V[G] 2 d[] π[] NIL 4 d[s] 0 RELAX(u,, w) if d[] > d[u] + w(u, ) then 2 d[] d[u] + w(u, ) π[] u DIJKSTRA(G, w, s) INITIALIZE-SINGLE-SOURCE(G, s) 2 S Ø Q V[G] 4 while Q Ø 5 u EXTRACT-MIN(Q) 6 S S {u} 7 for each ertex in Q such that Adj[u] 8 RELAX(u,, w) 4
תכנון אלגוריתמים 202--204 דפי עזר לבוחן האלגוריתם של בלמן-פורד (Bellman-Ford) BELLMAN-FORD (G,w,s) Initialize-Single-Source(G,s) 2 for i 0 to V [ G] for each edge ( u, ) E[ G] 4 Relax(u,,w) 5 for each edge ( u, ) E[ G] 6 if d [ ] > d[ u] + w( u, ) then 7 return FALSE 8 return TRUE משפטים גרף פשוט ולא מכוון. התנאים הבאים שקולים זה לזה: משפט : יהי E) G = ( V, G קשיר וחסר מעגלים,., E = V חסר מעגלים ו- G, E = V קשיר ו- G. 4. ב- Gיש מסלול פשוט יחיד בין כל זוג קודקודים. משפט 2: =G גרף קשיר, לא מכוון ופשוט. יהי E) ( V, F { H = ( V, מכיל מעגל יחיד, ולכל צלע e}).g יהי F) T = ( V, עץ פורש של G ו-. e F אזי { F T ' = ( V, הוא עץ פורש של e} \ { e'}) במעגל e' 5