2 תכנון אלגוריתמים סיכום קורס מפי רן טייג ומיכל שמש סמסטר ב', תשע"ה אוניברסיטת בן-גוריון בנגב מס' קורס סוכם ע"י: אסף של וש מקרא צבעים: כחול

מסמכים קשורים
תרגול מס' 7 – חזרה על MST ואלגוריתם Dijkstra

הטכניון מכון טכנולוגי לישראל אלגוריתמים 1 )443432( סמסטר חורף הפקולטה למדעי המחשב תרגול 9 מסלולים קלים ביותר תרגיל APSP - 1 עד כה דנו באלגור

Microsoft Word - tutorial Dynamic Programming _Jun_-05.doc

תכנות דינמי פרק 6, סעיפים 1-6, ב- Kleinberg/Tardos סכום חלקי מרחק עריכה הרעיון: במקום להרחיב פתרון חלקי יחיד בכל צעד, נרחיב כמה פתרונות אפשריים וניקח

תכנון אלגוריתמים עבודת בית 4: תכנון אלגוריתמים תאריך הגשה: 02: , בצהריים,תא מספר 66 בקומת כניסה של בניין 003 מתרגל אחראי: אורי 0

Algorithms Tirgul 1

Microsoft Word - ExamA_Final_Solution.docx

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

מבנים בדידים וקומבינטוריקה סמסטר אביב תשע"ט מספרי רמזי תרגול 11 הגדרה: (t R = R(s, הוא המספר הטבעי הקטן ביותר כך שבכל צביעה של צלעות הגרף וכחול(, קיים

תכנון אלגוריתמים, אביב 1021, תרגול מס' 4 תכנון דינאמי תכנון דינאמי בתרגול זה נדון בבעיית הכפלת סדרת מטריצות (16.1.(CLR ראשית נראה דוגמא: דוגמא: תהינה

פקולטה: מחלקה: שם הקורס: קוד הקורס: מדעי הטבע מדעי המחשב ומתמטיקה מתמטיקה בדידה תאריך בחינה: _ 07/07/2015 משך הבחינה: 3 שעות סמ' _ב' מועד

שיעור 1

מבוא לתכנות ב- JAVA תרגול 7

תורת החישוביות תרגול הכנה לוגיקה ותורת הקבוצות מה יש כאן? בקורס תורת החישוביות נניח ידע בסיסי בתורת הקבוצות ובלוגיקה, והכרות עם מושגים בסיסיים כמו א"ב

Microsoft Word - SDAROT 806 PITRONOT.doc

מועד: א בחינה סופית במתמטיקה דיסקרטית משך הבחינה: 2 1 שעות מרצה: פרופ' תאופיק מנסור תאריך: סמסטר: א תשע"ח m 2 הוראות לנבחן: )1( הבחינה מו

תרגיל 9 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד 1. תהי L השפה בעלת סימן פונקצייה דו מקומי G, סימן פונקציה חד מקומי T, סימן יחס תלת מקומי.c, d וקבועים L

מקביליות

תאריך הבחינה 30

Untitled

מקביליות

Microsoft Word - Questions Booklet Spring 2009

אוניברסיטת בן-גוריון המחלקה למדעי המחשב בוחן במבנים בדידים וקומבינטוריקה פרופ' מתיא כ"ץ, ד"ר עופר נימן, ד"ר סטוארט סמית, ד"ר נתן רובין, גב'

אוניברסיטת חיפה החוג למדעי המחשב מבוא למדעי המחשב מועד א' סמסטר ב', תשע"ג, משך המבחן: שעתיים וחצי חומר עזר: אסור הנחיות: וודאו כי יש בידיכם

אנליזה מתקדמת

מספר זהות: סמסטר ב' מועד א' תאריך: 11102/4// שעה: 9:22 משך הבחינה: 3 שעות חומר עזר: אין מותר השימוש במחשבון פשוט בחינה בקורס: מבני נתונים מרצה: הדר בי

עב 001 ינואר 12 מועד חורף פתרונות עפר

שעור 6

אוניברסיטת בן גוריון בנגב תאריך המבחן: שם המרצה: מר אלכסנדר שקולניק, בשפת JAVA מבחן ב: מבוא לתכנות מס' הקורס : מיועד לתלמידי : הנד

Microsoft Word - עבודת פסח לכיתה י 5 יחל.doc

פתרונות לדף מס' 5

אוניברסיטת חיפה החוג למדעי המחשב.5.6 מבוא למדעי המחשב סמסטר א' תשע"ז בחינה סופית מועד א', מרצה: שולי וינטנר מתרגלים: סמאח אידריס, ראמי עילבו

<4D F736F F D20F4FAF8E5EF20EEE5F2E320E020F1EEF1E8F820E120FAF9F2E3>

מבחן 7002 פרטים כלליים מועד הבחינה: בכל זמן מספר השאלון: 1 משך הבחינה: 3 שעות חומר עזר בשימוש: הכל )ספרים ומחברות( המלצות: קרא המלצות לפני הבחינה ובדי

מבוא למדעי המחשב

מבוא לאנליזה נומרית na191 Assignment 2 solution - Finding Roots of Nonlinear Equations y cos(x) שאלה 1 היכן נחתכים הגרפים של? y x 3 1 ושל ממש פתרונות

<4D F736F F D20FAF8E2E5EC20E0ECE2E1F8E420EEF2E5F8E D F9E0ECE5FA2E646F63>

תשובות מלאות לבחינת הבגרות במתמטיקה מועד ג' תשע"ד, מיום 0/8/0610 שאלונים: 313, מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן שאלה מספר

מבחן סוף סמסטר מועד ב 28/10/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, גדי אלכסנדרוביץ הוראות: א. בטופס המבחן 6 עמודים (כולל דף זה) ו

מטלת מנחה (ממ"ן) 11 הקורס: חשבון אינפיניטסימלי II חומר הלימוד למטלה: יחידות 2,1 4 מספר השאלות: 7 משקל המטלה: נקודות סמסטר: ב 2007 מו

תרגול 1

PRESENTATION NAME

תוכן העניינים

חשבון אינפיניטסימלי מתקדם 1

Tutorial 11

תוכן העניינים

Slide 1

הגנה - שקפי תרגול

Data Structure Assignment no.3 תאריך הגשה: p.m. 11/09/16, 23:59 את העבודה יש להגיש בזוגות במערכת ההגשות.submission system על העבודה להיות מוגשות כקובץ

Microsoft Word - Sol_Moedb10-1-2,4

. שאלה 1: ה אי x] T : R 4[ x] R 4[ אופרטור ליניארי מוגדר על-ידי T( ax bx cx d) bx ax cx c )13 נק'( א( מצאו את הערכים העצמיים, המרחבים העצמיים

מבוא למדעי המחשב - חובלים

ע 003 מרץ 10 מועד מיוחד פתרונות עפר

פתרון מוצע לבחינת מה"ט ב_שפת c מועד ב אביב תשע"ט, אפריל 2019 מחברת: גב' זהבה לביא, מכללת אורט רחובות שאלה מספר 1 מוגדרת מחרוזת המורכבת מהספרות 0 עד 9.

Microsoft Word B

אוניברסיטת בן גוריון בנגב תאריך המבחן: שקולניק אלכסנדר שם המרצה: מר בשפת JAVA מבוא לתכנות מבחן ב: מס' הקורס : הנדסת תעשיה וניהול מ

Microsoft Word - hedva 806-pitronot-2011.doc

מבוא ללוגיקה ולתורת הקבוצות

Microsoft Word - c_SimA_MoedB2005.doc

פתרון 2000 א. טבלת מעקב אחר ביצוע האלגוריתם הנתון עבור הערכים : פלט num = 37, sif = 7 r האם ספרת האחדות של sif שווה ל- num num 37 sif 7 שורה (1)-(2) (

הוספת קישור לאתר אינטרנט תוכן ממשק בדיקת מטלות...3 איחוד אתרי קורסים...5 סל מחזור... 7 חידושים בפעילויות...8 תצורת קורס: כפתורים... 9 פורומים...10 שיפ

מבחן סוף סמסטר מועד א 15/02/08 מרצה אחראית: דר שירלי הלוי גינסברג מתרגלים: גלעד קותיאל, דניאל גנקין הוראות: א. בטופס המבחן 7 עמודים ו 4 דפי נוסחאות. ב

שיטות הסתברותיות ואלגוריתמים חוברת התרגילים 25 באוקטובר 2015 חוברת זו מכילה תרגילים נבחרים מהיסטוריית הקורס ופתרונם. בשעות האימון יוצג מבחר מהתרגילים

Microsoft Word - solutions.doc

Microsoft Word - vaidya.doc

מבוא לתכנות ב- JAVA תרגול 11

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

<4D F736F F D20F4E9E6E9F7E420FAF8E2E5ED20ECF2E1F8E9FA20E4E2E4E420F1E5F4E9FA20496C616E2E646F63>

áñéñ åîéîã (ñéåí)

מהוא לתכנות ב- JAVA מעבדה 3

הגשה תוך שבוע בשעת התרגול

Slide 1

עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה אפריל 5105 קשה בלימודים, קל במבחנים, קל בחיים עבודה במתמטיקה לכיתה י' 5 יח"ל פסח תשע"ה יש לפתור את כל השאלות

<4D F736F F D20EEF9E5E5E0E5FA20E3E9F4F8F0F6E9E0ECE9E5FA2E646F63>

מקומות גיאומטריים השתלמות קיץ הקדמה: נושא המקומות הגיאומטריים הינו מרכזי בתכנית הלימוד ל- 5 יח"ל. פרק זה מאגד בתוכו את כל המרכיבים של הגיאומטרי

פייתון

Disclaimer מסמך זה הינו סיכום און-ליין של השיעור ולא עבר עריכה כלל. מצאת טעות? שלח/י לי מייל ואתקן: 07/05/2009 קורס: מערכות ה

PowerPoint Presentation

מבוא למדעי המחשב

אוניברסיטת חיפה החוג למדעי המחשב מרצה: שולי וינטנר מתרגלים: נעמה טוויטו, מחמוד שריף מבוא למדעי המחשב סמסטר א' תשע"ב בחינת סיום, מועד א', הנחי

תיק משימטיקה מגרף הנגזרת לגרף הפונקציה להנגשה פרטנית נא לפנות: כל הזכויות שמורות

תרגיל בית מספר 1#

Microsoft PowerPoint - T-10.ppt [Compatibility Mode]

תרגול 1

תוכן העניינים: פרק צמצומים ומימושים של פונקציות בוליאניות... 2 צמצומים של פונקציות באמצעות מפת קרנו:...2 שאלות:... 2 תשובות סופיות:... 4 צמצום

HaredimZ2.indb

Microsoft Word - בעיות הסתברות 1.doc

הגשה תוך שבוע בשעת התרגול

מספר מחברת: עמוד 1 מתוך 11 ת"ז: תשע"א מועד ב סמסטר א' תאריך: 00:11 שעה: 0 שעות הבחינה: משך כל חומר עזר אסור בשימוש בחינה בקורס: מבוא למדעי ה

סט נובמבר 08 מועד מיוחד - פתרונות עפר.doc

מבוא למדעי המחשב

Slide 1

תרגיל בית מספר 1#

מצגת של PowerPoint

א. נציג את השרטוט המתאים ונסביר בהמשך: שטח המשולש גדול פי משטח המשולש בגרות סט יולי 09 מועד קיץ ב שאלון CAE, CEB כאשר לשני המשולשים גובה משותף

שבוע 4 סינטקס של HACK ASSEMBLY ניתן להשתמש בשלושה אוגרים בלבד:,A,D,M כולם בעלי 16 ביטים. M אינו אוגר ישיר- הוא מסמן את האוגר של ה RAM שאנחנו מצביעים ע

סדנת תכנות ב C/C++

<4D F736F F D20F4F2E5ECE5FA20EEE5EEF6E0E5FA20312E646F63>

PowerPoint Presentation

תמליל:

2 תכנון אלגוריתמים סיכום קורס מפי רן טייג ומיכל שמש סמסטר ב', תשע"ה אוניברסיטת בן-גוריון בנגב מס' קורס 202-1-2041 סוכם ע"י: אסף של וש מקרא צבעים: כחול הגדרות ומונחים שמופיעים לראשונה; אדום משפט, למה, טענה; ירוק מסקנה, הערה, אבחנה השתדלתי להיות נאמן למקור, מדי פעם אני מוסיף הערות והארות משלי. אגודת הסטודנטים, בן-גוריון

3 תוכן עניינים הרצאה מס'...4 1 2 חלק ראשון טכניקות אלגוריתמיות...4 מה זה לתכנן אלגוריתם?... 4 שיטת העבודה גרסת...4 Top-Down טכניקה מס' 1 רדוקציות... 5 הרצאה מס'...7 2 הרצאה מס'... 3 10 טכניקה מס' 2 אלגוריתמים חמדניים... 10 מבנה כללי של אלגוריתם חמדן... 10 סכמת ההוכחה לאלגוריתם חמדן )טיעון ההחלפה(... 11 הרצאה מס'... 4 13 עצים פורשים מינימליים Trees...Minimum Spanning 14 הרצאה מס'... 5 15 שלד לאלגוריתם חמדן לבעיית...MST 15 אלגוריתם... Kruskal 15 הרצאה מס'... 6 18 אלגוריתם...Prim 18 טכניקה מס' 3 תכנון דינמי 19... )Dynamic Programming( בעיית הפעילויות הממושקלות... 19 הרצאה מס'... 7 21 הרצאה מס'... 8 24 בעיית הגנב Problem( )Knapsack... 25 הרצאה מס'... 9 29 בעיית המסלול הקל ביותר ממקור יחיד, בגרף מכוון עם משקלים חיוביים... 29 הרצאה מס'... 10 31 חלק שני בעיות קלאסיות במדעי-המחשב... 31 פרק 1 מסלולים קלים בגרפים... 31 אינטואיציה לאלגוריתמיקה עבור בעיה זו... 31 בסיס טכני לאלגוריתמים בפרק זה... 31 טענה נשמרת לאלגוריתם מבוסס...Relax 32 אלגוריתם...Dijkstra 32 הרצאה מס'... 11 34 אלגוריתם גנרי )ממשק אבסטרקטי( לבעיית מסלול קל ביותר ממקור יחיד... 34 הוכחה נוספת לאלגוריתם Dijkstra המבוססת על האלגוריתם הגנרי... 35 הרצאה מס'... 12 36 הרצאה מס'... 13 38 אלגוריתם...Bellman-Ford 38 בעיית מסלול קל ביותר בין כל הזוגות... 39 הרצאה מס'... 14 41 אגודת הסטודנטים, בן גוריון

4 אלגוריתם סריקה לעומק Search... Depth First 41 שימושים מרכזיים של... DFS 42 הרצאה מס'... 15 44 פרק 2 אלגוריתמים אקראיים... 44 הרצאה מס'... 16 46 בעיית התאמות מחרוזות matching(...)string 46 הרצאה מס'... 17 49 זרימה ברשתות )זרימה בשלמים(... 49 בעיית זרימת מקסימום ברשת... 51 אלגוריתם )1960( Ford-Fulkerson... 52 הרצאה מס'... 18 53 הרצאה מס'... 19 58 אלגוריתם דיניץ... 59 הרצאה מס'... 20 62 הרצאה מס'... 21 65 חלק שלישי - מבוא לסיבוכיות... 65 המחלקות... P, NP 65 דוגמה לבעיה ב- NP, שחושבים שאינה ב- P... 67 הרצאה מס'... 22 69 רדוקציות פולינומיות, NP -שלמ ות... 71 תכונה של רדוקציות טרנזיטיביות... 73 הרצאה מס'... 23 74 בעיית הספיקות... SAT Boolean satisfactory problem 74 הרצאה מס'... 24 79 מבוא למשפט... Cook-Levin 79 הרצאה מס'... 25 82 הוכחת משפט...Cook-Levin 82 הרצאה מס'... 26 85 בעיית... Subset sum 86 בקריאת המסמך כקובץ PDF במחשב, הנושאים בתוכן העניינים אינטראקטיביים, ולחיצה עליהם תוביל ישירות לעמוד הרלוונטי בסיכום. הערה: בעיסוק בגרפים, השתמשתי לחילופין במושגים "קודקוד" ו"צומת", וגם ב"צלע" ו"קשת". זה לא משנה שום דבר, ובד"כ נובע ממה שהמרצה אמר/ה באותו רגע. 3 אגודת הסטודנטים, בן-גוריון

ב t 5 מרצה רן טייג, עד שמיכל שמש תחזור מחופשת לידה באמצע הסמסטר. שעות קבלה ימי ג' 12:15-14:00, בניין 37 חדר 207. מייל: taig@cs.bgu.ac.il אתר הקורס: www.cs.bgu.ac.il/~algo152 מייל הקורס: algo152@cs.bgu.ac.il ציון הקורס: מבחן סופי כ- 65%, בוחן אמצע כ- 20%, עבודות הגשה 15%. יש נוסחה באתר שמשקללת את הבוחן והמבחן בהתאם לציונים. קיימת חומת מעבר של המבחן. יש 6 עבודות הגשה. הציון ניתן כממוצע על חמש העבודות הטובות, ולכן יש חובת הגשה של לפחות 5 עבודות. הרצאה מס' 1 8/3/2015 ניתן לחלק את הקורס לשלושה חלקים:.3 טכניקות אלגוריתמיות בעיות קלאסיות במדעי המחשב ואלגוריתמים לפתרונן מבוא לסיבוכיות: מהי בעיה קשה? מהי בעיה קלה? איך מוכיחים שבעיה היא קשה? חלק ראשון טכניקות אלגוריתמיות מה זה לתכנן אלגוריתם? מהי בעיה? זוהי שאלה מסוימת קבועה שנשאלת על קלט משתנה. את הקלט המשתנה נכנה מופע.)instance( אלגוריתם הינו סכימת פעולות, כאשר הפעולה הראשונה היא קבלת הקלט והפעולה האחרונה היא החזרת פתרון נכון לשאלה לגבי הקלט, או הודעה "אין פתרון". הדרך היחידה להבין אם אלגוריתם נכון היא להוכיח את נכונותו. בקורס הזה נתעניין בפיתוח אלגוריתמים יעילים. כאן עולה השאלה מה זה יעיל? הגדרה: )גסה( אלגוריתם יעיל הינו אלגוריתם שזמן ריצתו לא עולה על פולינום נמוך בגודל הקלט -.O(1), O(log n), O(n), O(n log n), O(n c ) הערה: מבחינת הקורס אם לא הוגדר אחרת, אלגוריתם שאינו עובד בזמן ריצה כנ"ל אינו אלגוריתם יעיל, ואפשר להתייחס אליו כאלגוריתם לא נכון. שיטת העבודה גרסת Top-Down בהינתן בעיה: נייצר אלגוריתם מופשט, כלומר ללא פרטי מימוש, לפתרון הבעיה נוכיח את האלגוריתם בצורה מופשטת: רשימת הטענות, טענות העזר והאבחנות הנדרשות, והוכחת הטענה העיקרית )נכונות האלגוריתם( לפני הוכחת טענות העזר הוכחת טענות העזר ניתוח זמן ריצה של האלגוריתם, כולל פרטי מימוש במידת הצורך.3.4 דוגמה: בעיית המסלול הקצר ביותר בגרף מכוון. מופע: גרף מכוון.G = V, E, s, t V השאלה: מהו המרחק הקצר ביותר בין s ל- -G. אלגוריתם לבעיה זו נדרש לחשב את המרחק הקצר ביותר, "אין מסלול". ולהחזירו. במידה ו- t לא נגיש מ- s נדרש להחזיר 4 אגודת הסטודנטים, בן גוריון

ב t ב t 6 טכניקה מס' 1 רדוקציות אינטואיציה נפתור את בעיה A באמצעות אלגוריתם )קופסה שחורה( לבעיה B. מתי? כאשר בהינתן בעיה A, ניתן לחשוב במהירות על בעיה B שמזכירה באופייה את בעיה A. מבנה כללי של אלגוריתם מבוסס רדוקציה לבעיה A באמצעות בעיה B: A x אלגוריתם לפתרון בעיה B: קלט הבעיה x g(b f(x) = A(x) פתרון נכון לבעיה B עבור המופע f(x) B B f(x) f ממיר קלט f(x) קלט חוקי ממיר פלט g קלט חוקי ל- תצורת הפלט B זמן ריצה פתרון נכון לבעיה A עבור המופע x A(x) הערות: ייתכן שלכל היותר אחד מהממירים יהיה פונקציית הזהות. תיתכן רדוקציה בה נפעיל את הקופסה השחורה יותר מפעם אחת. דוגמה לטכניקה: נניח שידוע לנו אלגוריתם B שיודע לפתור את בעיית המסלול הקצר ביותר עבור גרפים מכוונים. אנו מקבלים דרישה לפתח אלגוריתם לאותה הבעיה עבור גרפים לא-מכוונים. נרצה לפתור את הבעיה באמצעות אלגוריתם מבוסס רדוקציה לבעיה B. ממיר הקלט: הקלט גרף לא מכוון.G = V, E, s, t V מימוש לכל קשת,u) (v E נייצר שתי קשתות מכוונות (u,u).,(v,v) את קבוצת הקשתות החדשות נסמן.E אזי הגרף E G = V, הינו פלט הממיר. ממיר הפלט: יהיה,Id אין צורך בממיר פלט. הוכחת נכונות טענה עיקרית: האלגוריתם מחזיר את אורך המסלול הקצר ביותר מ- s ל- t ב- G או "אין מסלול" אם אין כזה..k באורך G - טענת עזר: קיים מסלול בין s ל- -G באורך k אם"ם קיים מסלול בין s ל- הוכחת הטענה העיקרית: יהא p מסלול קצר ביותר בין s ל- ב t -G שהינו באורך k. מטענת העזר קיים מסלול באורך זה בין s ל- t גם ב- G. נניח בשלילה שזהו אינו המסלול הקצר ביותר בין s ל- ב t - G, כלומר קיים מסלול p באורך k < k בין s ל- t ב- G, אך לפי טענת העזר קיים מסלול באורך k < k ב- G, בסתירה להנחה ש- k הוא אורכו של המסלול הקצר ביותר. מכאן שלפי נכונות הקופסה השחורה, היא תחזיר את האורך k, וכיוון שממיר הפלט לא משנה את תשובת הקופסה השחורה, גם האלגוריתם הנידון יחזיר k, כנדרש. נשים לב שאם אין מסלול 5 אגודת הסטודנטים, בן-גוריון

ב t 7 בין s ל- ב t -G, מטענת העזר אין מסלול בין s ל- ב- G, ומכאן שהאלגוריתם יחזיר "אין מסלול". הוכחת טענת העזר: בתרגול. - G, ולכן מנכונות הקופסה השחורה יוחזר "אין מסלול" ניתוח זמן ריצה ממיר הקלט שכפול של כל קשת ולכן.O( E ) קופסה שחורה זהו BFS ולכן ( E.O( V + בסה"כ זמן ריצה של ( E.O( V + דוגמה: בעיית תתי-המחרוזות. מופע: W n - מחרוזות באורך 3, בהנחה המקלה שהן שונות זו מזו. קלט: rio}.w = {uri, gur, ngu, ben, ion, eng, פלט: מחרוזת T באורך + 2 n אשר מכילה כל אחת מתתי-המחרוזות בקלט w בדיוק פעם אחת. עצה: התחילו לחשוב על אלגוריתם נאיבי לבעיה. במקרה שלנו, מעבר על כל הפרמוטציות של n המחרוזות ב- w. בהינתן פרמוטציה, בדוק אם כל 2 -סיפא של מחרוזת היא 2 -רישא של המחרוזת הבאה. אם נכון לכל המחרוזות, החזר מחרוזת באורך + 2 n הבנויה בסדר זה. זמן הריצה: ) n!n 2)O לפי קירוב סטירלינג. מידול הבעיה: נחשב איזה מזוגות המחרוזות הינם זוגות חוקיים, כלומר שיכולים להוות חלק מפתרון חוקי. נמדל את המידע בצורה גרפית באופן הבא: נבנה גרף E G. =,V כל מחרוזת w i W תיוצג ע"י קודקוד יחיד. נגדיר: {ה 2 סיפא של w i שווה ל 2 רישא של.E = { w i, w j : w j אנו מעוניינים להפעיל אלגוריתם על הגרף שיענה על השאלה: האם ניתן לייצר מחרוזת )מסלול( בה כל מחרוזת w i מופיעה בדיוק פעם אחת? השאלה הגרפית הזו נקראת "בעיית מסלול המילטון". אלגוריתם מבוסס רדוקציה לבדיקת בעיית תתי-המחרוזות באמצעות בעיית מסלול המילטון: קלט: W. בנה את הגרף G המתואר לעיל. הפעל אלגוריתם לבדיקה אם קיים מסלול המילטון ב- G. אם הוחזר "אין מסלול" החזר "אין מחרוזת", אחרת המר את המסלול למחרוזת T..3 6 אגודת הסטודנטים, בן גוריון

8 הרצאה מס' 2 10/3/2015 המשך הדוגמה מסוף ההרצאה הקודמת טענה עיקרית: האלגוריתם מחזיר "כן" אם"ם קיימת מחרוזת חוקית T עבור W. טענת עזר: קיימת מחרוזת חוקית T עבור W אם"ם קיים מסלול המילטון ב- G. הוכחת הטענה העיקרית: ( ) נניח כי האלגוריתם מחזיר "כן", ולכן ממבנה האלגוריתם ונכונות הקופסה השחורה קיים מסלול המילטון ב- G, ומטענת העזר קיימת מחרוזת חוקית T עבור W. ( ) נניח כי קיימת מחרוזת חוקית T עבור W, ולכן מטענת העזר קיים מסלול המילטון ב- G, ולכן האלגוריתם מחזיר "כן" מנכונות הקופסה השחורה ומבנה האלגוריתם. הוכחת טענת העזר: ( ) נניח כי קיימת מחרוזת חוקית T עבור W. נסמן ב- x 1 את שלושת התווים הראשונים של T, ב- x 2 את שלושת התווים שמתחילים בתו השני של T,..., ב- x n את שלושת התווים האחרונים של T )נזכור כי = T + 2.)n נטען כי n p = x 1,, x מסלול המילטון ב- G. נשים לב שכיוון ש- T חוקית עבור,W כל x i מייצג מחרוזת w i ב- W, ולכן מבניית G מהווה קודקוד ב- G. מחוקיות T, חייבת להיות חפיפה בין ה- 2 -סיפא של x i ל- 2 -רישא של 1+i x, ומכאן קיימת צלע בין כל שני קודקודים עוקבים, ולכן p מסלול ב- G. מחוקיות T כל מחרוזת ב- W מופיעה ב- T בדיוק פעם אחת, ולכן p עובר בכל קודקוד בדיוק פעם אחת. מההנחה על הקלט שכל המחרוזות ב- W שונות זו מזו, נובע שכל הקודקודים ב- p שונים זה מזה, ולכן p מסלול המילטון ב- G. ( ) נניח כי קיים מסלול המילטון n p = x 1,, x ב- G. מבניית G כל קודקוד מייצג מחרוזת ב- W, ולכן נוכל לסמן כי.x 1 = abc 1 x 2 = bc 1 c 2 ; x 3 = c 1 c 2 c 3 ; ; x i = c i 2 c i 1 c i ; ; x n = c n 2 x n 1 c n p מסלול, ולכן קיימת צלע בין כל שני קודקודים עוקבים, ומהגדרת G חייב להתקיים קשר בין המחרוזות המיוצגות ע"י הקודקודים הנ"ל. נבנה: T. = abc 1 c n מכיוון ש- p מסלול המילטון, כל קודקוד מופיע בו פעם אחת, ולכן כל תת-מחרוזת w i W מיוצגת ב- T בדיוק פעם אחת. מהגדרת המחרוזות הקשר ביניהן חוקי, ו- T מחרוזת באורך + 2 n, ומכך T מחרוזת חוקית עבור W. ניתוח זמן הריצה שלב הבדיקה - ) 2 O(n שלב המידול מעבר על W ועל תוצאות שלב הבדיקה ובניית G בהתאם - ) 2 O(n זמן ריצת הקופסה השחורה בעיית קיום מסלול המילטון היא בעיה NP -קשה! מסקנה: בעיית מציאת מסלול המילטון בעיית תתי-המחרוזות. תזכורת: בעיית מסלול אוילר, בהתייחס לדוגמה של בעיית תתי-המחרוזות. קלט: גרף מכוון G. פלט: האם קיים מסלול ב- G שעובר בכל קשת בגרף בדיוק פעם אחת. נמדל גרפית את המידע: נבנה גרף מכוון E G = V, כך ש- {לכל 2 רישא ו 2 סיפא של מחרוזת ב w ללא חזרות {v: V = {קיימת ב w מחרוזת שה 2 רישא שלה שווה ל u וה 2 סיפא שווה ל v E = {(u, v): דוגמה ממשית: hea}.w = {ate, eat, tea, eam, the, 7 אגודת הסטודנטים, בן-גוריון

9 eat ate tea at te ea eam the am th ea hea משפט: )אוילר( עבור גרף מכוון G, אם מתקיים: א. ב. ג. קיים קודקוד s עם דרגת יציאה גדולה ב- 1 מדרגת הכניסה קיים קודקוד t עם דרגת כניסה גדולה ב- 1 מדרגת היציאה לכל {t v V\{s, דרגת הכניסה שלו שווה לדרגת היציאה אזי יש מסלול אוילר ב- G. הערה: קיים אלגוריתם שמבוסס על המשפט לבדיקת קיום מסלול אוילר בסיבוכיות.O( E ) בסה"כ.T = theateam אלגוריתם מבוסס רדוקציה לבדיקת בעיית תתי-המחרוזות באמצעות בעיית מסלול אוילר: קלט: W. בנה את הגרף G המתואר לעיל. הפעל אלגוריתם לבדיקה אם קיים מסלול אוילר ב- G. אם הוחזר "אין מסלול" החזר "אין מחרוזת", אחרת המר את המסלול למחרוזת T..3 טענה עיקרית: האלגוריתם מחזיר "כן" אם"ם קיימת מחרוזת חוקית T עבור W. טענת עזר: קיימת מחרוזת חוקית T עבור W אם"ם קיים מסלול אוילר ב- G. הוכחת הטענה העיקרית: ( ) נניח כי האלגוריתם מחזיר "כן", ולכן ממבנה האלגוריתם ונכונות הקופסה השחורה קיים מסלול המילטון ב- G, ומטענת העזר קיימת מחרוזת חוקית T עבור W. ( ) נניח כי קיימת מחרוזת חוקית T עבור W, ולכן מטענת העזר קיים מסלול המילטון ב- G, ולכן האלגוריתם מחזיר "כן" מנכונות הקופסה השחורה ומבנה האלגוריתם. הוכחת טענת העזר: ( ) נניח כי קיימת מחרוזת חוקית T עבור W. נסמן ב- v 1 את שני התווים הראשונים ב- T ;...; נסמן ב-.G הוא מסלול אוילר ב- p = v 1,, v n נטען ש-.T של n + את שני התווים שמתחילים באות ה- 1 v n+1 מחוקיות T עבור W, כל v i הינו 2 -רישא או 2 -סיפא של מחרוזת מ- w, ולכן מהגדרת G קיים קודקוד מתאים לו ב- V. כמו כן, כל 1+i v i, v עוקבים ב- T מהווים מהגדרת מחרוזת חוקית 2 -רישא ו- 2 -סיפא של מחרוזת מ- W, ולכן קיימת קשת ב- G בין הקודקודים המתאימים, ולכן p מסלול. מחוקיות T עבור W, כל מחרוזת מ- W מופיעה בה בדיוק פעם אחת, ומכאן שכל צלע )המייצגת מחרוזת( מופיעה בה פעם אחת, 8 אגודת הסטודנטים, בן גוריון

10 ומכיוון שהמחרוזות בקלט שונות זו מזו גם הקשתות ב- p שונות זו מזו, ולכן p מסלול בעל n צלעות ולכן + 1 n קודקודים, כלומר p מכיל כל קשת ב- E ולכן הוא מסלול אוילר. ( ) בדומה לרדוקציה למסלול המילטון. ניתוח זמן הריצה G בניית - נשתמש ב- table hash כדי לבדוק אם 2 -רישא או 2 -סיפא נוספה כבר ל- V. יש O(n) O(2n) = רישאות וסיפאות, ולכן תהליך בנייה זה ייקח O(n) כי עבודה מול hash table היא (1)O בממוצע. ישנן n מחרוזות, ומעבר יחיד עליהן ישלים את הקשתות ב- G. זמן ריצת הקופסה השחורה הוא O(n).O( E ( = 9 אגודת הסטודנטים, בן-גוריון

11 הרצאה מס' 3 15/3/2015 טכניקה מס' 2 אלגוריתמים חמדניים יתרון יעילות זמן ומקום. חסרון כנראה לא תקף בבעיות מורכבות מספיק. דוגמה: בעיית הפעילויות. קלט: רשימת פעילויות } n,a = {a 1,, a כאשר לכל פעילות נתונים שני מספרים שלמים: s i התחלה; f i זמן סיום. זמן פתרון חוקי: G A כך שלכל שתי פעילויות ב- G לא מתנגשות זו בזו, מלבד אולי ברגע ההתחלה והסיום. פתרון אופטימלי: פתרון חוקי מקסימלי בגודלו. דוגמה לקלט חוקי a i s i f i 1 2 4 2 6 7 3 3 4 4 4 7 5 5 7 6 3 6 7 1 3 1 2 3 4 5 6 7 1 2 3 4 5 6 7 פתרונות חוקיים לדוגמה: } 2.{a 1 }, {a 1, a 2 }, (a 7, a 3, a 4 }, {a 7, a 6, a מבנה כללי של אלגוריתם חמדן כל האפשרויות/החלטות S G כל עוד S.3 קבל החלטה/בחר בחירה לפי כלל חמדני כלשהו i 3. S S בפתרון} i בחירה שלא אפשרות בהינתן ש,וכל i}.3 G G {i}.3.3 החזר את G 4. אפשרויות לכלל בחירה חמדני: פעילות קצרה ביותר 10 אגודת הסטודנטים, בן גוריון

12 פעילות שמתחילה הכי מוקדם פעילות שתסתיים הכי מוקדם התנגשות עם כמה שפחות פעילויות אחרות ברור שהאפשרות הראשונה לא טובה כי היא יכולה לבטל שתי פעילויות צמודות ארוכות יותר. האפשרות השנייה לא טובה כי היא יכולה לבטל פעילויות אחרות רבות. גם האפשרות הרביעית לא טובה. מסתבר שהאפשרות השלישית היא כלל הבחירה החמדני הרצוי. ניקח את המבנה הכללי של אלגוריתם חמדני וניצור אלגוריתם לפתרון בעיית הפעילויות: Activity(A) 1. S A 2. G 3. while (S ) פעילות בעלת זמן סיום מוקדם ביותר ב -S.3 a i 3. S S collide(a i ) 3.3. G G {a i } 4. return G הערה: ) i collide(a תחזיר את קבוצת הפעילויות המתנגשות עם a. i הוכחת נכונות גישה א' להוכיח שכל פעילות בפתרון G לא מאוחרת מהפעילות המקבילה לה בכל פתרון אופטימלי )ההוכחה בתרגול(. גישה ב' )שגויה( האלגוריתם מבצע בחירה אופטימלית בכל שלב, אז מקבלים בסופו של דבר פתרון אופטימלי. המשפט לא מוגדר היטב. גישה ג' )שגויה( יהא פתרון אופטימלי O, אזי G. = O סכמת ההוכחה לאלגוריתם חמדן )טיעון ההחלפה( טענה עיקרית: G פתרון חוקי ואופטימלי. טענת עזר: יהא.G k O G k הפתרון שהאלגוריתם בנה עד האיטרציה ה- k. אזי קיים פתרון אופטימלי כך ש- O הוכחת הטענה העיקרית: מטענת העזר, קיים בפרט לאחר האיטרציה האחרונה פתרון אופטימלי O כך ש-.a ו- G a O נניח בשלילה שקיימת פעילות.S = האלגוריתם סיים ולכן ממקרה העצירה.G O O חוקי ומכיל את G, ולכן בהכרח a לא מתנגשת בכל הפעילויות ב- G, אבל אז a S בשלב זה, בסתירה לכך שהאלגוריתם סיים. מכך O G = ולכן G פתרון אופטימלי. הוכחת טענת העזר: באינדוקציה על k מספר האיטרציות. ישנם חמישה שחקנים באינדוקציה: א. ב. ג. ד. ה. k הפתרון שהאלגוריתם בנה עד האיטרציה ה- 1 G 1 k G הפתרון האופטימלי שלפי ה"א מכיל את 1 k O הפתרון שהאלגוריתם בנה עד האיטרציה ה- k G k O - הפתרון האופטימלי )ייתכן ונצטרך להגדיר אותו( שמכיל את האיבר שנבחר בשלב ה- k k G k בסיס עבור = 0 k מתקיים.G 0 =, O 11 אגודת הסטודנטים, בן-גוריון

13 הנחה וצעד נניח נכונות עד האיטרציה ה- 1 k: G. 1 k O נוכיח כי קיים פתרון אופטימלי O שמכיל את } k.g k = G k 1 {a מקרה ראשון - O a k ולכן G k O וסיימנו. מקרה שני - O a. k צריך לבנות פתרון אופטימלי שמכיל את G k a. k פתרון חוקי, ו- O אופטימלי, כלומר מקסימלי בגודלו, ולכן O. G k ידוע כי a k G k, a k O ומכאן פתרון O.O G k 1 הפעילות בעלת זמן הסיום המוקדם ביותר מבין הפעילויות ב- a j תהא.O G k 1 טענה: } k = O {a j } {a פתרון חוקי, מקסימלי בגודלו ומכיל את.G O k {a G O k = G k 1 {a k } O j } פתרון חוקי: O. O מקסימלי, ולכן O O 1 +1 = =. בנוסף O O a j a k G 1 k O ו- O חוקי - מתחילה אחרי שהפעילות האחרונה ב- 1 k G מסתיימת. כל הפעילויות ב- } j (O G k 1 ) {a מתחילות אחרי.f j מהעובדה ש- a j לא מתנגשת עם k 1 G עולה כי a j עומדת לבחירת האלגוריתם לפני האיטרציה ה- k, אך בפועל האלגוריתם בוחר ב- a, k ומכלל הבחירה החמדנית עולה כי O פתרון חוקי. בסה"כ O ולכן a, j מלבד לא מתנגשת עם אף פעילות ב- O a k מכאן שהפעילות f. k f j פתרון חוקי, מכיל את ואופטימלי, ולכן הטענה נכונה. a j G k ניתוח זמן ריצה ננתח את זמן הריצה של מימוש יעיל של :Activity(A) מיין את A לפי זמני סיום בסדר עולה. = 0 g F זמן סיום של פעילות בעלת זמן סיום מאוחר ביותר שנבחרה..G לכל i n 1 בצע: i I הפעילות הבאה במיון. אם F g S Ii אזי } i G {I ו-.F g f Ii החזר את G..3 צעד מס' - 1 n).o(n log צעד מס' - 2.O(n) סה"כ - n).o(n log 12 אגודת הסטודנטים, בן גוריון

14 הרצאה מס' 4 22/3/2015 דוגמה נוספת לאלגוריתם חמדני: בעיית החדרים. קלט: } n A = {a 1,, a רשימת פעילויות, כך שכל } i a i = {s i, f )זמן התחלה וזמן סיום(. פתרון חוקי: חלוקה של A לקבוצות, כאשר בכל קבוצה אין פעילויות שמתנגשות אחת בשנייה. פתרון אופטימלי: חלוקה למינימום קבוצות. ניתן לראות שאם נשתמש בכלל הבחירה החמדני מהדוגמה הקודמת, לא נקבל תוצאות אופטימליות. אינטואיציה לכלל חמדן חדש: בחירות פעילות בעלת הזמן ההתחלה המוקדם ביותר. Room(A) 1. d 1, G d = 2. while (A ) פעילות בעלת זמן התחלה מוקדם ביותר a i 2. If there exists a group G j so that a i doesn't collide with every activity in it: 2.G j G j {a i } 2.3. else 2.3.G d+1 = {a i } 2.3.d d + 1 3. return G = {G 1, G 2,, G d } הוכחת נכונות נגדיר את עומק הקלט d: מס' הפעילויות המירבי המתקיימות בו-זמנית. אבחנה 1: לא ניתן למצוא פתרון חוקי שמשתמש בפחות מ- d חדרים. טענה ראשית: האלגוריתם מחזיר פתרון חוקי במינימום חדרים. אבחנה 2: ע"פ סעיף 2 באלגוריתם מובטח כי לא תוחזר קבוצה המכילה שתי פעילויות מתנגשות ומכאן הפתרון חוקי. טענת עזר: אם עומק הקלט A הוא d אזי האלגוריתם יחזיר פתרון המשתמש ב- d חדרים. הוכחת הטענה הראשית: האלגוריתם מחזיר פתרון חוקי. מטענת העזר הפתרון המוחזר משתמש ב- d חדרים. מאבחנה מס' 1 לא ניתן להחזיר פתרון עם פחות חדרים, ולכן הפתרון שיוחזר אופטימלי. הוכחת טענת העזר: נניח בשלילה שהאלגוריתם משתמש ביותר מ- d חדרים, כלומר האלגוריתם פותח בשלב מסוים חדר + 1 d עבור פעילות a i כלשהי. מכאן שקיימת פעילות a j בכל חדר j d,g j,1 שמתנגשת עם a. i מהכלל החמדני a i מתחיל אחרי כל הפעילויות איתן היא מתנגשת, כלומר לכל a j מתקיים f. j > s i מכך נובע כי בזמן s i מתקיימות + 1 d פעילויות בו-זמנית, וזו סתירה להנחה ש- d הוא עומק הקלט. ניתוח זמן ריצה מימוש יעיל של האלגוריתם :Room(A) d 1, G d =, F d 0 ערימת מינימום של זוגות Q G j, F j מיין את A לפי זמני התחלה מהמוקדם למאוחר.3 13 אגודת הסטודנטים, בן-גוריון

15 עבור i n :1 4. הפעילות הבאה במיון a i G j, F j ExtractMin(Q).4.4.3 אם :F j S ai G j G j {a i }.4.3 מ- Q ל- Q.4.3 הוצא את G j, F j G j, F j הכנס את :F j F ai.4.3.3 4.4. אחרת: d d + 1.4.4 G d {a i }.4.4 F d F ai.4.4.3. 4.4.4 הכנס את ) d (G d, F ל- Q החזר את } d G = {G 1, G 2,, G.4.5 4.4.4,4.3.3,4.3 סעיף 3 לוקח logn).o(n סעיפים,4.O(n logn) לוקחים (n.o(log בסה"כ זמן ריצה של עצים פורשים מינימליים Trees Minimum Spanning כל הגרפים בפרק זה ממושקלים, לא-מכוונים, קשירים ופשוטים. גרף ניתן לייצוג עם רשימת שכנויות ומטריצת שכנויות. נעדיף להשתמש ברשימת שכנויות כי זה ייצוג יותר יעיל שלוקח ( E O( V + זיכרון, לעומת המטריצה שלוקחת ) 2 O( V זיכרון. נחזור על קצת הגדרות מתורת הגרפים: עץ הוא גרף קשיר וחסר מעגלים. תת-גרף פורש הוא תת-גרף קשיר המכיל את כל קודקודי הגרף. עץ פורש הוא תת-גרף פורש שהינו עץ, ובאופן שקול תת-גרף פורש וחסר מעגלים., w(t) = e E T כלומר סכום כל המשקלים של הצלעות w(e) הוא T = V, E T E יער הוא גרף חסר מעגלים. משקל של תת-גרף בתת-הגרף. עבור בעיית עץ פורש מינימלי )עפ"מ(: קלט: גרף E.G = V, פלט: עץ פורש T T =,V E של G, במשקל מינימלי מבין כל העצים הפורשים של G. 14 אגודת הסטודנטים, בן גוריון

16 הרצאה מס' 5 24/3/2015 משפט 1: )ללא הוכחה( עבור עץ פורש T T =,V E התנאים הבאים שקולים: T קשיר וחסר מעגלים.. E T = V קשיר ו- 1 T. E T = V חסר מעגלים ו- 1 T קיים מסלול פשוט יחיד בין כל שני קודקודים ב- T..3.4 משפט 2: )טיעון ההחלפה לעצים פורשים( יהא E G =,V גרף ו- T =,V E T העץ הפורש שלו. כמו-כן נתונה קשת.e E E T אזי בגרף {e} H = V, E T קיים מעגל,C ולכל קשת e C מתקיים כי.G הינו גם-כן עץ פורש של T = V, (E T {e}) {e } T עץ פורס. מהנתון E. T מתקיים עץ פורש, ולכן 1 V T = E T = E T +1 e 1 = V 1 e הוכחה: צ"ל כי נראה כי T קשיר: יהיו T,u. v V עץ פורש אזי קיים מסלול p בין u ל- v ב- T. אם e p אזי p קיים גם ב-.E T אם,e = (x, y) p אז מתנאי המשפט,e C הקשתות של } {e C ב-,T ומהוות מסלול מ- ל x - ב y,t - שמהווה תחליף לקשת.(x, y) p שלד לאלגוריתם חמדן לבעיית MST F E, P כל עוד F 2. קשת הנבחרת ע"י כלל חמדני e F F {e} P P {e}.3 החזר P T = V,.3 נראה שני אלגוריתמים ל- MST : אלגוריתם Kruskal שמגדל יער שמתאחד לאיטו לעץ פורש. אלגוריתם Prim מגדל עץ שגדל לאיטו לעץ פורש. אלגוריתם Kruskal F E, P כל עוד 1 V P < 2. קשת במשקל מינימום ב- F e F F {e} 2.3. אם {e} P לא מכיל מעגל P P {e}.3 החזר P T = V,.3 15 אגודת הסטודנטים, בן-גוריון

17 אבחנה: לכל גרף קשיר קיים עפ"מ. זאת משום שמקשירות הגרף קיים לפחות עץ פורש אחד, וקבוצת העצים הפורשים של גרף היא סופית ולכן קיים מינימום בקבוצה. הוכחת נכונות לאלגוריתם Kruskal טענה ראשית: האלגוריתם מחזיר עפ"מ של G. טענת עזר: נסמן ב- P k את הקשתות שהאלגוריתם בחר עד השלב ה- k, אזי קיים עפ"מ T T =,V E כך ש-.P k E T הוכחת הטענה הראשית: מעצם קיומו של עפ"מ בגרף קשיר, ומהעובדה שהאלגוריתם עובר על כל הקשתות, בהכרח יימצאו 1 V קשתות שלא סוגרות מעגל זו עם זו, ולכן הלולאה תסתיים. מטענת העזר, לאחר כל צעד, ובפרט לאחר הצעד האחרון, מתקיים P E t עבור עפ"מ T T =,V E של G. האלגוריתם עצר ולכן T, P = V 1 = E ומכאן,P = E T ולכן P,T = V, E T = V, כלומר הוחזר עפ"מ. הוכחת טענת העזר: באינדוקציה על מס' האיטרציות k. בסיס עבור = 0 k מתקיים.P 0 = E T הנחה קיים עפ"מ T T = V, E כך ש-.P k 1 E T צעד נוכיח כי קיים עפ"מ T T = V, E כך ש-.P k E T תהא (v e =,u) הקשת שהאלגוריתם בוחר באיטרציה ה- k. מקרה ראשון e סוגרת מעגל עם מקרה שני e לא סוגרת מעגל עם.T = T ולכן,P k = P k 1 E T ואז מה"א והאלגוריתם P k 1.P k = P k 1 {e} נסמן.P k 1 תת-מקרה א' - T e E ואז מה"א,P k 1 E T ובסה"כ P k E T ושוב T.T = תת-מקרה ב' - T.e E נביט ב- { e }.H = V, E T ממשפט 2 קיים מעגל C ב- H. מדוע קיימת הינן ב- 1 k e? נניח בשלילה שכל הקשתות ב-{ e } P, C אך אז כאשר נצרף את e C P k 1 נקבל מעגל ב- P, k בניגוד לעבודה שהאלגוריתם מונע היווצרות כזו של מעגל כאשר הוא בוחר את.e אז ממשפט } 2 {e T = V, (E T {e}) הינו עץ פורש. :T.e T מהגדרת,e P :T ובסה"כ.P נותר k E T k 1 ראינו ש-.P k 1 E T מהגדרת האלגוריתם בוחר ב- e.e P וגם )e )מהגדרת e P עפ"מ: נשים לב כי T k 1 k 1 להוכיח ש- ולכן בודאות היא לא סוגרת מעגל עם 1 k P. כמו כן ידוע ש- P 1 k e} } E T ולכן אין מעגל גם כאן. מכאן, שבשלב ה- k האלגוריתם יכל לבחור גם ב- e וגם ב- e, אך הוא בחר ב- e. מכלל הבחירה החמדני בהכרח מתקיים ) w(e,w(e) ולכן w(t).w(t ) = w(t) + w(e) w(e ) T עץ פורש מינימלי שמכיל את P, כנדרש. k בסה"כ ניתוח זמן ריצה סעיף - 2 נשים לב כי log V ), E log E = E log V 2 = E 2 log V = O( E מתוך מיון כל הצלעות במיון מבוסס השוואות. מימוש נאיבי של בדיקת המעגלים הרצת DFS O( E V ) E, O( V ) = משום שיש E בדיקות של סגירת מעגל. על גרף שמס' הקשתות בו לכל היותר V. בסה"כ אבחנה: (v,u) סוגרת מעגל ב- p אם"ם גם u וגם v שייכות לאותו עץ ב- p. מימוש יעיל של האלגוריתם עם מבנה :union-find 16 union-find-kruskal(g) אגודת הסטודנטים, בן גוריון

18 מיון של E לפי משקלים בסדר עולה F B לכל v V make-set(v).3 כל עוד 1 V B <.4 הקשת הבאה במיון v) e = (u, F F {e}.4.4.3 אם find-set(v) find-set(u) B B {e}.4.3 union(u, v).4.3 החזר B T = V,.3.4.5 n union, find-set, make-set משפט מקורס מבני נתונים: ביצוע m make-set לוקח logn) O(m זמן. פעולות שמתוכן לפחות פעולות במקרה של המימוש הנ"ל נדרשות V פעולות E 2,make-set פעולות find-set ו- V פעולות.union בסה"כ זמן ריצה של האלגוריתם הוא log V ).O ( V + E ) log V = O( E 17 אגודת הסטודנטים, בן-גוריון

19 הרצאה מס' 6 12/4/2015 נתבונן באלגוריתם.Prim בניגוד לאלגוריתם קרוסקל, האלגוריתם הזה מגדל עץ יחיד שגדל לכדי עץ פורש. אלגוריתם Prim בחר v V שרירותית S {v}, B כל עוד 1 V S <.3 קשת במשקל מינימום המקיימת e = (v, w) v S, w S.3 B B {e}, S S {w}.3 החזר B T = V,.4 הגדרה: חתך של גרף הוא חלוקה של V לשתי קבוצות זרות. הגדרה: קשת חוצה חתך היא קשת שמחברת בין קודקודים בשתי הקבוצות של החתך. הערה: אלגוריתם פרים למעשה מבצע חתך של הגרף בכל איטרציה ובוחר את הקשת החוצה המינימלית. הוכחת נכונות לאלגוריתם Prim טענה ראשית: T המוחזר הינו עפ"מ של G. טענת עזר: אם.B k E T B k הינו אוסף הקשתות שנבחרו עד השלב ה- k, אזי קיים עפ"מ T T =,V E המקיים הוכחת הטענה הראשית: האלגוריתם עוצר כיוון שבכל איטרציה קיימת קשת חוצה חתך. נניח בשלילה שלא הגענו לתנאי העצירה, כלומר S לא מכילה את כל הקודקודים, אך אין קשת חוצה חתך, כלומר קיימים שני רכיבי קשירות זרים, בניגוד להנחה שהגרף קשיר. מטענת העזר, בפרט לאחר האיטרציה האחרונה מתקיים T.B E לפי תנאי העצירה 1 V E T. B = הינו קשתות של עפ"מ ולכן 1 V, E T = ומכאן.T = T ולכן B = E T הוכחת טענת העזר: באינדוקציה על מספר האיטרציות k. בסיס עבור = 0 k מתקיים T.B 0 = E הנחה קיים עפ"מ T T = V, E כך ש-.B k 1 E T T T k E המקיים.B תהא w) e = (v, הקשת שנבחרה ע"י צעד נוכיח כי קיים עפ"מ T V, E = האלגוריתם באיטרציה ה- k, ולכן {e}.b k = B k 1 מקרה ראשון - T e E ולכן T B k = B k 1 E ונסמן T T = וסיימנו. מקרה שני - T.e E נתבונן ב- { e }.H = V, E T ממשפט 2 קיים ב- H המעגל.C לא ייתכן כי {e} C, B 1 k כי אז e לא הייתה חוצה חתך, והאלגוריתם לא היה בוחר בה. נתבונן ב-{ e } - C זהו מסלול בין v ל- w. רגע לפני בחירת e מתקיים ש- S v.,s w תהא e הקשת הראשונה על המסלול שחוצה את החתך (S,S). V היא קיימת כי יש מסלול בין v S ל- S w. V נטען ש-.B עפ"מ שמכיל את T = V, (E T {e}) {e k } T עץ פורש ישירות ממשפט 2. e e B 1 k, e כי כל הקשתות שכבר נבחרו אינן חוצות חתך, ומכאן T B. k E האלגוריתם בחר ב- e ולכן היא קשת חוצה חתך באיטרציה זו, אבל גם את e בחרנו כקשת חוצה חתך, ומכאן שתי הקשתות יכלו להיבחר באיטרציה ה- k אך האלגוריתם בחר ב- e. לכן מכלל הבחירה 18 אגודת הסטודנטים, בן גוריון

20 החמדני ) w(e,w(e) ומכאן ) w(t.w(t ) = w(t ) + w(e) w(e ) מכיוון ש- T עפ"מ נובע T w(t ) = w(t k E ולכן T עפ"מ של G המקיים,B כנדרש. כי ) ניתוח זמן ריצה במימוש נאיבי, בצעד 3 מעבר על כל הקשתות ובדיקה האם הקשת חוצה חתך ומינימלית לוקח.O( E ) יש O( V ) איטרציות ולכן סה"כ זמן ריצה של.O( E V ) מימוש יעיל: בחר קודקוד שרירותית v B, S, {v} הכנס את כל הקשתות (w,u) לערימת מינימום Q ע"פ המשקלים כל עוד 1 V B < e Extract-min(Q).4 S S {w}, B B {e}.4 4.3. לכל קשת e שמחוברת ל- w 4.3. אם הקצה השני ב- S אז הוצא את e מ- Q 4.3. אם הקצה שני לא ב- S אזי הכנס את e ל- Q החזר B T = V,.3.4.5 הרעיון הוא ש- Q מכילה בכל רגע אך ורק את כל השקתות חוצות החתך בשלב זה. אבחנה: E. Q כמה פעמים קשת מסוימת נכנסת ויוצאת מ- Q? כניסה אחת ויציאה אחת. כל פעולה על הערימה לוקחת O(log E ) זמן. לכל היותר יתבצעו שתי פעולות insert, delete על קשת מסוימת, ולכן פעולות אלו ייקחו log E ) O( E זמן. יש לכל היותר 1 V פעולות Extract-min ולכן סה"כ זמן ריצה של האלגוריתם log E ). O( E log E + V ראינו כי log E ) V log E = O( E ולכן זמן הריצה של האלגוריתם הוא log E ).O( E בנוסף ראינו כי log V ) E log E = O( E ולכן סה"כ זמן הריצה הוא log V ),O( E כמו אלגוריתם קרוסקל. הערה: קיים מימוש יעיל יותר עם ערימת פיבונצ'י, שזמן הריצה שלו הוא log V ).O( V טכניקה מס' 3 תכנון דינמי Programming( )Dynamic הרעיון חלוקת הבעיה לתתי-בעיות קטנות יותר, ושילוב של פתרונות אופטימליים לתתי-הבעיות לכדי פתרון אופטימלי לבעיה המקורית. ישנם שני אתגרים בנושא: איך לחלק לתתי-בעיות? איך לשלב את הפתרונות לתתי-הבעיות לפתרון הבעיה המקורית )נוסחת מבנה(? מתי נזהה שבעיה פתירה באמצעות תכנון דינמי? כאשר ניתן לפרק פתרון אופטימלי לפתרונות אופטימליים עבור תתי-בעיות קטנות. האם זה תמיד נכון? לא! אבל כמעט תמיד... בעיית הפעילויות הממושקלות קלט: } n A = {a 1,, a קבוצה של פעילויות, כך שכל פעילות a i A מיוצגת ע"י שלשה ) i (s i, f i, w כמו בבעיה המקורית, כאשר w i משקל הבעיה. פתרון חוקי: B A כך שכל שתי פעילויות ב- B לא מתנגשות. פתרון אופטימלי: פתרון חוקי שסך המשקלים של הפעילויות שבו מקסימלי ביחס לפתרונות החוקיים האחרים. 19 אגודת הסטודנטים, בן-גוריון

21 דוגמות למוטיבציה: w i = f i s i רווח מפעילות = i w הוצאה על פעילות = i w ואז מחפשים מינימיזציה האם ניתן להפעיל כאן אסטרטגיה חמדנית? מתחשבים במשקלים ולא פתרנו את הבעיה. אם נפעיל אסטרטגיה כמו בבעיה המקורית, בעצם לא נשים לב שאם = 1 i a i : w אז אנו כן חוזרים לבעיית הפעילויות המקורית, כלומר כל האסטרטגיות החמדניות שנכשלו בבעיה המקורית נכשלות גם כאן. 20 אגודת הסטודנטים, בן גוריון

22 הרצאה מס' 7 14/4/2015 בטכניקת התכנון הדינמי אלו הם שלבי הפתרון: חלוקה לבעיות ושילובן בנוסחה 1. חלוקה והגדרת תתי-בעיות )OPT( 1. הגדרת נוסחת מבנה 1.3. הוכחת הנוסחה )תבנית נפרדת(. פיתוח אלגוריתם רקורסיבי/איטרטיבי המבוסס על נוסחת המבנה. הוכחת נכונות האלגוריתם וניתוח זמן ריצה זהו שלב יחסית קצר..3 נשתמש בבעיית הפעילויות הממושקלות, שהוצגה בסוף ההרצאה הקודמת, כדי להציג פתרון באמצעות תכנון דינמי. שלב 1 מה נדרש? לוודא שאחת מתתי-הבעיות היא למעשה הבעיה המקורית. לוודא שלפחות אחת מתתי-הבעיות טריוויאלית לפתרון )מקרה בסיס(. לוודא שמספר תתי-הבעיות שנגדיר קטן יחסית )פולינומי(. הערה: הדבר הראשון שחייבים לעשות הוא לסדר את הקלט בצורה נוחה שהגיוני לעבוד עליו. במקרה זה נסדר לפי זמני סיום בסדר לא-יורד. נקבל: A = a 1,, a n, f 1 f 2 f n הערה: הסימון = A מסמן מערך ממוין של איברים, בניגוד לסימון הקודם { } = A שהגדיר קבוצת קלט. יהא O פתרון אופטימלי. אפשרות א':.a n O מכך } n 1.O {a 1,, a נטען ש- O אופטימלי עבור קלט זה, אחרת קיים } n 1 O {a 1,, a כך ש-( w(o,w(o ) > אבל בפרט O הינו פתרון חוקי שמוכל ב-.O וזה עומד בסתירה לאופטימליות של {a 1,, a n } אפשרות ב':.a n O a 1 a 2 a 3 a 4 a 5 a 6 עבור פעילות a i כלשהי, נגדיר: אינדקס הפעילות שמסתיימת מאוחר ביותר, מבין הפעילויות שמסתיימות לא אחרי p(i) = s i אם אין פעילות כזו, נגדיר = 0.p(i) בדוגמה הנ"ל: = 0 p(1).p(6) = 3, p(4) = 2, נביט ב-{.O = O {a n מחוקיות O מתקיים } p(n).o {a 1,, a נטען ש- O פתרון אופטימלי עבור קלט זה, כי אחרת קיים O, פתרון חוקי לקלט זה, המקיים ) w(o.w(o ) > נגדיר זהו פתרון חוקי כי מהגדרת O כל הפעילויות ב- O בהכרח זרות ל- a. O = O n אזי {a n }.O בסתירה לאופטימליות,w(O ) = w(o ) + w n > w(o ) + w n = w(o) 21 אגודת הסטודנטים, בן-גוריון

23 שלב 1 הגדרה: ערך פתרון מקסימלי עבור הבעיה עם הקלט } i i n: OPT(i) = {a 1,, a. 1 OPT(i) = { 0, i = 0 max{opt p(i) + w i, OPT(i 1)}, i > 0 אבחנה:.p(i) < i שלב 1.3 )תבנית כללית( מה עושים? חלוקת מרחב הפתרונות לקבוצות של פתרונות אפשריים. הוכחת כיסוי: כל פתרון שייך לאחת הקבוצות שהוגדרו. מסקנה מיידית: {(n קבוצות) OPT,,(קבוצה אחת) max\min{opt.opt(i) = הוכחת שוויון עבור כל i שהינו חלק מהנוסחה. סיכום..3.4.5 נמחיש זאת על הדוגמה שאנו פותרים: 1. בצורה גרפית: sol 1 מרחב הפתרונות ש- a i לא שייך אליהם sol 2 מרחב הפתרונות ש- a i שייך אליהם הגדרה: sol הוא מרחב כל הפתרונות החוקיים לבעיה } i.{a 1,, a כיסוי - יהא P פתרון. אם a i P אזי P sol 2 אחרת.P sol 1 מסקנה מיידית: )} 2,OPT(i) = max{o (sol 1 ), O (sol כאשר ( ) O הוא ערך הפתרונות המקסימליים בכל קבוצה. טענת עזר :1 1) OPT(i O (sol 1 ) = טענת עזר :2 i O (sol 2 ) = OPT p(i) + w הוכחת טענת עזר :1 נוכיח כי 1) OPT(i :O (sol 1 ) יהא O פתרון אופטימלי עבור } i 1.{a 1,, a מההגדרה 1) OPT(i.w(O) = בפרט, O מהווה פתרון חוקי שמוכל גם ב- O (sol 1 ) ולכן מהגדרת,O ומכאן sol 1,a i פתרון חוקי לקלט שלא מכיל את O כלומר,{a 1, a i } מתקיים 1) OPT(i.O (sol 1 ) w(o) = נוכיח כי 1) OPT(i O sol 1 (sol 1 ) פתרון שמקיים ) 1 :O יהא.w(O) = O (sol מהגדרת OPT ולכן מהווה פתרון חוקי גם לקבוצה זו, ולכן מהגדרת O {a 1,, a i 1 } מתקיים sol 1 מתקיים ) 1.OPT(i 1) w(o) = O (sol.3.4 22 אגודת הסטודנטים, בן גוריון

24 הוכחת טענת עזר :2 נוכיח כי (sol 2 ) OPT p(i) + w i פפתרון עבור } p(i) :O 1,, a יהא {a O שמקיים p(i).w(o) = OPT נגדיר } i O = O {a זהו פתרון חוקי כי ב- O אין פעילויות O,a ולכן שמתנגשות עם a i מהגדרת.p(i) מכאן פתרון חוקי לקבוצה } i {a 1,, a שמכיל את i.o (sol מתקיים O ומהגדרת,O 2 ) w(o ) = w(o) + w i = OPT p(i) + w i sol 2 נוכיח כי (sol 2 ) OPT p(i) + w i יהא O פתרון מקסימלי בקבוצה 2 :O,sol לכן = w(o) O מתקיים O מחוקיות.O = O {a נגדיר:.a מהגדרת.O i } i O מתקיים sol 2 (sol 2 ) O (sol 2 ) = w(o) = w(o ) + w i בסה"כ.w(O ) OPT p(i) ומכאן {a 1,, a p(i) } RWA(A) 1. if (n=0) 1. return 0 2. else 2. return max{raw(n 1),RAW p(n) + w n },OPT p(i) + w i כנדרש. 5. מטענות העזר ומהמסקנה בסעיף 3 נובעת נכונות נוסחת המבנה. שלב 2 נניח לשם נוחות שהאלגוריתם מקבל אינדקס ויש לו גישה ל- A. אלגוריתם רקורסיבי: נראה את עץ הרקורסיה עבור הדוגמה הבאה: a 1 2 a 2 4 a 4 a 3 7 3 a 5 a 6 2 6 OPT(6) OPT(5) OPT(3) OPT(4) OPT(3) OPT(2) OPT(1) OPT(3) OPT(0) OPT(1) OPT(0) OPT(0) OPT(0) 23 אגודת הסטודנטים, בן-גוריון

25 הרצאה מס' 8 19/4/2015 המשך ההוכחה מההרצאה הקודמת: הערה: תכנון דינמי מספק דרך לעבור באופן לא מפורש על מספר אקספוננציאלי של פתרונות חוקיים בזמן )ומקום( פולינומי. ראינו כי השיטה הרקורסיבית הטריוויאלית לא יעילה. נראה גרסה רקורסיבית תוך מימוש memoization )קישור(: Initialization: 1. 1 i n: M i = 1 RWA(i) 1. if (i = 0) 1. M 0 = 0 2. if (M i = 1) 2. return M i 3. else 3. return M i max{rwa(i 1), RWA p(i) + w i } שלב 3 ניתוח זמן ריצה לאחר שינוי האלגוריתם: אתחול:.O(n) מיון לפי זמני סיום: (n.o(n log חישוב p(i) לכל i: נשתמש בעץ חיפוש על זמני הסיום f. i נחפש בזמן f(j) שקרוב ביותר ל- s i כך ש-,f j s i ונגדירו כ-( p(i. סה"כ n).o(n log קריאות רקורסיביות: מקרה בסיס או קריאה שכבר נפתרה - (1)O. לכל היותר יש n קריאות רקורסיבית ל"חישוב אמיתי", ולכן בסה"כ (n.o(n log למעשה, אנו רואים שעיקר העבודה הוא בשלב העיבוד המוקדם של המידע ואתחול מבני הנתונים. לצורך הוכחת נכונות האלגוריתם, ננסח טענה: טענה: OPT(i) i n: RWA(i) =. 1 הוכחה: באינדוקציה על i. בסיס עבור = 0 i האלגוריתם מחזיר,0 ואכן = 0 OPT(0) מההגדרה. הנחה נניח כי הטענה נכונה לכל k. < n צעד נוכיח עבור n: RWA(n) = max{rwa(n 1),RWA p(n) + w n } הנחת האינדוקציה = max{opt(n 1), OPT p(n) + w n } = OPT(n) p(i)<i,i-1<i נכונות נוסחת המבנה נראה אלגוריתם איטרטיבי לבעיה: 24 אגודת הסטודנטים, בן גוריון

26 Iter-weighted-activiy(n) 1. for (1 i n) 1. M i = 1 2. M 0 = 0 3. for (i 1 to i = n) 3. M i max{m i 1, M p(i) + w i } 4. return M n זמן הריצה הוא עדיין (n.o(n log בהוכחת אלגוריתם איטרטיבי צריך להראות שכל תתי-הבעיות הנדרשות לפתרון הבעיה באיטרציה נוכחית כבר נפתרו, וזאת בנוסף לשוויון בדומה לאלגוריתם הרקורסיבי. נראה כי אפשר לשחזר את הפעילויות מתוך הפתרון. נניח וזה מערך הפתרונות אחרי המימוש הנ"ל: OPT(0) OPT(n) אבחנה: נניח וכבר חישבנו את הערך OPT(i) לכל i n 1. האם a n שייך לפתרון האופטימלי? a n שייך לפתרון האופטימלי אם"ם.OPT(n) = OPT p(n) + w n נשים לב כי נכונות הטענה נובעת ישירות מנוסחת המבנה! למעשה, אם השוויון הנ"ל מתקיים, אז אפשר לקפוץ לבדיקה של p(n).opt פרוצדורה לשחזור פתרון אופטימלי מתוך ערכי OPT מבוסס הטענה: 1. j n, sol 2. while (j > 0) 2. if OPT(j) = w j + OPT(M p(j) ) 2.sol sol {a j } 2.j p(j) 2. else 2.j j 1 3. return sol זמן הריצה של הפרוצדורה לאחר הרצת האלגוריתם הקודם הוא,O(n) כי יש לכל היותר n איטרציות, וכל הפעולות באיטרציה לוקחות (1)O. 25 בעיית הגנב Problem( )Knapsack זוהי דוגמה נוספת לתכנון דינמי: גנב שעל גבו תרמיל במשקל W נכנס לחדר ובו n פריטים. לכל פריט יש משקל ומחיר. המטרה היא לעזור לגנב להחליט אילו פריטים להכניס לתרמיל. ננסח את הבעיה באופן פורמלי: קלט - } n.a = {a 1,, a לכל פריט a i נתונים w i משקל הפריט; p i מחיר הפריט.. w(b) = w(a i ) W a i B פתרון חוקי - A B המקיימת פתרון אופטימלי פתרון חוקי במחיר מקסימלי. אגודת הסטודנטים, בן-גוריון

ל) 27 האם ניתן לבחור באסטרטגיה חמדנית? כנראה שלא, כי לא ידוע על פתרון חמדני לבעיה זו... נראה פתרון שמבוסס על תכנון דינמי. יהא O פתרון אופטימלי, ונניח שהקלט הוא } n a}. 1,, a שלב 1 אם,a n O אזי } n 1,O {a 1,, a כלומר זהו פתרון אופטימלי גם עבור תת-הקלט הנ"ל-.OPT(n 1) אם a, n O אזי לאחר בחירת a n נותר בתרמיל W w n מקום. אם ננסה לעבוד כמו מקודם, כלומר OPT(i) הוא הפתרון האופטימלי עבור } i {a 1,, a ומשקל,W w n זה לא עוזר לנו המטרה שלנו היא למצוא את הפתרון האופטימלי עבור הקלט } n 1 {a 1,, a ומשקל W w n שים לב להבדל באינדקס של האיבר האחרון!(. אם כך, נאלץ להגדיר אוסף עשיר יותר של תתי-בעיות: עבור i n 1 ועבור 1 T W נגדיר: הפתרון האופטימלי עבור הקלט } i {a 1,, a ואילוץ המשקל OPT(i, T) = T מכך נקבל כי אנו מחפשים את הפתרון האופטימלי.OPT(n,1 W w n ) + p n נגדיר את נוסחת המבנה: 0, i = 0 OPT(i 1, T), w i > T OPT(i, T) = max {OPT(i 1, T) לא לוקח את { a i, OPT(i 1, T w i ) + p i }, else לוקח את a i הוכחת הנוסחה נחלק למקרים: = 0 i, אין איברים לבחירה והערך האופטימלי הוא 0.,w i > T אז צריך להוכיח כי T).OPT(i, T) = OPT(i 1, הסבר: אם w i > T אזי a i בהכרח לא שייך לפתרון, כי אז אילוץ המשקל מופר. לכן בהכרח הפתרון מוכל ב- 1 i האיברים הראשונים עם אותו אילוץ משקל. מכאן קבוצת הפתרונות החוקיים עבור } i a} 1,, a עם אילוץ משקל T שווה לקבוצת הפתרונות החוקיים עבור } 1 i a} 1,, a עם אילוץ המשקל T, ולכן.OPT(i, T) = OPT(i 1, T) המקרה המרכזי. נוכיח את המקרה המרכזי ע"פ התבנית: חלוקה למקרים של הפתרונות החוקיים )מרחב הפתרונות(: sol 1 פתרונות חוקיים שלא מכילים את.a i פתרונות חוקיים שמכילים את sol 2 ;a i כיסוי: יהא P פתרון חוקי: אם a i P אזי P sol 2 מההגדרה, אחרת.P sol 1.OPT(i, T) = max{o (sol 1 ), O (sol 2 )} טענת עזר :1 T) O (sol 1 ) = OPT(i 1, טענת עזר :2 i.o (sol 2 ) = OPT(i 1, T w i ) + p הוכחת טענת עזר :2 נוכיח כי.O (sol 2 ) OPT(i 1, T w i ) + p i יהא O פתרון עבור } i 1 {a 1,, a עם אילוץ משקל T w i כך ש-(.p(O) = OPT(i 1, T w i נבנה פתרון.3.4 } i,w(o ) = w(o) + w.o i T w i + w i = T = O {a כלומר פתרון חוקי עבור } i {a 1,.., a עם אילוץ המשקל T שמכיל את,a i ומכאן.O sol 2 בנוסף, p(o ) = p(o) + p i = OPT(i 1, T w i ) O (sol 2 ) נראה כי.O 2 (sol 2 ) OPT(i 1, T w i ) + p i יהא O sol פתרון המקיים } i.p(o) = O מהגדרת.a :sol נביט בפתרון.O = O {a זהו פתרון המוכל ב- i O 2 (sol 2 ) O T w ומכאן i עומד באילוץ משקל,T היה O כיוון שאילוץ המשקל על,{a 1,, a i 1 } O 26 אגודת הסטודנטים, בן גוריון

28 ) i.p(o ) OPT(i 1, T w לכן:.O (sol 2 ) = p(o) = p i + p(o ) p i + OPT(i 1, T w i ) הוכחת טענת עזר 1: דומה כמעט לחלוטין להוכחת מקרה ב'. השלימו את הפרטים כתרגיל בית. 5. סיכום: ממסקנת שלב 3, ומטענות עזר 2, 1, עולה כי } i OPT(i, T) = max{opt(i 1, T), OPT(i 1, T w i ) + p במקרה ג'. יחד עם הוכחות מקרי הבסיס נקבל את נכונות הנוסחה. Iter-knapsack(n, T) שלב 2 נראה אלגוריתם איטרטיבי לפתרון הבעיה שמשתמש במערך דו-מימדי. 1. 1 i n, 0 T W 1. M i, T = 1 2. 0 T W 2. M 0, T = 0 3. for (i 1 to n) 3. for (T 1 to W) 3.M i, T max{m i 1, T, M i 1, T w i + p i } 4. return M n, W שלב 3 סקיצה להוכחת הנכונות: יש להוכיח כי OPT(n, (W = M,n W )באינדוקציה על,n(. W עושים זאת מנכונות נוסחת המבנה והנחת האינדוקציה. בשלב ה- i, T כבר חושבו הערכים M i 1, T, M i 1, T w i זה נובע ישירות מהגדרת סדר המעבר של הלולאה בשלב 3 של האלגוריתם. זמן ריצה: אתחול - W).O(n יש לכל היותר (W O(n איטרציות בשלב 3, כשכל איטרציה בזמן (1)O. בסה"כ - W).O(n שחזור פתרון: מסתמך על הטענה הבאה OPT(n, W) = M n 1, W w n + p n שייך לפתרון אופטימלי אם"ם a n פרוצדורה לשחזור פתרון מבוסס הטענה: 27 אגודת הסטודנטים, בן-גוריון

29 1. j n, sol, T W 2. while (j > 0) 2. if w j T AND M j, T = M j 1, T w j + p j 2.sol sol {a j } 2.T T w j 2. else 2.j j 1 3. return sol האם n W באמת זמן ריצה טוב? ניזכר שזמן ריצה הינו פונקציה של גודל ייצוג הקלט! גודל הייצוג האמיתי הוא n, + log W כנגד ייצוג בינארי של W )בניגוד לייצוג אונרי( ומערך של פריטים. אם נניח ש- W מיוצג באופן סביר ע"י 64 ביט, אז זמן הריצה הוא 2 64 n n. W = אם במקרה n, > W אזי זמן הריצה פשוט n ואז זמן הריצה פולינומי. 28 אגודת הסטודנטים, בן גוריון

ל s ל s ל s 30 הרצאה מס' 9 21/4/2015 כדוגמה נוספת לתכנון דינמי נדון בבעיית הבאה: בעיית המסלול הקל ביותר ממקור יחיד, בגרף מכוון עם משקלים חיוביים קלט: גרף מכוון E,G = V, קודקוד.s V פלט: לכל v V משקל מסלול קל ביותר מ- -v. יהא P מסלול קל ביותר מ- s לקודקוד מסוים v. אבחנה: תת-מסלול של מסלול קל ביותר הוא מסלול קל ביותר. מסקנה: מסלול קל ביותר מ- לקשת v).(u i, שלב 1 )בקצרה( -v מורכב בהכרח ממסלול קל ביותר מ- s לאחד משכניו של u, i v, ומשורשר.OPT(s) = 0 מקרה הבסיס: -v. הוא משקל המסלול הקל ביותר מ- OPT(v) בעיה מקורית: לכל v V הפתרון נתון ב-( OPT(v. לכן הגדרנו V, תתי-בעיות, כלומר פירוק ליניארי של הבעיה. OPT(v) = { 0, v = s min{opt(u i ) + w(u i, v)} : u i adj(v), v s נוסחת מבנה: נגדיר: sol i הוא אוסף המסלולים מ- ל s -v שמסתיימים בקשת (v u). i, כיסוי: יהא P מסלול מ- ל s -v. תהא (v u) i, הקשת האחרונה ב- P, לכן P. sol i OPT(v) = min{o (sol i )} : u i adj(v) טענת עזר: לכל i k 1 מתקיים v).o (sol i ) = OPT(u i ) + w(u i, ל s u i - שערכו ) i.o יהא P מסלול מ-.OPT(u הוכחה: נוכיח כי v) (sol i ) OPT(u i ) + w(u i, ל s v- שמסתיים בקשת v) (u i, ומכאן.P i אזי P מסלול מ-.P sol לכן: נגדיר v) = P (u i, w(p ) = w(p) + w(u i, v) = OPT(u i ) + w(u i, v) O (sol i ).3.4 נוכיח כי v) (sol i ) OPT(u i ) + w(u i, יהא P מסלול ב- sol.o i שמשקלו = w(p),u מהגדרת.O i ל- מ- s P נביט בתת-המסלול של.(u i, v) היא הקשת האחרונה ב- P sol i (sol i ) נסמנו.P לכן: v).o (sol i ) = w(p) = w(p ) + w(u i, v) OPT(u i ) + w(u i, 5. סיכום... שלב 2 נבנה אלגוריתם איטרטיבי לבעיה המבוסס על הנוסחה הנ"ל. Iter-light-path(G, s) 1. 1 i V 1. M i = 1 1. M s 0 2. for (i 1 to n) 2. for (T 1 to V ) 2.M i min{m u i + w(u i, v) v V, u i adj(v)} 3. return v V: M v 29 אגודת הסטודנטים, בן-גוריון

31 שלב 3 מה צריך להוכיח? לכל.M v = OPT(v) v V הוכחה באינדוקציה. כאשר האלגוריתם מגיע לפתור בעיה מסוימת, כל התאים הרלוונטיים לפתרון כבר חושבו. האם האלגוריתם עובד? אז זהו, שלא... הוא נופל על הסדר השרירותי שבו מבצעים את הבדיקה. מספיק שיש מעגל אחד בגרף, והאלגוריתם נכשל תחת ההנחה של סעיף 2 מי הצלע הראשונה שיש לחשב במסלול? באופן פורמלי: לא ניתן להוכיח את טענה 2 כיוון שבגרף כללי לא קיים בהכרח סידור של הקודקודים, שמבטיח פתרון של השכנים לפני הקודקוד הנוכחי. הערה: כאשר בגרף אין מעגלים ניתן למיין את הגרף טופולוגית. במיון טופולוגי מבטיח שאם,u) (v E אזי u מופיע לפני v בכל מיון טופולוגי. ניתוח זמן ריצה למקרה הפרטי של גרף חסר מעגלים: מיון טופולוגי עם.O( V + E ) - DFS מס' השאילתות לאורך כל הלולאה של שלב 2 הינו O( E ) )תחת ניתוח פחת(, כמס' הקודקודים השכנים בגרף. בסה"כ זמן ריצה - V ).O( E + 30 אגודת הסטודנטים, בן גוריון

32 הרצאה מס' 10 26/4/2015 חלק שני בעיות קלאסיות במדעי-המחשב פרק 1 מסלולים קלים בגרפים בפרק זה נדון בבעיית המסלול הקל ביותר ממקור יחיד בגרף מכוון. קלט: גרף מכוון E,G = V, קודקוד.s V צריך למצוא: v). v V δ(s, הערה: כל הגרפים בפרק זה מכוונים, ממושקלים ופשוטים. הגדרה: δ: V V R δ(s, v) = {, s אינו נגיש מ v אחרת,משקל מסלול קל ביותר בין s ל v הערות ואבחנות: לעיתים, כאשר מתייחסים למקור יחיד s נסמן: (v.δ(v) def = δ(s, אם = 1 w(e) e :E אז המסלול הקל ביותר הוא המסלול הקצר ביותר, ואז הבעיה נפתרת בזמן.BFS ע"י O( V + E ) בהנחה שכל המשקלים בגרף חיוביים, אזי כל מסלול קל ביותר הינו מסלול פשוט )חסר מעגלים(. הסבר: נניח בשלילה כי p מסלול קל ביותר מ- s ל- v המכיל מעגל C. כיוון שהמשקלים חיוביים אזי > w(c) 0, ולכן > 0 (C w(p מסלול מ- ל s -v שמשקלו קטן ממש ממשקל p, בסתירה. 3. בהנחה שכל המשקלים אי-שליליים, כלומר ייתכנו צלעות במשקל 0, אזי לכל קודקוד v שנגיש מ- s קיים מסלול קל ביותר שהינו פשוט. יהא k p = v 1,, v מסלול קל ביותר מ- v 1 ל-,v k אזי כל תת-מסלול j,p = v i, v i+1,, v לכל i < j k 1, הינו מסלול קל ביותר בין v i ל- v. j הסבר: נניח בשלילה שלא, יהא p מסלול קל יותר הינו מסלול קל יותר מ- v 1 ל-,v p = v 1,, v i p k מ- v i ל-,v j אזי המסלול k v j,, v בסתירה למינימליות p. מסקנה: כל רישא של מסלול קל ביותר מהווה מסלול קל ביותר..δ הסבר: נובע מהגדרת. (u, v) E: δ(s, v) δ(s, u) + w(u, v).3.4.5 אינטואיציה לאלגוריתמיקה עבור בעיה זו כיוון שכל מסלול מ- s ל- v מסתיים בקשת (v,u), ומאבחנה מס' 4, מספיק להשוות בין משקלי המסלולים הקלים ביותר לשכנים של v ועוד משקל קשת (v,u). בסיס טכני לאלגוריתמים בפרק זה לכל v V נתחזק שדה.d(v) כל העדכונים של שדה זה, למעט האתחול, יבוצעו ע"י הפרוצדורה הבאה: Relax(u, v, w) 1. If d(v) > d(u) + w(u, v) 1. d(v) d(u) + w(u, v) עבור :(u, v) E 31 אגודת הסטודנטים, בן-גוריון

33 הגדרה: אלגוריתם מבוסס :Relax זהו אלגוריתם שמאתחל את השדות d(v) באופן הבא: d(s) = 0 v V {s}: d(v) = טענה נשמרת לאלגוריתם מבוסס Relax באלגוריתם מבוסס,Relax לאורך כל הריצה אם < d(v) אזי d(v) מכיל משקל של מסלול כלשהו מ- s ל- v, ובנוסף מתקיים (v.d(v) δ(s, ההוכחה בהמשך הפרק. Dijkstra(G, w, s) 1. v V {s}: d(v) 2. d(s) 0; S ; Q V 3. while (S V) 3. u Extract-min(Q) 3. S S {u} 3.3. (u, v) E, v S: 3.3.Relax(u, v, w) 4. Return v V: d(v) אלגוריתם Dijkstra הערות: S היא קבוצת קודקודים, s הוא קודקוד המקור. לא להתבלבל! S היא קבוצת קודקודים שעבורם הפתרון "מוכן". Q היא ערימת מינימום..3 הוכחת האלגוריתם טענה ראשית: בסיום הריצה v). v V: d(v) = δ(s, אבחנה: לאחר שליפת קודקוד v מ- Q לא מתרחשים שינויים נוספים בערכי.d(v) טענת עזר: בעת שליפת קודקוד u מ- Q מתקיים (u.d(u) = δ(s, הוכחת הטענה הראשית: לפי טענת העזר, בעת שליפת קודקוד מ- Q מתקיים עבורו הנדרש. לפי האבחנה אין שינוי בערך השדה d של הקודקוד לאחר-מכן, ולכן הנכונות נשמרת לכל הקודקודים )כל קודקוד נשלף באחת האיטרציות, והאלגוריתם עוצר רק לאחר שליפת כולם( עד סיום הריצה. הוכחת טענת העזר: באינדוקציה על סדר כניסת הקודקודים ל- S. בסיס עבור = 1 k, ע"פ האתחול s הוא הקודקוד הראשון שנכנס ל- S בעת הכניסה, = 0 d(s) ואכן.δ(s, s) = 0 הנחה נניח שעבור כל קודקוד x שנכנס ל- S לפני האיטרציה ה- k מתקיים (x.d(x) = δ(s, צעד יהא u הקודקוד שנשלף מ- Q ונכנס ל- S באיטרציה ה- k. המשך ההוכחה בהרצאה הבאה כי כמעט תם זמן ההרצאה. 32 אגודת הסטודנטים, בן גוריון

34 ניתוח זמן ריצה אתחול: מערך בגודל V.O( V ) - Relax על כל קשת מתבצעת פעולת,u) (v מתבצעת אך ורק על קשת Relax פעולת Q. V יחידה רק בשלב שבו נשלף u, ולכן יש O( E ) פעולות Relax לאורך ריצת האלגוריתם. פעולת Relax לוקחת (1)O, אך יכולה לגרור פעולת Decrease-key בערימת מינימום, שלוקחת.O( E log V ) בסה"כ הלולאה דורשת.O(log Q ) = O(log V ) בסה"כ זמן ריצה של האלגוריתם log V ).O( V + E הערת מחבר: אחרי מחשבה נוספת, הניתוח הזה שגוי. ישנן V שליפות מ- Q, כשכל אחת בזמן.O(log V ) לכן זמן הריצה הכולל הוא log V O V ) + ( E עבור מימוש עם ערימה בינארית. זה גם תואם לניתוח זמן הריצה כפי שמופיע בערך של אלגוריתם דייקסטרה בויקיפדיה. 33 אגודת הסטודנטים, בן-גוריון

35 הרצאה מס' 11 28/4/2015 המשך הרצאה קודמת הוכחת צעד האינדוקציה: נתבונן בקודקוד u רגע לפני שליפתו מ- Q והכנסתו ל- S. ברור כי u s כי s S ממקרה הבסיס. אנחנו רוצים לאתר את המסלול הקל ביותר מ- ל s -u. הנחה: u נגיש מ- s. יהא p מסלול קל ביותר מ- ל s -u. אזי קיימת קשת,x) (y p כך ש- S x.,s y אם קיימות כמה כאלו, ניקח את הראשונה. נתבונן בתת-המסלול מ- s ל- x נסמנו p, 1 ונתבונן בתת-המסלול מ- ל y -u נסמנו p. 2 נשים לב: =δ(s,u) w(p) = w(p 1 ) + w(x, y) + w(p 2 ) (*) = δ(s, x) + w(x, y) + w(p 2 ) = (**) ה"א = d(x) + w(x, y) + w(p2 ) d(x) + w(x, y) (***) d(y) (****) d(u) )*( מאבחנה מההרצאה קודמת p 1 תת-מסלול של מסלול קל ביותר, ולכן הוא בעצמו מסלול קל ביותר. )**( - 0 ) 2 w(p כי משקלי הצלעות חיוביים. בנוסף לא ידוע אם u y ולכן. 0 )***( לאחר ביצוע (y Relax(x, לא יכול להיות שערך (y d(x) + w(x, קטן ממש מ-( d(y..u והאלגוריתם בוחר לשלוף את y, u Q - )****( כלומר קיבלנו d(u).δ(s, (u נזכור כי דייקסטרה הוא אלגוריתם מבוסס,Relax כלומר d(u) הוא חסם עליון ל-( u δ(s, )הוכחה בהמשך(. מכך נקבל כי d(u),δ(s, (u = ובכך מסתיימת האינדוקציה. אלגוריתם גנרי )ממשק אבסטרקטי( לבעיית מסלול קל ביותר ממקור יחיד קלט: G, w, s אתחול: = 0 d(s) v V {s}: d(v) ; מהלך: 1. while (u, v) E: d(v) > d(u) + w(u, v) 1. Relax(u, v, w) 2. return v V: d(v) הערה: האלגוריתם לא מבצע הנחות על משקלי הצלעות, בניגוד לאלגוריתם דייקסטרה. טענה: אם האלגוריתם הגנרי עוצר אז v). v V: d(v) = δ(s, הוכחה: ניזכר בטענה הנשמרת שהוגדרה בהרצאה הקודמת. נניח בשלילה שהאלגוריתם הגנרי עצר אבל קיים קודקוד v V עבורו v).d(v) δ(s, מהטענה הנשמרת v).d(v) > δ(s, נביט במסלול קל ביותר y. = נשים לב כי ייתכן ש- v.d(y) δ(s, (y הקודקוד הראשון במסלול עבור y יהא ל- v. מ- s p האלגוריתם עצר ולכן מתקיים: (*) d(x) + w(x, y) d(y) d(y) δ(s, x) + w(x, y) (**) = δ(s, y) )*( מהנחת הטענה עבור x ומכך שהאלגוריתם עצר. 34 אגודת הסטודנטים, בן גוריון

ל s 36 )**( p הוא המסלול הקל ביותר ומטענת תת-המסלול. קיבלנו כי (y,d(y) δ(s, אבל (y d(y) δ(s, מההנחה בשלילה, ומהטענה הנשמרת יכול להתקיים רק y),d(y) > δ(s, בסתירה. הוכחת נכונות הטענה הנשמרת: באינדוקציה על מס' פעולות ה- Relax. בסיס לאחר 0 פעולות Relax מתקיים s) d(s) = 0 = δ(s, ולכל שאר הקודקודים d(v) = δ(s, v) הנחה נניח שהטענה מתקיימת עבור k פעולות ה- Relax הראשונות. צעד נוכיח את נכונות הטענה עבור פעולת ה- Relax ה- 1 + k. תהא (v,u) הקשת עליה מתבצעת פעולת ה- Relax ה- 1 + k. הערך היחיד שעלול להשתנות באיטרציה זו הוא ערכו של v: אם לא היה עדכון ב- Relax כל הערכים נותרו דומים ומההנחה נכונים. אם ערכו של v השתנה, אז בהכרח מהגדרת Relax מתקיים :u מה"א עבור.d(v) = d(u) + w(u, v) אם < d(u) אז d(u) הוא משקל של מסלול מ- -u..d(u) δ(s, u) הוכחה עבור v: ה"א יהא p המסלול עבורו d(u) w(p) = )קיים מההנחה(. אזי (v p,u) הינו מסלול מ- s ל- v המקיים d(v).w(p) + w(u, v) = d(u) + w(u, v) = נכון לכל קשת v) d(v) = d(u) + w(u, v) δ(s, u) + w(u, v) = δ(s, ובכך הסתיימה האינדוקציה. הוכחה נוספת לאלגוריתם Dijkstra המבוססת על האלגוריתם הגנרי טענה: דייקסטרה הוא מימוש של האלגוריתם הגנרי. כלומר, כאשר דייקסטרה עוצר מתקיים v). (u, v) E: d(v) d(u) + w(u, טענת עזר: יהא u i הקודקוד שנכנס ל- S בשלב ה- i. יהא d i ערך ) i d(u ברגע כניסתו ל- S. אזי: d 1 d 2 d V הוכחת הטענה: נביט בקשת (v,u) כלשהי בסיום אלגוריתם דייקסטרה. נחלק למקרים: מקרה א': u נכנס ל- S לפני v. לפי האלגוריתם בוצע (v Relax(u, ולכן (v,d(v) d(u) + w(u, והערך d(u) לא ישתנה יותר ממבנה האלגוריתם, אך d(v) יכול רק לקטון. מקרה ב': אם v נכנס ל- S לפני u, אזי d(u) d(v) ברגע הכניסה מכלל הבחירה של דייקסטרה. מכיוון שהמשקלים חיוביים אזי 0 v) w(u, ולכן ( ) v).d(v) d(u) + w(u, מטענת העזר נקבל כי d(u) לא יכול לקטון מעבר לערכו הסופי של,d(v) ולכן אי-השוויון )*( נשמר. 35 אגודת הסטודנטים, בן-גוריון

37 הרצאה מס' 12 3/5/2015 המשך ההרצאה הקודמת הוכחת טענת העזר: נביט בשני קודקודים שערכיהם בסדרה סמוכים: 1+i u. i, u צ"ל כי 1+i d. i d מהעובדה ש- u i נכנס ל- S לפני i+1 u ידוע שבזמן האיטרציה ה- i מתקיים ) i+1.d i = d(u i ) d(u נחלק למקרים: מקרה א': אם u) i, u 1+i ) E אז אין ל- 1+i u אפשרות להשתנות באיטרציה ה- 1 + i, ואז השוויון נשמר. מקרה ב': אם u) i, u 1+i ) E אבל לא היה עדכון ב- Relax, המקרה דומה. מקרה ג': אם (u i, u i+1 ) E והיה עדכון ב- Relax, אזי. d i+1 = d(u i+1 ) = d(u i ) + w(u i, u i+1 ) d(u i ) def = d i 0 סיכום ההוכחה: הראינו שאלגוריתם דייקסטרה הינו מימוש של האלגוריתם הגנרי. לכן, מהידע שאלגוריתם דייקסטרה עוצר, ומטענת הנכונות של האלגוריתם הגנרי, נובעת נכונותו של אלגוריתם דייקסטרה. הגדרה: עץ מכוון מושרש בקודקוד s הינו גרף מכוון וחסר מעגלים שבו קיים מסלול יחיד מ- s לכל קודקוד אחר בעץ. הגדרה: עץ מסלולים זולים ביותר T מקודקוד s של הגרף E G, =,V הינו תת-גרף של G שהינו עץ מכוון מושרש ב- s, ולכל v V מובטח ש- P, sv כלומר המסלול היחיד בין s ל- ב v -T, הינו מסלול קל ביותר בין s ל- ב v -G. נשים לב כי ייתכנו כמה מסלולים קלים ביותר ב- G. ישנה מוטיבציה למצוא לא רק את משקל המסלול הקל ביותר, אלא גם לשחזר אותו. לצורך כך נבצע כמה התאמות קלות לאלגוריתם דייקסטרה: האלגוריתם יתחזק מערך בשם π. בסוף הריצה, המערך הזה יכיל לכל v V את ה"אבא" שלו במסלול. באתחול, נכניס nil לכל התאים במערך π, כולל.π(s) נשנה את :Relax.3 Relax(u, v, w) 1. If d(v) > d(u) + w(u, v) 1. d(v) d(u) + w(u, v) 1. π(v) u טענה: בסיום האלגוריתם הגנרי הגרף {s}} T = V, E = {(π(v), v): v V הינו עץ מסלולים זולים ביותר. טענת עזר: יהא v קודקוד שקיבל את ערכו הסופי (v d(v) = δ(s, בפעולת Relax עם הקודקוד u, אזי בהכרח u).d(u) = δ(s, הוכחת טענת העזר: 36 אגודת הסטודנטים, בן גוריון

38 (*) δ(s, u) + w(u, v) δ(s, v) = d(v) (**) (***) = d(u) + w(u, v) δ(s, u) + w(u, v) d(u) = δ(s, u) )*( טענה בסיסית. )**( קיבל את ערכו בביצוע Relax עם u. )***( טענת חסם עליון. הוכחת הטענה: נגדיר: } V.V = {v: d(v) = δ(s, v)}, E = {(π(v), v ): v נוכיח שבכל שלב E T = V, הינו עץ מסלול זולים ביותר על V. למה זה מוכיח את הטענה? כי ידוע שבסיום האלגוריתם הגנרי, (v v. :V d(v) = δ(s, ההוכחה באינדוקציה על סדר קבלת הערך הסופי של הקודקודים. בסיס הקודקוד הראשון שמקבל את ערכו )כבר באתחול( הינו s. בשלב זה,π(s) = nil אזי,{s} T = הינו עץ מסלולים זולים על s באופן ריק. הנחה נניח שכל k הקודקודים הראשונים שקיבלו את ערכם הסופי מקיימים את הטענה. צעד יהא v הקודקוד שמקבל את ערכו הסופי באיטרציה ה- 1 + k. אזי באיטרציה הזו v קיבל את ערכו ע"י ביצוע Relax עם π(v).u = מטענת העזר u) d(u) = δ(s, ולכן V,u ומתקיימת לגביו הנחת האינדוקציה )קיים לו עץ מסלולים זולים ביותר(. למעשה הוספנו את הקשת (v,u) לעץ הקודם, הקשת מחברת קודקוד חדש ולכן לא סוגרת מעגל, כל מסלול מ- s ל- v בעץ חייב לעבור דרך (v,u), מהנחת האינדוקציה קיים מסלול יחיד מ- ל s -u ולכן קיים כעת מסלול יחיד מ- ל s -v. יהא P sv המסלול היחיד מ- s v).t sv ) = d(u) + w(u, v) = δ(s, u) + w(u, v) (*) = d(v) = δ(s, מתקיים.w(P לכן ל- v ב- בהכרח P sv מסלול קל ביותר. )*( ידוע ש- u נתן את ערכו ל- v. כיוון שבסיום הריצה ידוע שלכל קודקוד מתקיים השוויון, אז T הוא עץ מסלולים זולים ביותר על כל V. מה קורה באלגוריתם דייקסטרה כאשר מזניחים את ההנחה שכל המשקלים חיוביים? האלגוריתם נכשל... זה נובע מכך שהליבה הרעיונית של דייקסטרה נכשלת העובדה שכל קודקוד מדבר עם שכניו פעם אחת. טענה: קיים מסלול זול ביותר מ- s ל- v אם"ם לא קיימים מעגלים במשקל שלילי הנגישים מ- s על מסלול כלשהו. הוכחה: ( ) יהי P מסלול זול ביותר מ- s ל- v במשקל w. אם יש מעגל שלילי, הנגיש מ- s, אזי כל מסלול שכולל אותו ניתן להרחיב ככל שנרצה ע"י סיבוב חוזר במעגל, עד שערכו של המסלול המתקבל יהיה קטן ממש מ- w, בסתירה. ( ) נניח כי קיים מעגל שלילי נגיש, אזי כל סיבוב במעגל יקטין את ערך המסלול, ולכן לא קיים מסלול קל ביותר. אבחנה: גם תחת ההנחה שייתכנו משקלים שליליים, קיים מסלול קל ביותר שהינו פשוט. כל אלגוריתם שטוען שהוא פותר את בעיית מסלול קל ביותר באופן כללי חייב לספק מנגנון לזיהוי מעגלים שליליים, בנוסף למנגנון חישוב המסלולים. 37 אגודת הסטודנטים, בן-גוריון