גרפים אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 הגדרה: מגן דוגמאות: זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב.

Σχετικά έγγραφα
מתמטיקה בדידה תרגול מס' 13

שדות תזכורת: פולינום ממעלה 2 או 3 מעל שדה הוא פריק אם ורק אם יש לו שורש בשדה. שקיימים 5 מספרים שלמים שונים , ראשוני. שעבורם

פתרון תרגיל 5 מבוא ללוגיקה ותורת הקבוצות, סתיו תשע"ד

ל הזכויות שמורות לדפנה וסטרייך

Logic and Set Theory for Comp. Sci.

logn) = nlog. log(2n

חורף תש''ע פתרון בחינה סופית מועד א'

כלליים זמן: S מחסנית, top(s) ראש המחסנית. (Depth First Search) For each unmarked DFS(v) / BFS(v) רקורסיבי. אלגוריתם :BFS

לוגיקה ותורת הקבוצות פתרון תרגיל בית 4 אביב תשע"ו (2016)

פתרון תרגיל מרחבים וקטורים. x = s t ולכן. ur uur נסמן, ur uur לכן U הוא. ur uur. ur uur

יסודות לוגיקה ותורת הקבוצות למערכות מידע (סמסטר ב 2012)

פתרון תרגיל 8. מרחבים וקטורים פרישה, תלות \ אי-תלות לינארית, בסיס ומימד ... ( ) ( ) ( ) = L. uuruuruur. { v,v,v ( ) ( ) ( ) ( )

לוגיקה ותורת הקבוצות פתרון תרגיל בית 8 חורף תשע"ו ( ) ... חלק ראשון: שאלות שאינן להגשה נפריד למקרים:

אלגוריתמים בתורת הגרפים חלק ראשון

תרגיל 13 משפטי רול ולגראנז הערות

אלגוריתמים בתורת הגרפים חלק שני

gcd 24,15 = 3 3 =

תורת הגרפים - סימונים

' 2 סמ ליגרת ןורתפ םיפרגה תרותב םימתירוגלא דדצ 1 : הלאש ןורתפ רבסה תורעה

דף פתרונות 7 נושא: תחשיב הפסוקים: צורה דיסיונקטיבית נורמלית, מערכת קשרים שלמה, עקביות

( )( ) ( ) f : B C היא פונקציה חח"ע ועל מכיוון שהיא מוגדרת ע"י. מכיוון ש f היא פונקציהאז )) 2 ( ( = ) ( ( )) היא פונקציה חח"ע אז ועל פי הגדרת

. {e M: x e} מתקיים = 1 x X Y

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

אלגברה ליניארית (1) - תרגיל 6

פרק 8: עצים. .(Tree) במשפטים הגדרה: גרף ללא מעגלים נקרא יער. דוגמה 8.1: תרגילים: הקודקודים 2 ו- 6 בדוגמה הוא ).

אלגוריתמים / תרגיל #1

[ ] Observability, Controllability תרגול 6. ( t) t t קונטרולבילית H למימדים!!) והאובז' דוגמא: x. נשתמש בעובדה ש ) SS rank( S) = rank( עבור מטריצה m

לדוגמה: במפורט: x C. ,a,7 ו- 13. כלומר בקיצור

c ארזים 26 בינואר משפט ברנסייד פתירה. Cl (z) = G / Cent (z) = q b r 2 הצגות ממשיות V = V 0 R C אזי מקבלים הצגה מרוכבת G GL R (V 0 ) GL C (V )

משוואות רקורסיביות רקורסיה זו משוואה או אי שוויון אשר מתארת פונקציה בעזרת ערכי הפונקציה על ארגומנטים קטנים. למשל: יונתן יניב, דוד וייץ

תכנון אלגוריתמים 2016 עבודה 1 שאלה 1 פתרון נתונות שתי בעיות. יש למצוא: אורך מסלול קצר ביותר המתחיל באחד מן הקודקודים s 1,..., s k ומסתיים ב t.

מתמטיקה בדידה תרגול מס' 5

I. גבולות. x 0. מתקיים L < ε. lim אם ורק אם. ( x) = 1. lim = 1. lim. x x ( ) הפונקציה נגזרות Δ 0. x Δx

x a x n D f (iii) x n a ,Cauchy

הגדרה: קבוצת פעילויות חוקית היא קבוצה בה כל שתי פעילויות

תורישק :תורישקה תייעבב בוש ןייענ?t- t ל s- s מ לולסמ שי םאה 2

brookal/logic.html לוגיקה מתמטית תרגיל אלון ברוק

{ : Halts on every input}

גבול ורציפות של פונקציה סקלרית שאלות נוספות

שאלה 1 V AB פתרון AB 30 R3 20 R

= 2. + sin(240 ) = = 3 ( tan(α) = 5 2 = sin(α) = sin(α) = 5. os(α) = + c ot(α) = π)) sin( 60 ) sin( 60 ) sin(

אלגברה מודרנית פתרון שיעורי בית 6

תרגול מס' 1 3 בנובמבר 2012

אלגברה לינארית (1) - פתרון תרגיל 11

מושגים: קשיר. o בעל 1 קשתות בדיוק.

תרגול 1 חזרה טורי פורייה והתמרות אינטגרליות חורף תשע"ב זהויות טריגונומטריות

מתכנס בהחלט אם n n=1 a. k=m. k=m a k n n שקטן מאפסילון. אם קח, ניקח את ה- N שאנחנו. sin 2n מתכנס משום ש- n=1 n. ( 1) n 1

קבוצה היא שם כללי לתיאור אוסף כלשהו של איברים.

מבני נתונים ואלגוריתמים תרגול #8-9

טענה חשובה : העתקה לינארית הינה חד חד ערכית האפס ב- הוא הוקטור היחיד שמועתק לוקטור אפס של. נקבל מחד חד הערכיות כי בהכרח.

1 תוחלת מותנה. c ארזים 3 במאי G מדיד לפי Y.1 E (X1 A ) = E (Y 1 A )

חידה לחימום. כתבו תכappleית מחשב, המקבלת כקלט את M ו- N, מחליטה האם ברצוappleה להיות השחקן הפותח או השחקן השappleי, ותשחק כך שהיא תappleצח תמיד.

מבחן מועד ב' בהצלחה! אנא קיראו היטב את ההוראות שלהלן: ודאו כי כל עמודי הבחינה נמצאים בידכם.

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ב (2012) דפי עזר

אלגוריתמים סמסטר א' תשע"ב מרצים: פרופ' עמוס פיאט ופרופ' מיכה שריר. מתרגלים: שי ורדי ואדם שפר.

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

פתרון תרגיל 6 ממשוואות למבנים אלגברה למדעי ההוראה.

תורת הקבוצות תרגיל בית 2 פתרונות

רשימת משפטים והגדרות

סדרות - תרגילים הכנה לבגרות 5 יח"ל

תרגילים באמצעות Q. תרגיל 2 CD,BF,AE הם גבהים במשולש .ABC הקטעים. ABC D נמצאת על המעגל בין A ל- C כך ש-. AD BF ABC FME

חשבון אינפיניטסימלי 1 סיכום הרצאות באוניברסיטה חיפה, חוג לסטטיסטיקה.

הגדרה: מצבים k -בני-הפרדה

חשבון אינפיניטסימלי 1

רשימת בעיות בסיבוכיות

סיכום לינארית 1 28 בינואר 2010 מרצה: יבגני סטרחוב מתרגלת: גילי שול אין המרצה או המתרגלת קשורים לסיכום זה בשום דרך.

אלגברה ליניארית 1 א' פתרון 2

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

(ספר לימוד שאלון )

תוכן עניינים I בעיות מיון 2 1 סימון אסימפטוטי... 2 II מבני נתונים 20 8 מבני נתונים מופשטים משפט האב גרפים... 37

אלגוריתמים 1, סמסטר אביב 2017

אוטומט סופי דטרמיניסטי מוגדר ע"י החמישייה:

מבני נתונים ויעילות אלגוריתמים

מודלים חישוביים תרגולמס 5

3-9 - a < x < a, a < x < a

תשובות מלאות לבחינת הבגרות במתמטיקה מועד חורף תשע"א, מיום 31/1/2011 שאלון: מוצע על ידי בית הספר לבגרות ולפסיכומטרי של אבירם פלדמן.

co ארזים 3 במרץ 2016

לוגיקה ותורת הקבוצות מבחן סופי אביב תשע"ד (2014) דפי עזר

מינימיזציה של DFA מינימיזציה של הקנוני שאותה ראינו בסעיף הקודם. בנוסף, נוכיח את יחידות האוטומט המינימלי בכך שנראה שכל אוטומט על ידי שינוי שמות

1 סכום ישר של תת מרחבים

תרגול פעולות מומצאות 3

אלגברה ליניארית 1 א' פתרון 7

אלגברה לינארית מטריצות מטריצות הפיכות

אינפי - 1 תרגול בינואר 2012

פתרון תרגיל בית 6 מבוא לתורת החבורות סמסטר א תשע ז

מודלים חישוביים פתרון תרגיל 5

מתמטיקה בדידה תרגול מס' 12

תורת הגרפים על פי הרצאות מאת פרופ' אהוד פרידגוט 11 ביולי 2010

מבני נתונים אדמיניסטרציה ד"ר אלכס סמורודניצקי, רוס 210, שני 5:30 4:15. ציון:

תרגיל 7 פונקציות טריגונומטריות הערות

תרגול מס' 6 פתרון מערכת משוואות ליניארית

תורת המספרים 1 פירוק לגורמים ראשוניים סיכום הגדרות טענות ומשפטים אביב הגדרות 1.2 טענות

מתמטיקה בדידה תרגול מס' 2

קיום ויחידות פתרונות למשוואות דיפרנציאליות

הרצאה תרגילים סמינר תורת המספרים, סמסטר אביב פרופ' יעקב ורשבסקי

אלגברה לינארית 1 יובל קפלן

אלגוריתמים בתורת הגרפים חלק רביעי

חידה לחימום. כתבו תכנית שהקלט שלה הוא מספר שלם n,

התפלגות χ: Analyze. Non parametric test

מודלים חישוביים מבחן מועד א', סמסטר א' תשע''ה (2015)

Transcript:

אלגוריתמים בתורת הגרפים הרצאה 1 גיא פלג 15 במרץ 2012 אתר הקורס.clickit3 מרצה : בני מוניץ הציון: מבחן סופי: 80% שיעורי בית 20% ואפשרות לבוחן אמצע 20% מגן גרפים הגדרה: תהי V קבוצה סופית לא ריקה. ותהי E קבוצה של זוגות איברים שונים מתוך V. 1. הזוג (E G =,V) נקרא גרף לא מכוון אם קבוצה Eזוגות לא סודרים 2. הזוג (E G =,V) נקרא גרף מכוון, אם E קבוצה של זוגות סדורים. V (vertices) E(edges) {}}{{}}{ G = {a, b, c, d}, {{a, b} {b, d}} דוגמאות: א) ב) זוגות לא סדורים כיוון שבקבוצה סדר לא חשוב. G 2 = ({a, b, c, d}, {(a, b), (b, d)}) זוגות סדורים כיוון שסוגרים עגולים מסמנים סדרה כלומר מסמל שסדר חשוב. 1

