BFS, DFS, Topological Sort תרגיל בית 1 מוסכמות והנחות להלן רשימת הנחות ומוסכמות אשר תקפות לכל השאלות, אלא אם כן נכתב אחרת במפורש בגוף השאלה. עליכם להוכיח נכונות ולנתח סיבוכיות עבור כל אלגוריתם מוצע. במידה ואין דרישת סיבוכיות מפורשת, הנכם נדרשים לספק אלגוריתם בעל הסיבוכיות הטובה ביותר שתוכלו. כל גרף הוא סופי ופשוט )חסר קשתות מקבילות ולולאות עצמיות(. אנו מעודדים אתכם להגיע לסדנאות או לשעות הקבלה על מנת לשאול שאלות על התרגיל ולקבל תשובה אינטראקטיבית. עם זאת, ניתן גם לשלוח שאלות למייל,algotechnion@gmail.com ואנו נעלה תשובות ל- FAQ שיפתח באתר. שיטת עבודה מומלצת: לאחר מחשבה על האלגוריתם, חשבו אילו טענות עליכם לנסח על מנת להוכיח את נכונות האלגוריתם. שימו לב: את העבודות יש להגיש לתא הקורס בקומה 1 ובנוסף יש להגיש באופן אלקטרוני דרך אתר הקורס. אם עבודתכם נעשתה בכתב יד, יש לסרוק את העבודה ולהגיש את קובץ ה- PDF המתקבל. יש להגיש את המטלות בזוגות. הגשות מבולגנות או לא קריאות לא תיבדקנה. כל גיליון שיעורי בית ייבדק בשיטה מדגמית. משמע, אנו נבדוק שאלה אחת או שתיים לבחירתינו בצורה יסודית )50 נק'(, ויתר השאלות תיבדקנה בקצרה )50 נק'(. שינויים שנוספו לאחר פרסום הגיליון מסומנים בצהו החדשים יותר בירוק.
שאלת חימום מטרת השאלה היא לעזור לכם להבין טוב יותר את החומר לפני שאתם מתחילים לפתור את המטלה. זו שאלת חובה, אבל התשובות אליה צריכות להיות תמציתיות! בשני הסעיפים הבאים נתון גרף מכוון( E G, =,V) וצומת s. V הציעו אלגוריתם הרץ בסיבוכיות זמן (E,O(V + ומחשב את גרף המסלולים הקצרים ביותר מ- s, שמכיל את כל המסלולים הקצרים ביותר שמתחילים ב- s, ורק את המסלולים האלה. לדוגמה, להלן גרף G 0 וגרף המסלולים הקצרים ביותר מ- s, המסומן ב- G: 0 G 0 G 0 s a c s a c e b d e b d בסעיף זה אין צורך בהוכחת נכונות. הוכיחו: גרף מסלולים קצרים ביותר הוא בהכרח חסר מעגלים מכוונים.)DAG( בשני הסעיפים הבאים נתון גרף מכוון (E G =,V) וחסר מעגלים.)DAG( ג. הפריכו: בהכרח קיימת הרצת DFS על DAG( G כלשהו( בה כל הקשתות מסווגת כקשתות עץ או קשתות קדמיות בלבד. ניתן להפריך ע"י דוגמה. ד. הוכיחו כי אם {f(v)} v V הם זמני הנסיגה המתקבלים מהרצת DFS על G, אז לכל קשת בגרף (u, v) E מתקיים f(v).f(u) > משמע, זמני הנסיגה של,DFS המסודרים בסדר יורד, מכתיבים מיון טופולוגי. מומלץ לפתור את סעיף זה רק לאחר שלמדתם את תירגול 3, ולהשתמש בטענות המוצגות בו.
שאלה 1 נתון גרף מכוון (E G, =,V) צומת s V וצביעה של הקשתות לירוק או לצהו הצבעים נתונים על ידי הפונקציה {Y :c. E,G} נגדיר מסלול מחזורי מתחלף להיות מסלול שאין בו שתי קשתות סמוכות בצבע זהה. או באופן פורמאלי יותר, כל מסלול v 1 v 2 v k ב- G שמקיים:. i {1,2,, k 2}: c((v i, v i+1 )) c((v i+1, v i+2 )) הציעו אלגוריתם המוצא את אורכי המסלולים המחזוריים-מתחלפים הקצרים ביותר מ- s לכל צמתי הגרף )פונקציה d). c s : V R אם לא קיים מסלול לצומת כלשהו,u V יש להחזיר עבורו = (u).d c s סיבוכיות זמן נדרשת: (E.O(V + כעת נעבוד עם הגדרה מכלילה יותר: מסלול מחזורי: כל מסלול v 1 v 2 v k ב- G. i {1,2,, k 3}: c((v i, v i+1 )) = c((v i+2, v i+3 )) שמקיים: הציעו אלגוריתם המוצא את אורכי המסלולים המחזוריים הקצרים ביותר מ- s לכל צמתי הגרף. זכרו, בהעדר דרישת סיבוכיות הנכם נדרשים לספק אלגוריתם בעל הסיבוכיות הטובה ביותר שתוכלו. שאלה 2 נתונים גרף לא מכוון (E G, =,V) צומת s V ופונקציית משקל על הקשתות.w: E R נגדיר משקל של מסלול p, כסכום משקלי הקשתות שעליו: w(e). w(p) = e p בכל אחד מהסעיפים הבאים, הציעו אלגוריתם המחשב לכל v V את המשקל המינימלי של מסלול מ- s ל- v )ביחס לפונקציית המשקל באותו סעיף(. לכל צומת, נסמן את המשקל הזה ב-( v ) d. w s על האלגוריתמים לרוץ בסיבוכיות זמן (E.O(V +.w 1 : E {1,2}.w 2 : E {0,1} )בסעיף זה יש להוכיח נכונות.(
שאלה 3 נתונים גרף מכוון E) G = (V, חסר מעגלים מכוונים )DAG( וצומת.s V בסעיף זה נתונה גם פונקציית משקל על הקשתות :w. E R הציעו אלגוריתם המחשב לכל v, V את המשקל המקסימלי של מסלול מ- s ל- v )משקל של מסלול מוגדר כמו בשאלה הקודמת(. לכל צומת, נסמן את המשקל הזה ב-( v ) d. w s אם צומת v אינו ישיג מ- s, יש לקבוע עבורו = (v) d. w s על האלגוריתם לרוץ בסיבוכיות זמן (E.O(V + רמז: הגרף חסר מעגלים מכוונים, ולכן לכל v V מספיק לקבוע את הערך (v) d w s רק פעם אחת, ללא צורך בעדכונים. כך למשל ניתן לקבוע בוודאות ש- 0 = (s).d w s הכוונה נוספת: לדוגמה, התבוננו בגרף הבא: ניתן להגדיר את הגרף פורמאלית ע"י: V = [n], n N E = {(v i,v j ) i, j [n]: i < j} פונקציית משקל.w(e) = α כלשהי. למשל פונקציה קבועה w: E R חישבו: מדוע אלגוריתם שעובר על הגרף בסדר BFS מ- s לא יעבוד? מדוע אלגוריתם שעובר על הגרף בסדר DFS מ- s לא יעבוד? מומלץ שתבדקו את פעולת האלגוריתם שלכם )גם( על גרף זה. כמו כן, לוודא שהאלגוריתם שלכם עומד בסיבוכיות הנדרשת גם על גרף כזה. כדאי בסעיף זה נתון גם צומת t. V השתמשו בסעיף א' כדי להחזיר את המסלול הארוך ביותר בין s ל- t הנתון G )אורך של מסלול הוא מספר הקשתות שעליו(. שימו לב: אתם מתבקשים להחזיר את המסלול עצמו, ולא את אורכו. ניתן להשתמש בסעיף א' גם אם לא הצלחתם לפתור אותו. בגרף
שאלה 4 יהא גרף מכוון( E,G = (V, ויהיו u, v, w V שלושה צמתים בגרף. הוכיחו כי קיים מסלול פשוט מ- u ל- v העובר דרך w, אם ורק אם קיימת הרצת DFS המתחילה ב- u, וזמני הגילוי והנסיגה שלה מקיימים:.d(u) < d(w) < d(v) < f(v) < f(w) < f(u) רמז: ההוכחה לא אמורה להיות ארוכה מאוד. בהצלחה!