22 עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 2: 622, בצהריים,תא מספר 66 בקומת כניסה של בניין 3 מתרגל אחראי: אורי הוראות כלליות: כל עוד לא נאמר אחרת, כאשר הנכם מתבקשים לתאר אלגוריתם יש לספק את הבאות: תיאור מילולי של האלגוריתם 2 הוכחת נכונות ניתוח זמן ריצה אלגוריתם עם זמן ריצה אקספוננציאלי לא נחשב יעיל ולכן בדרך כלל לא יתקבל פתרון יש לכתוב רק בדף התשובות הנלווה לעבודה אם אתם נדרשים להוכיח טענה ואתם מוכיחים במקומה טענה אחרת שקולה, עליכם לנסח הטענה השנייה ולציין שהיא שקולה לטענה המקורית )יש לנמק זאת אם השקילות אינה טריוויאלית( כל מונח שאתם משתמשים בו חייב להיות מוגדר היטב: אם הוא לא הוגדר בקורס אחר או בקורס זה עליכם להגדיר אותו בעבודה במידה ואתם רוצים להסתמך על משפט שהוכח בהרצאה יש לצטט אותו במדויק בדף התשובות רק אז ניתן להשתמש בו בהוכחות אנא זכרו להגיש את העבודה סרוקה ב- submission system בנוסף לתא כן, זה חובה שאלה בשיעורים בקורס ראיתם את אלגוריתם Floyd-Warshall למציאת מסלולים קצרים ביותר בין כל זוג קודקודים בשאלה זו תתבקשו ללמוד בעצמכם את אלגוריתם ג'ונסון שנועד לאותה המטרה, אך יעיל מאלגוריתם פלויד-וורשאל עבור גרפים דלילים סעיף א: קראו את פרק 2. מהקובץ המצורף והריצו את אלגוריתם ג'ונסון על הגרף הבא: 8 a d -3 5-2 b c -6 סעיף ב: נתון גרף מכוון ) ( עם פונקציית משקל נגדיר פונקציית משקל חדשה: )} ( { ) ( ) ( הוכיחו או הפריכו: לכל שני קודקודים בגרף: מסלול הוא מסלול קל ביותר מ- המשקל אמ"מ הוא מסלול קל ביותר מ- ל- תחת פונק' המשקל ל- תחת פונק' סעיף ג: האלגוריתם של ג'ונסון מתחיל מגרף מכוון ) ( ופונקציית משקל ובונה גרף ע"י הוספת קודקוד חדש והוספת קשתות ממנו לשאר הקודקודים הוכיחו את הפריכו את הטענה הבאה: אלגוריתם ג'ונסון נשאר נכון גם אם האלגוריתם יבחר את s כאחד הקודקודים בגרף המקורי ויריץ את אלגוריתם בלמן פורד ממנו סעיף ד: הוכיחו או הפריכו: אם קשיר היטב אזי אלג' ג'ונסון נשאר נכון גם אם האלגוריתם יבחר את s כאחד הקוד' בגרף המקורי ויריץ את אלגוריתם בלמן פורד ממנו
שאלה 2 נתון גרף מכוון ) ( עם פונקציית משקל נתונה קבוצה לכל זוג קודקודים נגדיר את ) ( להיות משקל מסלול קל ביותר מקודקוד דרך צמתי ביניים מ- בלבד אם אין מסלול שכזה, נגדיר ) ( שעובר אל סעיף א: נגדיר את הבעיה הבאה: בעיית משקל מסלול קל ביותר מקודקוד מקור עם צמתי ביניים מסוימים. קלט: גרף מכוון ) (, פונקציית משקל, תת קבוצה של הקודקודים, וקודקוד מקור יש למצוא: ) ( לכל } {. תארו אלגוריתם יעיל לבעיה על האלגוריתם להתייחס למקרה בו יש בגרף מעגל שלילי הנגיש מ- והמוכל ב הוכיחו את נכונות האלגוריתם ונתחו את זמן ריצתו סעיף ב: נגדיר את הבעיה הבאה: בעיית משקל מסלול קל ביותר עם צמתי ביניים מסוימים. קלט: גרף מכוון ) (, פונקציית משקל, ותת קבוצה של הקודקודים יש למצוא: ) ( לכל. תארו אלגוריתם יעיל לבעיה ונתחו את זמן הריצה שלו אין צורך להוכיח את נכונות האלגוריתם ניתן להניח כי בגרף הקלט אין מעגלים שליליים אל נתון גרף מכוון ) ( לכל זוג קודקודים בקשתות הוא לכל היותר עם פונקציית משקל, ונתון מספר שלם נגדיר את ) ( להיות משקל מסלול קל ביותר מ אם אין מסלול שכזה, נגדיר ) ( שאורכו נגדיר את הבעיה הבאה: בעיית משקל מסלול קל ביותר מקודקוד מקור באורך חסום. קלט: גרף מכוון ) (, פונקציית משקל, מספר שלם, וקודקוד מקור יש למצוא: ) ( לכל. סעיף ג: סטודנט בקורס שהתבקש לתאר אלגוריתם יעיל לבעיה, טוען שעל ידי שינוי בודד באלגוריתם בלמן-פורד ניתן לעמוד במשימה: לבצע את הלולאה החיצונית, רק פעמים ולא הראו דוגמא נגדית לאלגוריתם שהציע הסטודנט והסבירו אותה סעיף ד: תארו אלגוריתם יעיל לבעיית משקל מסלול קל ביותר מקודקוד מקור באורך חסום ונתחו את זמן הריצה שלו אין צורך להוכיח את נכונות האלגוריתם 2
Kosaraju שאלה 3 מאיה ומיקה הן שתי סטודנטיות בקורס שהשכימו קום, הגיעו לשיעור בו הוצג אלגוריתם Sharir ויצאו ממנו נסערות מיקה טוענת שניתן לפשט את האלגוריתם באמצעות שני השינויים הבאים: אין צורך להפוך את כיוון הקשתות כלל )לחשב G( transpose 2 את ה DFS השני יש להריץ על הגרף המקורי אך בלולאה המרכזית יש לעבור על הקדקודים בסדר עולה של זמני הסיום שהתקבלו בהרצת ה- DFS הראשונה מאיה טוענת כי עבור גרפים חסרי מעגלים האלגוריתם המחודש של מיקה באמת עובד אך הוא אינו נכון עבור גרפים כללים עזרו לפתור את המחלוקת בין מאיה ומיקה: אם מיקה צודקת, הוכיחו את האלגוריתם המחודש עבור גרפים כללים אם מאיה צודקת, הוכיחו את האלגוריתם המחודש עבור גרפים חסרי מעגלים ובנוסף, הראו דוגמא נגדית לטענה שהאלגוריתם עובד עבור גרפים כללים והסבירו אותה בשני המקרים, ניתן להיעזר בטענות מההוכחה של האלגוריתם המקורי שניתנו בכיתה שאלה 4 ל- 4 סוגי קשתות: מסווגת את הקשתות ב- ( על גרף מכוון ) בכיתה ראינו שריצת קשתות עץ, קשתות אחוריות, קשתות קדמיות וקשתות חוצות על גרפים לא מכוונים ושימושיה השאלה תעסוק בריצת עובד גם עבור גרפים לא מכוונים, אך כמובן שניתן לסרוק קשת רק מכיוון שימו לב שאלגוריתם ה- אחד סעיף א: הוכיחו שעבור כל גרף לא מכוון ) ( סוגים בלבד: קשתות עץ וקשתות אחוריות, מתקיים שכל ריצת מסווגת את הקשתות ב- ל- 2 נשים לב שהגרף איננו מכוון, אך ריצת על משרה כיוונים על הקשתות באופן פורמלי, לאחר הרצת על נוכל להגדיר את הגרף המכוון הבא: ) (, כאשר ) ( אם ) ( ואחד מ- 2 התנאים הבאים מתקיימים: ) ( היא קשת עץ ו- ] [ ] [ )כלומר מכוונים את הקשת מהאב לבן( ) ( היא קשת אחורית ו- ] [ ] [ )כלומר מכוונים את הקשת מהצומת לאב קדמון שלו( ( ) { [ ] בהינתן גרף וריצת עליו, נגדיר: קיים מסלול מ ל ב } המכיל לכל היותר קשת אחורית אחת
לדוגמא: הגרף הבא מתאר ריצת אחוריות באדום שהתחילה בקודקוד קשתות עץ מסומנות בירוק וקשתות r d()=, L()= d()=2, x d()=3, u d()=4, d()=5, d()=6, L()=3 d()=7, L()=7 ( כך שיקבל גרף לא מכוון וקשיר ) סעיף ב: שנו את אלגוריתם. ( על האלגוריתם המוצע לרוץ בזמן ) קודקוד אין צורך להוכיח את נכונות האלגוריתם ויחזיר גם את ) ( לכל ( איננו תיקרא גשר אם הגרף ({ { גרף לא מכוון וקשיר קשת ( הגדרה: יהי ) פוגעת בקשירותו( קשיר )כלומר גשר היא קשת שהשמטתה מהגרף סעיף ג: לכל הצמתים כולל חישוב ערכי גרף לא מכוון וקשיר שבוצע עליו ( יהי ) ( אם ורק אם ) היא גשר ב- ] [ ( שעבורה מתקיים ] [ הוכיחו את הטענה הבאה: קשת ) ) ( היא קשת עץ וגם מתקיים ) ( אם { ייקראו דו-גשר של } גרף לא מכוון וקשיר זוג קשתות ( הגדרה: יהי ) ( קשיר הגרף }) { ( קשיר הגרף }) { ( איננו קשיר { הגרף }), אך השמטת שתיהן פוגעת )כלומר, אלו זוג קשתות כך שהשמטת כל אחת מהן אינה פוגעת בקשירות ( בקשירות לדוגמא: כל 2 קשתות בגרף הבא מהוות דו-גשר של הגרף v u y x 4
סעיף ד: יהי ) ( גרף לא מכוון וקשיר הוכיחו את הטענה הבאה: אם } { הוא דו-גשר של, אז בכל ריצת על לפחות אחת משתי הקשתות היא קשת עץ, המקבל גרף לא מכוון וקשיר ומחזיר את כל הדו-גשרים בגרף ( סעיף ה: תארו אלג' בזמן ריצה ) נתחו את זמן ריצת האלגוריתם אין צורך להוכיח את נכונות האלגוריתם שאלה 5 בשיעורים בקורס ראיתם את ההוכחה לטענה שאם אלגוריתם פורד-פולקרסון עוצר, אז הוא מחזיר זרימת מקסימום שאלה זו עוסקת בריצת אלגוריתם פורד-פולקרסון שלא עוצרת )בגרף בו קיימים משקולות אי-רציונלים( נגדיר את רשת הזרימה באופן הבא: הגרף מוגדר באיור הבא: כאשר פונקציית הקיבול מוגדרת באופן הבא: ( ) ( ) ( ) o o קיבול ששת הקשתות האחרות הוא M כאשר, )שימו לב שהקבוע נבחר כדי שיתקיים ( נגדיר את המסלולים הבאים: חמשת הצעדים הראשונים של הרצת פורד-פולקרסון מופיעים בטבלה הבאה )הטבלה אינה מכילה את הזרימה או את הקיבול השיורי של הצלעות עם קיבול ברשת המקורית( קיבול שיורי צעד מסלול שיפור תוספת זרימה 2 4..
9 סעיף א: מהו חתך מינימום ברשת הזרימה )המקורית(? מה גודלו? סעיף ב: מלאו את ארבעת השלבים הבאים המתארים את המשך הריצה של האלגוריתם לפי המסלולים המופיעים בטבלה הבאה: 6 3 6 מקבצי שיפור? סעיף ג: נגדיר מקבץ שיפור כשיפור לפי ארבעת המסלולים מהם הקיבולים השיורים של הקשתות לאחר מהי תוספת הזרימה במקבץ ה- -ית? הוכיחו באינדוקציה! מקבצים, גודל הזרימה מתכנס ל סעיף ד: הוכיחו כי לאחר ביצוע הסיקו מכך, שהאלגוריתם לא עוצר לעולם וגודל הזרימה לא מתכנס לגודל זרימת מקסימום סעיף ה: הריצו את אלגוריתם אדמונס-קארפ על הרשת, ומלאו את הטבלה הנתונה בדפי התשובות 6