{a, b} = {b, a} (a, b) (b, a) איברי הקבוצה E נקראים צלעות (או קשתות) איברי V נקראים צמתים (קדקודים) הגדרה: 1. יהי G גרף לא מכוון, נאמר ששני צמתים,u v V הם שכנים (או סמוכים) אם קיימת צלע המחברת בינהם (E,u}) {v.2 יהי G גרף מכוון. נאמר ש v V הוא שכן של uאם V (u, v) E 3. יהי Gגרף לא מכוון. הדרגה של צומת u V היא מספר השכנים של u. סימון של דרגה deg G (u) = Γ (u) כאשר (u) Γ היא קבוצת השכנים של u 4. יהי (E G =,V) גרף מכוון. דרגת כניסה של u V היא מספר הקשתות הנכנסות אל צומת u ומסמנים indeg G (u) דרגת יציאה של צומת u היא מספר הקשתות היוצאות מ u ומסמנים outdeg G (u) deg (u) = indeg (u) + outdeg (u) והדרגה מחושבת כך ולפי הדוגמא: הראשונה: a ו b שכנים. d} deg G1 (b) = 2 Γ (b) = {a, בשנייה: bהוא שכן של a אך a לא שכן של.deg (b) = 2 outdeg(b) = 1 indeg(b) = 1.b 2

משפט "משפט לחיצת ידיים" או "משפט ראשון בתורת הגרפים" בגרף לא מכוון (E G =,V) מתקיים deg (u) = 2 E u V בדוגמא G1 deg G1 (u) = deg (a) + deg (b) + deg (c) + deg (d) = 1 + 2 + 0 + 1 = 4 = 2 E u V הוכחה: נשים בכניסה ) j v i (v i, e הוא קצה של.e j נספור כמה כוכביות יש * יש לנו במערך. 1. בכל עמודה יש בדיוק 2 כוכביות לכן סך הכל יש 2 m = 2 E 2. בשורה vית i יש בדיוק ) i deg v) כוכביות. ולכן סה"כ מספר * n deg (v i ) i=1 מש"ל דוגמא: 3

מסקנה ממשפט: בגרף לא מכוון, מספר הצמתים בעלי דרגה אי זוגית חייב להיות זוגי. הוכחה: zogi must be zogi zogi {}}{ 2 E = {}}{{}}{ deg (u) = deg (u) + deg (v) u V 2/deg(u) u V 2 /deg(v) v V סכום מספרים אי זוגיים אם כמותם היא זוגית. (2x 1 + 1) + (2x 2 + 1) +... (2x k + 1) k times k must be even הגדרה: יהי E) G = (V, גרף. הגרף המשלים של G הוא הגרף שמסומן ע"י ) E G = (,V כאשר שני צמתים יהיו שכנים ב G הם אינן שכנים בG E + E = { ( v 2 ),lo mhovan 2 ( V 2 ),mhovan } דוגמא: 4

הגדרה: גרף לא מכוון בו כל הצמתים מחוברים (לכולם) נקרא גרף שלם (רן מספר הצמתים הוא n אז נסמן גרף זה על די K). n גרף ריק K 4 = N 4 גרף ריק מסומן N n הגדרה: גרף לא (מכוון (E G =,V) ( נקרא דו צדדי אם ניתן לחלק את צמתי הגרף לשתי קבוצות. V1 V φ=2 כך שכל צלע בהכרח מחברת צמתים מקבוצות שונות נסמן גרף כזה V 1 V 2=V V 1, V 2 G =(V 1, V 2, E) דוגמא: האם G 1 הוא גףר דו צדדי? 5

הגדרה: גרף דו צדדי (E G = V) 1, V 2, הוא גרף דו צדדי שלם אם קיימות הצלעות האפשריות. K s,t אז נסמן V 2 = t V 1 = s הגדרה: יהי (E G =,V) גרף לא מכוון G נקרא רגולרי אם לכל צומת מספר שכנים(כל הדרגות שוות). אם מספר השענים הוא d, אז G גם נקרא d רגולרי דוגמאות: K n גרף 1) n ) רגולרי Nגרף n ( 0 ) רגולרי C (מעגל) 5 2 רגולרי. 6

הגדרה: יהי E) G = (V, גרף..1 סדרה של קודקודים ) p (V 0, V 1..., V כך שE ((v i, v i+1 ) E) {v i, v i+1 } לכל i p 1 i 0 נקרא טיול. (כל שתי קודקדים הם צלע) ואומרים ש Vהם 0, V p קודקודי קצה. ושאר הקודודים הם קודקודים פנימיים 2. טיול בו כל הצלעות שונות זו מזו. נקרא מסלול. אם במסלול כל הצמתים שונים זה מזה אז המסלול הוא מסלול פשוט..3 אם במסלול ) p v )מתקיים 0,... v v 0 = v p אז המסלול נקרא מעגל. אם במעגל כל הצמתים שונים זה מזה חוץ מקודקודי קצה כמובן. אזי זה מעגל פשוט. (1, 3, 4, 5, 3, 2, 1) מעגל לא פשוט. מעגל הוא לא פשוט אם יש כמה מעגלים פשוטים בתוכו. 7

אלגוריתמים בתורת הגרפים הרצאה 2 גיא פלג 22 במרץ 2012 הגדרה: 1. המרחק בין u ל,u) v V ) v מוגדר כאורך מינימלי של מסלול מ u ל v נסמן (v δ,u) נסכים (x = δ,x) 0. אם אין מסלול מ u ל v אז נגדיר את המרחק בין δ (u, v) = v ל u 2. קוטר של גרף הוא המרחק המקסמלי בגרף. דוגמא δ (a, c) = 2 δ (a, d) = 1... δ (c, c) = 0 Diam (G) = 2 1

הגדרה: גרף לא מכוון נקרא קשיר אם יש מסלול בין כל זוג צמתים. דוגמא: הערה: גרף G קשיר < (G). D הגדרה: גרף מכוון נקרא קשיר חזק (קשיר היטב ( אם לכל שני צמתים,u v V יש מסלול מ u אל v וגם יש מסלול מ v אל u. דוגמא: = a) δ (b, לא קשיר חזק יהי (E G =,V) גרף לא מכוון. נגדיר יחס על קבוצת צמתי הגרף V באופן הבא v ל קיים מסלול מ u v u = 0 x) δ (x, רפלקסיבי היות ו זהו יחס שקילות, אזי הוא משרה חלוקה של V למחלקות שקילות אותן נקרא רכיבי קשירות של הגרף.(כל הצמתים שניתן להגיע אליהם מהווים מחלקה) 2

u יש מסלול אם (E Gגרף =,V) מכוון אז מגדירים יחס (שתי תילדות) הבא: v מ u אל v וגם יש מסלול מ v אל u זהו יחס שקילות של נקרא רכיבי קשירות (רק"ח) פעולות על גרפים הגדרה: יהי G גרף, אם x V אז {x} G \ הוא הגרף המתקבל מ G על ידי השמטת צומת x וכל הצלעות החלות בו..G \ V = φ אם e E אז G \ e הוא גרף המתקבל מ על ידי השמטת צלע e. משפט: בגרף קשיר לא מכוון עם n צמתים. אז יש לפחות (1 n) צלעות. הוכחה: יהי G גרף לא מכוון עם n צמתים ו מספר צלעות m נוכיח כי אם 1 n m < אז ב G יש לפחות n m רכיבי קשירות. נוכיח באינדוקציה אם 1 n m < אז ב Gיש לפחות n m רכיבי קשירות (אי אפשר להכויח טענה באינדוקציה אם זה לא תלוי במספר טבעי) הוכחה(באינדוקציה על m מספר הצלעות): בסיס האינדוקציה: = 0 m כל צומת הוא רכיב קשירות.n m = n 0 = n צעד האינדוקציה: נניח כי הטענה נכנוה עבור (1 m), אם בגרף G יש n צמתים ו 1) (m צלעות, אז ב G יש לפחות. 1) (m n m + 1 = n רכיבי קשירות. (ה"א הנחת האינדוקציה) נוכיח נכונות הטענה עבור m. ניקח גרף G בעל n צמתים ו m צלעות. צ"ל כי יש G לפחות n m רכיבי קשירות.(ר"ק) ניקח צלע כלשהי ב (G) e E ונמחק אותה נקבל גרף חדש {e} H = G \ יש לנו n צמתים ו 1 m צלעות. אז לפי הנחת האינדוקציה ב H יש לפחות + 1 m n רכיבי קשירות. 3

נחזיר צלע e ונקבל גרף G יש לנו 2 מקרים א) e היית מחברת שני צמתים באותו ר"ק של. H אזי ב G יש אותו מספר ר"ק כמו ב n m n m + 1 והמספר הזה H ב)צלע e הייתה מחברת צמתים מרכיבי קשירות שונים של H אזי ב G יש ר"ק אחד לפחות מזה של H. (n m + 1) + 1 = n m משפט: בגרף קשיר לא מכוון עם n צמתים יש לפחות (1 n) צלעות a b b a graph kashir {}}{ a E V 1 {}}{ b E < V 1 {}}{ b graph not kashir {}}{ a מסקנה: אם בגרף לא מכוון 1 V E < הגרף לא קשיר משפט: בגרף לא מכוון בעל V n = V E = m.ɛ n = יש מעגל. הוכחה: (באינדוקציה על מספר הצמתים ( n : בסיס האינדוקציה: = 3 n צעד האינדוקציה: נניח שהטענה נכונה עבור n ז"א בגרף לא מכוון עם n צמתים ו n m צלעות יש מעגל. (הנחת האינדוקציה ( נוכיח את הטענה עבור + 1 n. יש לנו גרף (E G =,V) לא מכוון עם (1 + n) צמתים ו n) + (1 m צלעות. צ"ל כי ב G יש מעגל. 4

מקרה א: אם ב G יש צומת מבודד ( deg (x) = (0 x V אז נתבונן בגרף חדש H = G \ {x} V (H) = n E (H) = m n + 1 n = V (H) ע"פ הנחת האינדוקציה בגרף H יש מעגל. ב G יש מעגל. מש"ל מקרה ב: ב G אין צמתים מבודדים. אבל יש צומת (G) y V כך ש: = 1 (y) degנתבונן בגרף {y} I = G \ V (I) = n E (I) = E (G) 1 = n+1 {}}{ m 1 n + 1 1 = n = V (I) ולפי הנחת האינדוקציה בגרף I יש מעגל. כמובן כשנחזיר y חזרה (כדי לקבל G חזרה) לא נפגע במעגלים הקיים ב I גם ב G יש מעגל ומש"ל. מקרה ג: לכל (G) u V מתקיים (u) deg 2 ניקח צומת כלשהו (G) x V ונצא לטיול ונקפיד על כלל אחד לא לחזור חזרה לצומת שכרגע ביקרנו אותו. אף פעם לא ניתקע כי לכל צומת יש לפחות שני שכנים. היות והגרף סופי בטוח נחזור לצומת שכבר היינו בו (וזה יסגור מעגל). (לפי עקרון שובך היונים) תרגיל: כמה צלעות יש בגרף לא מכוון קשיר וחסר מעגלים? פתרון:( 1 )הגרף קשיר E, n 1 ( 2 )הגרף חסר מעגלים E. n מ n 1 1,2. E = הערה: גרף כזה נקרא עץ 5

הגדרה: גרף לא מכוון חסר מעגלים נקרא יער. יער קשיר נקרא עץ צומת בעץ שדרגתו 1 נקרא עלה. טענה: בעץ בעל לפחות שני צמתים יש עלה. הוכחה: ניצא לטיול בעץ מצומת כלשהו ונקפיד לא לחזור מייד אל הצומת ממנו באנו. זה עתה. לא ייתכן שנבקר באותו צומת פעמיים כי אז יהיה מעגל. וזה סתירה לנתון. שיש לנו עץ. היות וגרף הוא סופי אז "ניתקע". בצומת והוא עלה. הגדרה: נאמר כי ) E G = (V, הוא תת גרף של גרף E).G = (V, אם E E,V V ולכל צלע E {u, v} מתקיים V. u, v תת גרף G של G ייקרא תת גרף פורש של G אם. V = V G = {{a, b, c, d, e, f}, {e, f}} G = {{a, b}, φ} tat graph H = {{a, b, c, d, e, f}, {{a, c}}} tat graph pores הגדרה: תת גרף פורש של G שהוא עץ פורש נקרא עץ פורש של G. בדוגמא: לG אין עצים פורשים תנאי הכרחי שלגרף יהיה עץ פורש צריך להיות קשיר. דוגמא 6

שאלה: כמה עצים פורשים יש ל K? n משפט cayley) :(1889 מספר עצים פורשים של K n הוא 2 n n הוכחה( 1918 :(prufer נסמן על ידי T את קבוצת העצים הפורשים (המתוייגים: לכל קודקוד יש שם).ונסמן על ידי קבוצה S קבוצת הסדרות ) n 2 (a 1, a 2... a של מספרים מהתחום הבא: n}... 2,.{1, 7

אלגוריתמים בתורת הגרפים הרצאה 3 גיא פלג 7 במאי 2012 משפט קיילי: מספר העצים פורשים של K n הוא 2 n n. הוכחה: נסמן ע"י T קבוצת העצים הפורשים ונסמן ע"י S קבוצת סדרות באורך (2 n) מעל א"ב n},... 2, {1,. נמצא.f : T S פונקציה f היא חח"ע ערכית ) 2 x 1 x 2 f (x 2 ) f (x 1.. T ˆT 2. for 1 i n 2 3. do find u i := min 4. u i Γ (u i ) 5. ˆT ˆT \ {ui } 6. return (a 1,... a n 2 ) { x : x is a leaf of ˆT } אלגוריתם 1 לחישוב f : T S 1

אלגוריתם g : S T 2 A (a 1, a 2,..., a n 2 ).1 B {1, 2,..., n}.2 F N n.3 for 1 i n 2.4 do find u := min {x x B \ A}.5 F F {{a i, u i }}.6 A A \ {a i }.7 B B \ {u i }.8 B הם האיברים היחדים שיש ב x, y כאשר,F F {{x, y}},.9.10 החזר F f (x) = y כך ש: x X קיים y Y על לכל f : x y משפט: f : x y חח"ע ועל קיימת g : y x כך ש: f g : Y Y g f : X X g f (x) = g (f (x)) = x g = f 1 תרגיל בית: להוכיח שאלגוריתם 2 מביא פונקציה הפוכה לאלגוריתם אחד (g f) (T ) = T f g (S) = S 2

הגדרה: נתונים ) i i = 1, 2 G = (V i, E גרפים לא מכוונים אם קיימת f : v 1 v 2 א) f היא על v) ( v V 2 u V 1 : f (u) = ב) f היא חח"ע (v)) ( u, v V 1, u v f (u) f ג) {u, v} E 1 {f (u), f (v)} E 2 אז נאמר כי G 1 ו G 2 הם איזוורפיים. ו G נקראת איזומורפיזם. דוגמא: הגרפים הנ"ל לא איזומורפים יש להן סדרות דרגה שונות. הערה: תנאי הכרחי לכך שהגרפים איזומורפים הוא שסדרות שלהם זהות עד כדי פרמוטציה. שאלה: כמה עצים פורשים יש (לא מתוייגים) לגרף שלם Kע"פ n משפט קיילי יש 3 עצים פורשים מתוייגים. 3

מסלולים מעגלים אויילר\המילטון בעיית הגשרים של קניגסברג הגדרה: יהי (E G =,V) גרף מסלול (לא בהכרח פשוט) שמבקר בכל צלע בדיוק פעם אחת נקרא מסלול אויילר בדומה, מעגל (לא בהכרח פשוט) שמבקר בכל מלע בדיוק פעם אחת נקרא מעגל אויילר. משפט אויילר 1736: יהי G גרף קשיר לא מכוון ב G יש 1. מעגל אויילר כל הדרגות בגרף הן זוגיות. 2. יהי G גרף מכוון (וקשיר חזק) ב G יש מעגל אויילר לכל u V indeg(u) = outdeg(u) הוכחה: ( )נתון כי קיים ב G מעגל אויילר יהי x צומת כלשהו בגרף יהי x צומת כלשהו בגרף, כל מעבר דרך x במעגל תורם 2 לדרגתו (פעם אחת נכנסים ופעם אחת יוצאים ( בנוסף מכיוון שזה מעגל אויילר והוא מבקר בכל הצלעות פעם אחת בדיוק אז יספרו כל הצלעות שחלות ב x ולכן (x) deg זוגית הטעון הנ"ל נכון גם לצומת ההתחלה והסוף כל מעבר Z תורם 2 לדרגות בהתחלה יש תרומה של 1 (סוגרים מעגל). 4

נתון כי כל הדרות זוגיות נוכיח כי קיים מעגל אויילר נעזר בlemma (care hierhozer)( ) :lemma יהי (E G =,V) שכל דרגותיו זוגיות אז כל צומת שדרגתו חיובית שייך למעגל כלשהו. הוכחה ללמה: יהי v 0 צות שדרגתו חיובית נמצא מ v 0 ונטייל בגרף באופן כלשהו תוך כדי שמירת הכלל שלא לחזור על אותה צלע פעמיים. היות ומספר הצלעות ברכיב קשירות של v 0 הוא סופי נגיע לצומת שממנו לא ניתן להמשיך את הטיול בלי לשבור את הכלל נגיד צומת x נראה כי x = v 0 אם v 0 x אז כל מעבר דרך x תורם 2 לדרגתו של x פרט לצעד האחרון שצרם 2/deg(x) בסתירה לנתון\\ לכן x = v 0 סגרנו מעגל. 5

אלגוריתמים בתורת הגרפים הרצאה 4 גיא פלג 16 באפריל 2012 תזכורת: משפט אוילר א) בגרף לא מכוון וקשיר יש מעגל אויילר כל הדרגות זוגיות ב) בגרף מכוון וקשיר יש מעגל אויילר לכל.indeg (v) = outdeg (v) v V מסקנה: בגרף קשיר לא מכוון יש מסלול אויילר יש בו 0 או 2 צמתים בעלי דרגה אי זוגית. הוכחה: ( )נתון שיש מסלול אויילר בגרף אם במקרה המסלול הזה הוא מעגל, (אויילר) אז לפי משפט אויילר כל הצמתים הם בעלי דרגה זוגית. אם לא זאת אומרת המסלול אויילר מתחיל בצומת x ומסתיים בצומת x) (y y אז טענה בדבר הזוגיות היא כמו במשפט, פרט לצומת ההתחלה x וצומת הסוף y (שדרתם בהכרח אי זוגית) ( ) אם יש 0 צמתים בעלי דרגה אי זוגית אז לפי המשפט קיים מעגל אויילר וסיימנו. נניח שיש שני צמתים בעלי דרגה אי זוגית,x y V נבצע רדוקציה. 1

לבעייה ידועה של גרף עם דרגות זוגיות נוסיף צומת חדש לגרף z צלעות {z,x}. {z,y} קיבלנו גרף חדש H שכל הדרגות בו זוגיות. deg H (Z) = 2 deg H (x) = deg G (x) + 1 = zogi deg H (y) = deg G (y) + 1 = zogi אזי לפי אלג' hierhozer נמצא מעגל אויילר בגרף H ב H נוריד ת צומת Z ואת הצלעות שלה. קיבלנו מסלול ב (y,..., x) G הגדרה: מעגל\מסלול שמבקר בכל צומת של גרף בדיוק פעם אחת. מעגל או מסלול המילטון. נקרא משפט (1960 (ore, תנאי מספיק. יהי E) G = (V, גרף לא מכוון, V n = 3 ולכל u, v V כך ש {u, v} / E מתקיים deg G (u) + deg G (v) n תנאי.ore אזי G הוא גרף המילטון. הערה: גרף המילטון = גרף שיש בו מעגל המילטון. גרף אויילר = גרף שיש בו מעגל אויילר. אם בגרף תנאי oreמתקיים אז בהכרח יש בו מעגל המילטון. וגרף קשיר הוכחה 1988) :(Aebertson 2

נניח ש G לא קשיר אז ניתן לחלק את צמתי הגרף לשני חלקים, V 2 V 1 כך שאין צלעות המחברות בין צמתי V 1 לבין אלה של V 2 נסמן V 2 = s V 1 = r אזי.r + s = n לכל צומת v V 1 deg (v) r 1 u V 2 deg (u) s 1 {u, v} / E naton {}}{ n deg (u)+deg (v) (r 1)+(s 1) = r +s 2 = n 2 מה הקוטר של מעגל המקיים תנאי ore 3

אלגוריתם Albertson) :(1988, 1. תתחיל מצומת כלשהו ועל ידי הוספת צמתים תבנה מסלול ארוך וארוך יותר עד שזה לא אפשרי (בלי לחזור על אותו צומת פעמיים). γ : v 1 v 2... v m 2. תבדוק האם v 1 ו vהם m שכנים? (a) אם הם לא שכנים אז לך ל (3) v 1 v 2... v m אז עצור ותדפיס מעגל המילטון v 1 m = n אם (b) {z, v k } E כך ש γ כך על v k וצומת γ אשר לא שייך ל z תמצא צומת (c) תחליף את המסלול במסלול בוארך + 1 m הבא: z v k... v m v 1... v k 1 (d) תבנה מסלול יותר ויתר ארוף עד שנתקעים (כמו ב ( 1 )) ותלך ל (2).3 תמצא צומת < k < m, v k 1 כך ש vו 1 vהם k שכנים ו k 1 v ו v m גם כן שכנים. תחליף γ בדבר הבא: v 1... v k 1 v m... v k (2, b) ותלך ל {v 1, v k } E γ : 1 2 5 6 4 2 5 6 1 γ : 3 4 2 3 6 1 3 4 2 1 6 5 (3) הוכחה לנכונות אלגוריתם על מנת להראות כי הוא נכון צריכים להראות שב (c.2) ניתן למצוא z כנדרש וב (3) ניתן למצוא v k 4

(c,2) יש לנו m. < n אזי קיים צומת x שלא שייך למסלול γ הראנו ש G קשיר ולכן ניתן להגיע מ x לכל הצמתים בגרף ובפרט לאלה שנמצאים על המסלול γ אזי קיים z (שלא שייך ל ( γ שניתן להגיע אליו מ x והוא מחובר למסלול. (3) ידוע ש v 1 ו v m ידוע שהם לא שכנים. deg (v m ) = s deg (v 1 ) = r לפי נתון תנאי r+s n ore היות ו γזהו מסלול שלא ניתן להארכה v 1 מחובר רק לצמתים על γ (אחרת הינו יכולים להאריך γמצד של ( v 1 אז כל שכנים של v 1 שייכים ל } m 1 v }באופן 2,..., v דומה vלצמתים m njucr מתוך אותה הקבוצה. וכל אחד מ r הצמתים המחוברים ל vקיים 1 צומת הקודם לו (משמאלו) על γ ואחד מהם חייב להיות שכן של v. m אם לא, אז v m מחובר לכל היותר ל deg (v m ) = S( )m {v m } {v 1 } (r 1) = = m 2 (r 1) = ore {}}{ n s + r m 2 + 1 = m 1 n 1 1 0 מסקנה (דירק( 1952,(Dirac ) G אזי n 2 יהי E) G = (V, גרף לא מכוון, V < n = 3 ולכל vמתקיים V (v) deg הוא גרף המילטון. הוכחה: לכל x, y V deg (x) + deg (y) n 2 + n 2 = n ובפרט זה מתקיים במקרה ש,x} {y / E ולכן הנכונות נובעת ממשפט ore 5

מטריצת שכנות הגדרה: יהי E) G = (V, נגדיר מטריצה בגודל V V באופן הבא { } A (G) i,j = 1,if i neigbhor of j 0, else A A = ( A 2) = בכפל מטריצות כמות המסלולים באורך 2. האלכסון הוא הדרגה. A k כל הטיולים על הגרף. גרף קשיר n 1 A 1 + A 2... + A n 2 +... + A אין אפס במסלולים. אזי קשיר. 6

d[u] Enqueue(Q, אלגוריתמים בתורת הגרפים הרצאה 5 גיא פלג 9 במאי 2012 אלגוריתם Bredth )חיפוש F irst Search)BF S לרוחב תחילה BF S (G, S(source)) 1. for each u V \ {s} 2. do color[u] W hite d[u] π[u] NIL 3. color[u] RED 4. d[s] 0 5. π [s] NIL 6. Q {S} 7. while Q φ do u head[q] for each v Γ (u) do if color[v ] = W hite then color[v ] red d [u] + 1 π [V ] u v) dequeue(q) color[u] Black 1

האלגוריתם מחפש מרחקים קצרים ביותר מצומת s לכל שאר הצמתים בגרף. דוגמא גרף 1 π-parent, d-distance. דוגמא 3 ביצוע במחשב של גרף בעזרת רשימה מקושרת. או מטריצת שכנות. אם גרף דליל עדיף רשימות מקשורות. אם גרף לא דליל עדיף מטריצה. דוגמא 2 נבצע ניתוח זמן ריצה של האלגוריתם: פעולות אתחול: שורות מ 1 עד 2 כולל מבצעים ) ( V.( V 1) 3 = θ שורות מ 3 עד 6 (1) θ. לאחר האתחול, אף קודקוד לעולם שוב אינו נצבע בלבן. ולכן הבדיקה בשורה 3+7. מבטיחה שכל קודקוד יוכנס לתור פעם אחת לכל היותר (ולכן גם יוצא ממנו פעם אחת לכל היותר). פעולות של הכנסה\הוצאה מהתור = (1) O, ולכן סה"כ פעולות אלה ( V ) O. O ( E ) all the neibers in q deg (x) 17 = 17 34 E = θ ( E ) all the neibers in q deg (x) 17 x V deg (x) מאחר שרשימת סמיכות של כל אחד מצמתים נסרקת רק כאשר הצומת מוצא מהתור, אז היא נסרקת פעם אחת לכל היותר נעריך סכום של אורכים של כל רשימות השכנים deg (u) 17 17 deg (u) = 34 E סה"כ: u V u is from Q u V θ ( V ) + θ (1) + O ( V ) + O ( E ) = O ( V + E ) סיבוכיות לינאריות כפונקציה של צמתים של הגרף. למה 1: יהי (E G =,V) גרף מכוון או בלתי מכוון, והי s V צומת כלשהו אזי עבור כל קשת ({u, v} E) (u, v) E מתקיים δ (s, v) δ (s, u) + 1 2

הוכחה: אם = u) δ (s, סיימנו, מרגע זה נניח כי < k δ (s, u) = ז"א קיים מסלול (קצר ביותר) P s,u כך ש: P s,u = k אזי v}} P s,u {(u, v) / {u, זהו טיול מ uל v וכמובן δ (s, u) Q s,v = k + 1 = δ (s, u) + 1 משפט (נכונות ( BF S יהי (E G =,V) גרף מכוון או בלתי מכוון, ונניח שמפעילים את.BF S על G מצומת מקור נתון.s V אזי לכל... 2, = 0, 1, d קיים זמן בו.1 לכל הצמתים vעבורם V δ (s, v) d מתקיים v) d [v] = δ (s,.2 לכל הצמתים האחרים ז"א u V כך ש: δ (s, u) > d מתקיים = [u].d.3 התור Q מכיל אך ורק את כל הצמתים v V כך ש.δ (s, v) = d הוכחה באינדוקציה על d: בסיס האינדוקציה (0 = d) : לאחר ביצוע שורה 6. כל התנאים מתקיימים עבור = 0 d..1 לכל δ (s, v) 0 v (יש לנו רק צומת אחד כזה 0 0 = s) ( δ (s, מתקיים 0 = d [s] = δ (s, s) = 0.2 לכל {s} d [u] = u V \ (נכון באיתחול כולם קיבלו חוץ מ s ).δ (s, s) = 0,Q = {s}.3 צעד האינדוקציה: נניח כי הטענה נכונה עבור 0 k d = ז"א בזמן מסויים התור = Q d [u] = δ (s, u) כמו גם d [v i ] = k δ (s, v i ) = k מכיל את כל הצמתים כך ש {v 1,..., v t } לכל u V כך ש: δ (s, u) k ולכל צומת אחר w מתקיים = [w]. d (ה"א) כעת הצמתים v i יתחילו לצאת מהתור והחיפוש יגלה את שכניהם הלבנים ויכניס אותם לתור כל שכן כזה u שייכנס לתור מקיים [u] δ (s, u) = k + 1 = d בסוף כל ה v i ייצאו מהתור, v t ייצא אחרון והתור יכיל רק את הצמתים במרחק + 1 k לא נפספס אף צומת כזה. אם δ (s, v i ) = k המק"ב (מסלול קצר ביותר)) כך ש: (לאורך v i אז קיים צומת δ (s, u) = k+1. וגם.{V i, u} E מסקנה: בסיום ריצת BF S לכל צומת v V בר"ק של.s מתקיים v).d [v] = δ (s, ולכל צומת אחר u מתקיים: = [u].d 3

אלגוריתמים בתורת הגרפים הרצאה 6 גיא פלג 3 במאי 2012 חיפוש לעומק DF S DFS(G) 1. for each u V [G] do color[u] White π [u] NIL 2. time 0 3. for each u V [G] do if color[u] = white then DFS-Visit(u) Discovry time זמן לידה d (u) finishing time זמן מוות של f (u) DFS-VISIT(u) 1. color[u] RED 2. d(u) time time + 1 3. for each v Γ (u) 4. do if color[v]=white then π [v] u DFS-Visit(v) 5. color[u] Black 6. f(u) time time + 1 1

הגדרה: G π = (V, E π ) גרף הקודמים Graph) ( P redecessor E π = {(u, v) π (v) = u} יער העומק (יער.(DF S הערה: במקרה של BF S גרף הקודמים נקרא עץ.BF S סיבוכיות :DF S הלולאות שבשורות 3 1 7 5, מתבצעות בזמן ( V ) θ. השגרה DF S V isit נקראת בדיוק פעם אחת עבור כל צומת. v V השגרה נקראת רק על צמתים לבנים, ודבר ראשון שהיא עושה זה צובעת את הצומת באדום את הצומת וגם אין במהלך השגרה פרט לאתחול צביעה חזרה ללבן ב DF S V ISIT הלואלה בשורות 6 3 מתבצעת (u) Γ (u) = deg פעמים. מאחר ומתקיים c Γ (V ) = 2 c E העלות הכוללת לביצוע שורות 6 3 היא ( E ) θ. סה"כ v V θ ( V ) + θ ( E ) = θ ( V + E ) הגדרה: בהינתן הרצה (G) DF S צומת v נקרא צאצא של צומת u ביער העומק של G אם v נולד בזמן שצומת u צבוע באדום. צומת u נקרא במקרה כזה אב קדמון של v כמו כן נסכים שכל צומת הוא צאצא של עצמו כמו כן אב קדמון של עצמו. 2

משפט(משפט הסוגריים): בכל חיפוש לעומק של (E G. =,V) עבור כל שני צמתים u ו v, מתקיים בדיוק אחד משלושת התנאים הבאים:.1 הקטעים [u]] [d [u], f ו [v]] [d [v], f זרים.2 הקטע [u]] d ]מוכל [u], f כולו ב [v]] [d [u], f ו u הוא צאצא של v u צאצא של הוא ו v [d [u], f [u]] כולו ב d ]מכול [v], f [v]].3 הוכחה: נתחיל במקרה שבו [v] d [u] < d ישנן שתי אפשרויות א) [v] f [u] < d הקטעים זרים ב)[ v ] f [u] > d ז"א v נולד כאשר u עדיין אדום ז"א v הוא צאצא של u יתר על כן, מכיוון ש v נולד אחרי u, כל הקשתות היוצאות מ v נבדקות והטיפול ב v מסתיים לפני שהחיפוש חוזר ל u וסמיים את הטיפול בו [u]].[d [v], f [v]] [d [u], f המקרה שבו [u] d [v] < d דומה. ובו מחליפים את התפקידים של uו v לעיל. מסקנה(קינון של קטעי צאצאים): צומת v הוא צאצא ממש של u ביער העומק של. d [u] < d [v] < f [v] < f [u] G משפט המסלול הלבן: ביער עומק של G צומת v הוא צאצא של צומת u בזמן [u] d (זבו מגלה החיפוש את ( u ניתן להגיע מ u אל v לאורך מסלול המורכב כולו מצמתים לבנים. הוכחה: נתון כי v הוא צאצא של u, יהי w צומת כלשהו על המסלול מ u אל v בעץ העומק כך ש w הוא צאצא של u על פי המסקנה ולכן w הוא לבן בזמן [u] d. d [u] < d [w] נתון כי ב [u] d ניתן להגיע מ u אל v לאורך מסלול המורכב כולו מצמתים לבנים. נניח בשלילה כי v אינו נעשה צאצא של u בעץ העומק נניח בה"כ שכל צומת אחר לאורך המסלול כן הופך לצאצא של u אחרת יהי v הצומת הקרוב ביותר ל u לאורך המסלול שאינו נעשה צאצא של, u יהי W הקודם של v במסלול אזי w הוא צאצא של u (יתכן ש ( u = w כעת, לפי הנתון v לבן בזמן [u] d אזי [v] d. [u] < d כמו כן w מת לא לפני ש v נולד כי v הינו שכן של w ואז [w] d [v] < d נסכם. 3

d [u] < d [v] d [v] < f [w] f [w] f [u] d [u] < d [v] < f [w] f [u] ולכן לפי משפט הסוגריים [u] v d [u] < d [v] < f [v] < f צאצא של u (ע"פ המסקנה) סיווג קשתות : הגדרה: יהי G π יער העומק הנוצר במהלך S(G).DF 1. קשתות עץ edges) (tree הן קשתות השייכות ליער העומק G π קשת (v,u) היא קשת ע. אם v התגלה לראשונה ע"י בדיקת הקשת (v,u) 2. קשתות אחורה edges) (back הן אותן קשתות (v,u) המחברות צומת u לאב קדמון v בעץ עומק (לולאות עצמיות הן גם קשתות אחורה) 3. קשתות קדימה edges) (forward הן אותן קשתות (v,u) כאשר v הוא צאצא של u 4. קשתות חוצות edges) (Cross כל קשת אחרת. טענה: כל קשת (v,u) בגרף מכוון ניתנת לסיווג ע"פ צבעו של צומת שמגיעים אליו v כאשר הקשת נבדקת ראשונה (פרט לכך שלא ניתן להבחין בין קדימה לחוצה) 1. לבן קשת עץ 2. אדום קשת אחורה 3. שחור קשת קדימה או קשת חוצה משפט: בחיפוש לעומק של גרף בלתי מכוון G כל קשת ב G היא קשת עץ או קשת אחורה. הוכחה: תהי {v,u} צלע (קשת ( כלשהי ב G ונניח בלי הגבלת הכלליות כי [v] d [u] < d אזי הגילוי של v והטיפול בו חייבים להסתיים לפני סיום הטיפול בu כי (u) v Γ אם הצלע {v,u} נבדקת תחילה בכיוון מ u ל v, אזי {v,u} הופכת להיות קשת עץ. אם {v,u} נבדקת תחילה בכיוון מv אל u אז {v,u} היא קשת אחורה שכן u עדיין אדום בעת שהקשת נבדקת. 4

אלגוריתמים בתורת הגרפים הרצאה 7 גיא פלג 10 במאי 2012 מיון טופולוגי הגדרה: מיון טופולוגי של גמ"ל (גרף מכוון חסר מעגלים מכוונים G =,V) (E (DAG הוא סידור לינארי של כל צמתי הגרף כך שאם G מכיל קשת (v,u) אזי u מופיע לפני v בסידור הזה. דוגמא: Topological sort(g) 1. call DFS(G) 2. as each vertex is nished, insert it onto the front of a linked kist 3. return the linked list. דוגמא: 1

סיבוכיות:.O (1).3 θ ( V ).2 θ ( V + E ).1 למה: גרף מכוון G אינו מכיל מעגלים מכוונים (G) DF S אינו מניב קשתות אחורה (משמועת של מעגל שיש קשת אחורה) הוכחה: נתון כי G גמ"ל. נניח בשלילה שקיימת קשת אחורה בהרצת (G),u). (v DF S ז"א v הוא אב קדמון של u ביער העומק לכן קיים ב G מסלול מ v אל u והקשת והקשת (v,u) סוגרת מעגל בסתירה לנתון. נתון כי לא תיתכן קשת אחורה בהרצת (G) DF S נניח בשלילה כי בגרף G קיים מעגל מכוון C. יהי v הצומת הראשון ששייך למעגל שהחיפוש מגיע אליו ותהי (v,u) הקשת במעגל C בזמן [u] d קיים מסלול של צמתים לבנים מ v אל u (צמתים על המעגל ), C וע"פ המשפט המסלול הלבן, u הופך להיות צאצא של v ולכן הקשת (v,u) היא קשת מצאצא לאב קדמון והיא קשת אחורה. לפי הגדרה. בסתירה לנתון. מש"ל. משפט: האלגוריתם (G) T opological sort יוצר מיון טופולוגי של גמ"ל G הוכחה: נניח כי מריצים (G) T opological sort על גמ"ל G מספיק להראות כי (u, v) E f [v] < f [u] u v נתבונן בקשת כלשהי (v,u) הנבדקת על ידי (G) DF S לא יכול להיות אדום. (כי אז v הוא אב קדמון של u והקשת (v,u) היא קשת אחורה בסתירה ללמה). אם v לבן v הוא בן של,u) ((v u היא קשת עץ ( [u] f [v] < f (כל צומת רואה מוות של כל צאצאיו) אם 2

v שחור ז"א v כבר מת ([v] f כבר היה) אבל u עדיין חי כי בודקים (v,u) וימות מתישהו בעתיד. [u] f [v] < f רכיבים קשירים היטב\חזק(רק"חים) הגדרה: הגרף המוחלף transpose) ( של גרף מכוון E) G = (V, הוא הגרף G T = ( V, E ) T כאשר E T = {(u, v) V V (v, u) E} הערה: סיבוכיות בניית G T הינה E ).O ( V + הערה: ל G ו G T יש אותם רק"חים. Strongly-Cinnected-Componenets(G){SCC (G)}.1 נריץ (G) DF S (נחשב [u] f לכל (u.2 נבנה G T 3. נריץ ) T DF S ( G אבל בלולאה העיקרית של DF S נדון בצמתים בסדר ירידה של [u] f (כפי מחושב בשורה 1) 4. תחזיר צמתים של כל עץ ביער העומק של צעד 3 בתור רק"ח נפרד. 3

נריץ בסדר לקסיקוגרפי ונסדר צמתים בסדר יורד של זמני מוות הגדרה גרף הרכיבים Graph) (componenet של גרף מכוון (E G =,V) הוא גרף G scc = (V scc, E scc ) כאשר V scc מכילה צומת אחג עבור כל רק"ח ב G ו Eמכילה scc את הקשת (v,u), כאשר.v scc V ו u scc נמצא ב u הערה: הגרף G scc הוא גמ"ל למה: אם שני צמתים נמצאים באותו רק"ח אז כל מסלול המחבר ביניהם לעולם אינו יוצא מהרק"ח. הוכחה: יהיו,u v V באותו רק"ח יהי w צומת כלשהו על המסלול מ uל u w v v. צ"ל כי w שייך לאותו רק"ח u w וגם u w v u ו w באותו הרק"ח. לכן גם v נמצא באותו רק"ח בגלל הטרנזטיביות כמו u ו w. 4

משפט בכל חיפוש לעומק כל הצמתים השייכים לאותו רק"ח ממוקמים באותו עץ עומק. הוכחה: מבין הצמתים הנמצאים באותו רק"ח יהי r הראשון שנולד ז"א בזמן [r], d כל הצמתים האחרים ברק"ח הזה הם לבנים. קיימים מסלולים במצומת r לכל צמות אחר ברק"ח שלו (לפי הגדרה) ומכיוון שהמסלולים האלו לעולם אינם יוצאים מהרק"ח (לפי הלמה) כל הצמתים עליהם לבנים ולכן ע"פ משפט המסלול הלבן כל הצמתים ברק"ח יהיו צאצאים של r בעץ העומק. הגדרה: φ (u) = w f [w] = maxf [v] תהי φ : V V הניתנת ע"י {v V : u v} u. נקרא אב קדום ביותר של צומת φ (u) נשים לב כי v} φ = {v V : u כי v} u {v V u ומקבלים (בחינם ( אם f [u] f [w] φ (u) = w 5

אלגוריתמים בתורת הגרפים הרצאה 10 גיא פלג 24 במאי 2012 עצים פורשים מינימליים הגדרה: יהי (E G =,V) גרף בלתי מכוון עם פונקציית משקל w : E R עץ פורש מינימלי (עפ"מ) )) m T m = (V, E (T של G הוא עץ פורש של G המקיים: w (T m ) := {u,v} E(T m) w ({u, v}) {u,v} E(T ) w ({u, v}) = w (T ) לכל עץ פורש T של. G דוגמא: משקלו: = 37 ) T) w. אך הוא לא היחיד הגדרה: יהי E) G = (V, גרף לא מכוון עם.w : E R תת קבוצה A E נקראת קבוצה מבטיחה אם קיים עפ"מ T המכיל את A לדוגמא : {{b A =,a}} קבוצה מבטיחה., φ קבוצה מבטיחה. h}} {{a, b}, {a, h}, {b, לא קבוצה מבטיחה. f}} {{d, קבוצה לא מבטיחה (מכילה משקל מקסימלי). 1

הגדרה: יהי E) G = (V, גרף לא מכוון. עם, ω : E R ותהי A קבוצה מבטיחה. צלע e / A נקראת צלע בטוחה עבור A אם {e} A עדיין מבטיחה. Generic-MST(G,ω) 1. A φ 2. while A doesnt not form a spanning tree do nd an edge e that is safe for A A A {e} 3. return A האלגוריתם נכון כי: הערות: 1. φ היא קבוצה מבטיחה. 2. תמיד קיימת צלע בטוחה עבור A. כי ) T) A E עבור עפ"מ כלשהו T של G ולכן כל צלע e E (T ) \ A היא בטוחה עבור.A 3. בסיום כש A עץ פורש מבטיח אזי A עפ"מ (לפי הגדרה) א) צלעות של A לא יוצרות מעגלים ב) כל רכיב קשירות בגרף (A G =,V) הוא עץ שיכול להיות גם ריק. ג) אם e צלע בטוחה עבור A אז היא מחברת בהכרח שני רכיבי קשירות ועל ידי כך מאחדת אותם לר"ק אחד. לכן כל צעד של האלגוריתם שלנו מקטין את מספר רכיבי הקשירות באחד. בהתחלה יש V רכיבי קשירות ואחרי 1 V צעדין יש רק ר"ק אחד. שהוא עפ"מ. דוגמת הרצה: 2

אלגוריתם חמדני.Greedy algorithm דוגמא לגישה חמדנית לא מוצלחת: נתנוים לנו n פריטים במשקל הלא עולה על 1 ק"ג ויש מספר לא מוגבל של קופסאות שניתן לשים בתוכן משקל עד 1 ק"ג. המטרה היא לארוז את 3

כל הפריטים במספר מינמלי של קופסאות. הגדרה: א.חתך s) (s, V של גרף לא מכוון E) G = (V, היא חלוקה של,s (V s) = φ) V.s φ, v s φ (S (V S) = V ב. נאמר כי צלע,u} {v E חוצה את החתך (s,s) V הם קצה אחד נמצא ב s והקצה האחר ב.V s ג. נאמר כי חתך מכבד קבוצת צלעות A אם לא קיימת ב A צלע החוצה את החתך. ד. צלע היא צלע קלה החוצה חתך אם משקלה מינימלי מבין משקליהן של כל הצלעות החוצות את החתך צ"ל שהיא הצלע הבטוחה. משפט: יהי E) G = (V, גרף לא מכוון עם ω : E R תהי A קבוצה מבטיחה, יהי s) (S, V חתך כלשהו של G המכבד את A ותהי {v,u} צלע קלה חוצה את (s V),s אזי הצלע A. היא בטוחה עבור,u} {v הוכחה: לפי הנתון קיים עפ"מ T המכיל את. A אם במקרה T מכיל גם את הצלע {v,u} אז גם T מכיל v} A {u, ולכן v} {u, בטוחה עבור A לפי הגדרה. נניח לכן כי הצלע ) (T {u, v} / E T הוא עץ ולכן קשר. אזי ב T יש צלעות (לפחות אחת ( שחוצות את החתך. נתבונן בסלול יחיד p ב T המחבר בין u ל v. 4

אלגוריתמים בתורת הגרפים הרצאה 11 גיא פלג 31 במאי 2012 משפט: יהי E) G = (V, גרף לא מכוון וקשיר ω : E R תהי A קבוצה מבטיחה, יהי S).(S, V חתך כלשהו של G שהוא מכבד את A. ותהי {v,u}. צלע קלה חוצה את (S,S). V אז. A בטוחה עבור {u, v} המשך הוכחה מהרצאה קודמת: T הוא עץ ולכן קשיר אזי ב T יש צלעות (לפחות אחת) אשר חוצות את החתך.נתבונן במסלול יחיד P ב T המחבר בין u ל P v. חייב להכיל לפחות צלע אחת חוצה (יצכו שיש הרבה צלעות חוצות ב (T כדי להגיע מ S u אל v V S לפי נתון הצלע v} e = {u, היא חוצה קלה ז"א ω (e) ω (e ) T := (T \ {e }) {e} = (T {e}) \ {e } T is MST {}}{ ω (T ) ω (T ) = ω (T ) + נבנה עץ פורש חדש אכן ב T יש 1 V צלעות והוא קשיר 0 {}}{ ω (e) ω (e ) ω (T ) ω (T ) ω (T ) ω (T ) ז"א גם T שיצרנו הוא עפ"מ. וגם מכיל את {v A.,u} מסקנה: יהי E) G = (V, גרף בלתי מכוון ω : E R תהי A קבוצה מבטיחה ויהי C ר"ק (עץ) ביער (A G A =,V) אם {v,u} היא צלע קלה המחברת את C לר"ק אחר כלשהו ב G A אז.A בטוחה עבור {u, v} 1

union(u, MST-Kruskal 1. A φ 2. for each vertex v V [G] do make-set(v) 3. sort the edges of E by nondecreasing wight ω 4. for each edge {u, v} E in order above do if Find-set(u) Find Set(v) then A A {e} v) 5. return A set(v) make בנה קבוצה שv נמצא בה. (h) find set מצא נציג של הקבוצה בה נמצא h לדוגמא. סיבוכיות: שורה :2 ) ( V.θ שורה שלוש : ( E )) O ( E log שורה 4 וההזכות שלה: E ) O ( E log נכונות: ע"פ המשפט 2

3

סיבוכיות: θ ( E + V log V ) 4

אלגוריתמים בתורת הגרפים הרצאה 12 גיא פלג 7 ביוני 2012 תכונות של ההקלה למה 4: יהי E) G = (V, גרף מכוון ומשוקלל ω : E R ותהי (u, v) E אז מיד לאחר הקלת הקשת (v,u) מתקיים: d [v] d [u] + ω (u, v) הוכחה: אם לפני ההקלה היה (v d [v] > d [u] + ω,u) אם כן אז מיד לאחר ההקלה v) d [v] = d [v] > d [u] + ω (u, אם לפני ההקלה היה v) d [v] d [u] + ω (u, אז זה נשאר כך. למה 5: יהי E) G = (V, גרף מכוון משוקל ω : E R יהי s V ונניח כי הגרף אותחיל ע"י s)) ISS (G, s) (Initilaze_single_source (G, אזי [v] δ (s, v) d לכל v V ואינוורטה זו נשמרת במהלך כל סדרה יתר על כן, מרגע ש [v] d מגיע לחסם תחתון שלו (v δ,s) ערכו שוב אינו משתנה לעולם. הוכחה: ברור כי [v] δ (s, v) d עבור על v לאחר האיתחול (לכל {s} δ (s, v),v \ = [v] d בנוגע ל s ( δ (s, s) d [s] {0, } נניח שהטענה לא נכונה לכל הצמתים יהי v הצומת הראשון שעבורו צעד הקלה על קשת (v,u) גורם לכך [v] δ,s) (v > d אזי מיד לאחר ההקלה הזו (ω Relax(u,,v נקבל d [u] + ω (u, v) = d [v] < δ (s, v) δ (s, v) + ω (u, v) d [u] < δ (s, u) קיבלנו שההקלה לא שינתה את הערך של [u] d ולכן [u] d כבר היה קטן מ δs, u בסתירה לכל ש v הוא צומת ראשון שכזה. אם ברגע מסויים (v d [v] = δ,s) אז [v] d לא יכול לקטון כי כרגע הוכחנו ש [ v ] d [v] δ,s) (v d גם לא יכול לגדול מכיוון שצעדי הקלה אינם מגדילים את ערכי d. 1

מסקנה 6: נניח שבגרף משוקלל E), ω : E R, G = (V, לא קיים שום מסלול מ sאל. v אזי לאחר איתחול s), ISS (G, אנו מקבלים = v) d [v] = δ (s, ושיווין זה נשמר במהלך כל סדרה שהיא של צעדי הקלה. למה 7: יהי E) G = (V, גרף מכוון משוקלל ω : E R יהי s V ויהי s u v מק"ב ב G נניח כי G מאותחל ע"י (s ISS,G) ואז מבוצעת סדרה כלשהיא של הקלות הכוללת את הקריאה ω) Realax (u, v, אם u) d [u] = δ (s, בזמן כלשהו לפני הקריאה אז v) d [v] = δ (s, בכל זמן לאחר הקריאה. הוכחה: ע"פ למה 5, אם (u d [u] = δ,s) ברגע כלשהו לפי הקלת (v,u) אזי שיווין זה נשמר לנצח. בפרט לאחר הקלת (v,u) נקבל d [v] lemma 4 lemma 1 {}}{{}}{ d [u] + ω (u, v) = δ (s, u) + ω (u, v) = δ (s, v) δ (s, v) we proved it now {}}{ d [v] δ (s, v) d [v] = δ (s, v) ושיוויון זה נשמר לנצח, לפי למה 5. למה 8: יהי E) G = (V, גרף מכוון משוקלל, ω : E R יהי s V ונניח כי G אינו מכיל מעגלים בעלי משקל שללי שניתן להגיע אליהם מ s, אז לאחר (s ISS,G) תת גרף הקודמים G π יוצא עץ שמושרש ב, s וכל סדרה שהיא של צעדי הקלה משמרת תכונה זו כאינווריאנטה. G π = (V π, E π ), V π V, V π = {u V : π [u] NIL} {s} הוכחה: תזכורת: E π = {(π [v], v)} E 2

במצב התחלתי: הצומת היחיד שיש ב G π הוא s צומת המקור, והלמה נכונה באופן טריוויאלי נתבונן ב G π המתקבל לאחר סדרה של צעדי הקלה נוכיח כי G π אינו מכיל מעגלים. נניח בשלילה כי צעד הקלה כלשהו יוצר מעגל בגרף G π נסמנו 0 c = v 0, v 1,... v k = v אזי i 1 k,..., 2, 1 = i, π [v i ] = v נוכל להניח בה"כ כי הקלת הקשת ) 0 (v k 1, v k = v היא שיצרה מעגל זה ב G π כרגע נטען שכל אחד מהצמתים הנמצאים על c ניתן להגעה מ s (לכל צומת שכזה יש צומת קודם שאינו NIL ולכן כל צומת v על c קיבל ערך [v] d סופי כאשר הוצב שדה π שלו ערך שונה מ NIL ועל פי למה, 5 [v] δ),s) (v d ממש לפני הקריאה ω) Realax (v k 1, v k, מתקיים 1 k π [v i ] = v i 1 i = 1, 2,..., לפי כך עבור 1 k i = 1,..., העדכון האחרון של ] i d [v נעשה באמצעות הצבה ] i d [v Relax (u, v, ω) השתנה מאז ערכו קטן לכן ממש לפי d [v i 1 ] אם d [v i 1 ] + ω (v i 1, v i ) מתקיים d [v i ] d [v i 1 ] + ω (v k 1, v k ) מאחר והקריאה משנה את ערכו של ] k π v] הרי שמיד לפני מתקיים d [v k ] > d [v k 1 ] + ω (v k 1, v k ) = k d[v i 1] i=1 {}}{ k d [v j ] > i=1 k (d [v i 1 ] + ω (v i 1, v i )) = i=1 k d [v i 1 ] + i=1 k ω (v i 1, v i ) < 0 = ω (c) i=1 k ω (v i 1, v i ) i=1 קיבלנו סתירה להנחה כי G אינו מכיל מעגלים שלילים. Bellman-Ford(G, ω, s) 1. Iss(G,s) 2. for i 1do V [G] 1 ˆ do for each (u, v) E (G) ˆ do Relax(u, v, ω) 3. for each edge (u, v) E (G) ˆ do if d [v] > d [u] + ω (u, v) ˆ then return FALSE 4. Return TRUE 3

סיבוכיות: שורה ) 1 ( V θ שורה 4 2 ( E ) θ ( V ) θ שורה 5 8 ( E ) O סה"כ : θ ( V E ) למה 12: יהי E) G = (V, מכוון משוקלל עם מקור ω : E R,V s נניח כי G אינו מכיל מעגלים שלילים שניתן להגיע אליהם מ s אזי עם עצירת האלג' בלמן פורד, (v d [v] = δ,s) לכל הצמתים v V הניתנים להגעה מ s. הוכחה: יהי vצומת הניתן להגעה מ s ויהי v p = s = v 0, v 1,... v k = מק"ב מ s אל v ב G p הוא פשוא (אין מעגלים שלילים) 1 V.k = P נוכיח באינדוקציה שעבור i = 1, 2,... k מתקיים ) i d [v i ] = δ (s, v לאחר הסיבוב ה i י של הקלות, ושיווין זה נשמר משלב זה לנצח. מכיוון שהאלג מבצע (1 V ) ביהוהי הקלות זה מספיק. בסיס האינדוקציה: לאחר האתחול (סיבוב האפסי של ההקלות) מתקיים = 0 (s d [s] = δ,s) ועל פי למה 5 זה נשמר לנצח. צעד האינדוקציה: נניח כי הטענה נכונה עבור מספר טבעי 1.i ז"א ) i 1 d [v i 1 ] = δ (s, v לאחר הסיבוב ה 1 i י של ההקלות במהלך הסיבוב ה i י בפרט מתבצעת (ω Relax v) 1 i, v i, ולכן על פי למה 7 נסק כי לאחר הסיבוב הזה ובכל זמן לאחר מכן ) i d. v] i ] = δ,s) v למה 13: יהי E) G = (V, מכוון ומשוקלל עם מקור ω : E R, s רזי עבור כל v V קיים מסלול מ s אל v בלמן פורד עוצר עם < [v] d (נכון גם אם יש משקלים שלילים) הוכחה: נתבונן בגרף G לא משוקלל (נמחק משקלים או ניתן לכולם משקל 1) היות ומרחק מ s אל v בגרף הלא משוקלל לא עולה על 1 V (קוטר) נובע כי לאחר 1 V סיבובי הקלות כל צומת שניתן להגיע אליו מ s יהיה בעל ערך [v] d סופי (אך אולי ערך לא נכון). 4

משפט 14 (נכונות בלמן פורד): Let BELLMAN-FORD be run on a weighted, directed graph G = (V, E) with source s and weight function w : E R. If G contains no negative-weight cycles that are reachable from s, then the algorithm returns TRUE, we have d[v] = d(s, v) for all vertices v V, and the predecessor subgraph G π is a shortest-paths tree rooted at s. If G does contain a negative-weight cycle reachable from s, then the algorithm returns FALSE. DAG-SHORTEST-PATHS(G,ω,s ) 1. topologically sort the vertices of G 2. INITIALIZE-SINGLE-SOURCE(G, s) 3. for each vertex u, taken in topologically sorted order 4. do for each vertex v Adj[u] 5. do RELAX(u, v,w) 5

do אלגוריתמים בתורת הגרפים הרצאה 13 גיא פלג 14 ביוני 2012 Dijkestra(G, ω,s) 1. ISS(G, s) 2. S φ 3. Q V [G] 4. while Q φ ˆ do u Extarct Min (Q) ˆ S S {u} ˆ for each v Γ (u) Realax(u, v, ω) 1

סיבוכיות: 1 ) ( V θ 2 (1) θ 3 ( v ) θ 4 ) V O ( V log 8 6 ( E ) O סיבוכיות של דייקסטרה E ) O ( V log V + נכונות: משפט (נכונותו של אלג. של דייקסטרה): אם מריצים את האלג', על גרף מכוון ומשוקלל (E G =,V) עם פ.משקל אי שלילית. u V לכל d [u] = δ (s, u) אזי עם עצירת האלג',s עם מקור, ω : E R + הוכחה: נראה שלכל u V ברגע שנכנס לקבוצה S מתקיים u) d [u] = δ (s, ושיוויון זה נמשך לנצח. נניח בשלילה שהטענה לא נכונה, ז"א לא כל צומת u V שנכנס ל s הוא "מסודר" יהי u צומת ראשון שברגע שהוא נכנס ל s מתקיים (u d [u] δ,s) (ז"א לפי מה שהוכחנו בשיעור הקודם [u] ( δ,s) (u < d נתבונן במצב המתקיים בתחילת אותה איטרציה של לולאת הwhile אשר במהלכה צומת u מוכנס ל S. בהכרח מתקיים u S שכן s הוא הראשון שמוכנס ל S. ובעת הכנסתו = 0 [s] δ,s) (s = d (בעקבות ISS וכי אין מעגליים שללים ב G ). מאחר ש u הוא לא צומת s הרי שממש לפני הכנסתו של u לקבוצה S מתקיים S קיים בהכרח מסלול מ s אל u. ISS {}}{ = = δ (s, u) (אם לא קיים מסלול מ s אל u אז = [u] d ואז בעת הכנסתו של u ל S מתקיים u) ( d [u] = δ (s, ומכיוון שקיים לפחות מסלול אחד כזה מ s ל u קיים מסלול P קצר ביותר. מ s אל u המסלול מחבר בין s S לבין u V \ S נתבונן בצומת הראשון y לאורך המסלול P המקיים y הקודם של x V ויהי y V \ S 2

P 1 {}}{{}}{ לפיכך המסלול P ניתן לפירוק p : s x y u אנו טוענים כי בעת הכנסתו של u ל S d [u] = δ (s, y) כדי להוכיח זאת, נשים כי x S והיות ש u הוא הראשון (x 1 d [x] = δ,s) כש x נכנס ל S עשינו כל ההקלות על בין ה"לא מסודרים" מתקיים הקשתות שיוצאות מ x ובפרט עשינו (ω Realx,x),y ולפי מה שהוכחנו בשיעור הקורדם d [y] = δ (s, y) P 2.1 אם P מק"ב y s x זה גם כן מק"ב (למה (1 למות: מכיוון ש y מופיע לפני u על מסלול קצר ביותר P מ s אל u ומכיוון שכל המשקלים הם אי שלילים אזי אנחנו מקבלים ש u) δ (s, y) δ (s, ולכן. d [y] = δ (s, y) δ (s, u) d [u] d [y] אולם מאחר וצמתים u ו y שניהם שייכים ל S V \ (בעת הכנסתו של u ל S) והאלג מחליט להכניס את u ל S (ולא את ( y אז מתקיים [y] d [u] d קיבלנו כי δ (s, u) = d [u] בעת ההכנסה של u ל S בסתירה לכך ש u הוא הראשון שלא כזה. מק"בים בין כל הזוגות פתרונות נאיבים: ( ).1 אם כל המשקלים אי שלילים דייקסטרה מכל צומת E O V 2 log V + V O ( n 3) O ( n 4) ( ).2 מכל צומת להריץ בלמן פורד E O V 2 ייצוג: במקרה הזה (של כל הזוגות) נשתנש בהצגת הגרף על ידי מטריצת שכנויות וגם את הפלט להציג ככה בצורה מטריצאלית. ניתן לצמתים לנוכחיות בלבד מספרים סידוריים v n n,..., v 2 2, v 1 1 W = (W i,j ) n n באופן הבא נגדיר מטריצה W ij = { 0,i=j,(i,j) / E w ((i, j)), (i, j) E 3

פתרון רקוקסיבי לבעייה m המכיל לכל היותר j אל צומת i המשקל המינמלי של מסלול כלשהו מצומת D (m) תהי i,j קשתות למשל D (m) i,j { = min D (m 1) i,j D (0) i,j, min { } = 0,i=j,i j, D(1) i,j = W i,j ( D (m 1) i,k + W k,j )} = min 1 k n { D (m 1) i,k + W k,j } + min + אם נעשה טרנספורמציית פעולות = n k=1 D (m 1) ik W kj = D (m 1) W ij קיבלנו כפל מטריצות(בדמיון). slow-all-pairs-shortest-paths(w) 1. n rows [w] 2. D (1) W 3. for m 2 do n-1 ˆ do D (m) Extend Shortest P aths ( D (m 1), W ) 4. return D (n 1) EXTEND-SHORTEST-PATHS(D,W) 1 n rows[d] 2 let L = (d i,j ) be an n Ö n matrix 3 for i 1 to n 4 do for j 1 to n 5 do d i,j 6 for k 1 to n 7 do d i,j min(d i,j, d i,k + w k,j ) 8 return D' 4

סיבוכיות של הראשון: 4).θ ( n השני 3) θ ( n שיפור לראשון: D 2 = W W D 4 = D 2 D 2...... D n 1 ואז הגענו לסיבוכיות של ) logn θ ( n 3 FASTER-ALL-PAIRS-SHORTEST-PATHS(W) 1 n rows[w] 2 D (1) W 3 m 1 4 while m < n = 1 5 do D (2m) EXTEND-SHORTEST-PATHS(D (m), D (m) ) 6 m 2m 7 return D (M) 5

אלגוריתמים בתורת הגרפים הרצאה 14 גיא פלג 21 ביוני 2012 אלגוריתם של jhonson (טוב כאשר הגרף דליל) שקלול מחדש (reweighting) יש לנו גרף E) ω : E R G = (V, נבנה פ. משקל חדשה ˆω : E R שמקיימות שתי תכונות: 1. לכל,u v V מק"ב מ u אל v לפי פ. משקל ω הוא גם המק"ב לפי ωˆ.2 לכל (u, v) E מתקיים v) ˆω (u, 0 למה: בהנתן גרף מכוון משוקלל E),ω : E R, G = (V, תהי h : V R פונקציה כלשהי נגדיר ˆω : E R באופן הבא: ˆω (u, v) = ω (u, v) + h (u) h (v) יהי k P = v 0, v 1,..., v מסלול מ v 0 אל v k אזי ) k ˆω (P ) = ω (P ) = δ (v 0, v ( ˆω מכיל מעגל שלילי (לפי G ω מכיל מעגל שלילי לפי G כמו כן ˆδ (v 0, v k ) ˆω (P ) = ω (P ) + h (v 0 ) h (v k ) ˆω (P ) = k 1 i=0 ˆω (v i, v i+1 ) k 1 = [ω (v i, v i+1 ) + h (v i ) h (v i+1 )] i=0 i=0 k 1 k 1 = ω (v i, v i+1 ) + (h (v i ) h (v i+1 )) i=0 הוכחה: קודם כל נראה כי אכן, 1

= ω (P ) + (h (v 0 ) h (v 1 ) + h (v 1 ) +... h (v k 1 ) h (v k )) = = ω (P ) + h (v 0 ) h (v k ) נניח בשלילה כי ) k ω (P ) = δ (v 0, v אבל ) k ˆω (P ) ˆδ (v 0, v אזי קיים מסלול p מ v 0 אל v k רק ש: (p) ˆδ (v 0, v k ) = ˆω (p ) < ω ˆ אזי ω (p ) + h (v 0 ) h (v k ) = ˆω (p ) < ˆω (p) = = ω (p) + h (v 0 ) h (v k ) ω (p ) + h (v 0 ) h (v k ) < ω (p) + h (v 0 ) h (v k ) ω (p ) < ω (p) וזה סתירה לנתון כי p הוא מק"ב לפי ω (כי מצאנו מסלול קצר יותר p ( 2

( סיבוכיות: ) O V 2 log V + V E הערה: אם אין מעגלים שלליים בגרף נניח כי G וגם G אינם מכילים מעגליים שליליים. ) G = (Ṽ, Ẽ, Ṽ = V {s} Ẽ = E {(s, u) u V } ω : E R, ω (e) = { } ω(e),e E 0,else ((s,u)) נגדיר h : Ṽ R באופן הבא: v) h (v) = δ (s, 0 ˆω (u, v) = ω (u, v) + h (u) h (v) = ω (u, v) + δ (s, u) δ (s, v) δ (s, v)? {}}{ δ (s, u) + ω (u, v) (נכון לפי למה 1) Johnson(G) ] 1. Comute V[ G, G 2. if Bellman-Ford( G, ω, s) = F alse [ ] = V [G] {s}, E G = E (G) {(s, u) u V } 3. then the unput Graph contains a negative wiehgt cycle [ 4. else for each v V G] 5. do h (v) δ (s, v) comuted by Belmann-Ford [ ] 6. for each (u, v) E G 7. do ω (u, v) ω (u, v) + h (u) h (v) 8. for each u V [G] 9. do run Dijkestra(G,ˆω, u ) 10. for each Vertex v V [G] 11. do d u,v ˆδ (u, v) + h (v) h (u) 12. Return d 3

סיבוכיות: שורה E ) 1 + O ( V + שורה 2 שורה ) 5 ( V θ שורה : 7 ( E ) θ ( ) שורה 9 8 : E O V 2 log V + V שורה 10 ) ( V θ ( שורה 11 2) V θ 4