תכנוןוניתוחאלגוריתמים סיכוםהתרגולים n log O( g( n)) = Ω( g( n)) = θ ( g( n)) = תרגול.3.04 סיבוכיות { f ( n) c> 0, n0 > 0 n> n0 0 f ( n) c g( n) } { f ( n) c> 0, n0 > 0 n> n0 0 c g( n) f ( n) } { f ( n) c > 0, c > 0, n > 0 n> n 0 c g( n) f ( n) c g( n) } log( n 0 logn log( n + n) =θ (logn) 0 Ω היאחסםתחתוןלסיבוכיותשלבעיה. θ היאחסםהדוק. g( n) Ω( f ( n)) f ( n) O( g( n)) f ( n) O( g( n)) f ( n) θ ( g( n)) f ( n) Ω( g( n)) + n) log(n ) = logn + = log n+ : log( n!) נוכיחש n) = θ ( n log n n n logn+ log( n ) +... + log log n+ log( n ) +... + log= log( n!) logn = nlog n log בחזקהקבועהכלשהי. ניתןלראותזאתע"ישימוש 3 5 3 n+ log n= θ ( n ) n בחזקהקבועהכלשהיתמידיותרגדולמ בכלללופיטל (כש n שואףלאינסוף). =n log (אין השפעה לבסיס) θ (log3 n ) logn = o(log n) n = o( n) logn log logn= o( logn) תכנון דינמי כיצד נזהה שניתן לפתור בעיה באמצעות תכנון דינמי?
תתיבעיותחופפות. תתמבנהאופטימלי. הפתרוןהאופטימלישלהבעיהצריךלהיותמורכבמהפתרוןהאופטימלישל הבעיותהקודמות. - - i תרגיל לאורךנהריש n תחנות. בכלתחנה. j = i+,..., n איאפשרלשוטנגדהזרם. מחיריההשכרותנתוניםבמטריצה i =,...,n A nxn כך שהאיבר ניתןלשכורסירה ואפשרלהחזירהבכלתחנה a ij והחזרתהב. j איןתשלוםנוסףעלהחלפות. מצאאתסדרתההחלפותשתאפשרשייטבמחירמינימלימתחנה לתחנה מייצג את מחיר השכרת סירה בתחנה. n תתיהבעיותהכלליות כיצדמגיעיםבצורההאופטימליתלתחנה i. תתיבעיותבסיסיות הבעיותשמתחיליםמהן. סדרהפתרון. פתרוןתתבעיהכללית. פתרוןהשאלהכולה. - - - - -. M[i] נסמןאותוב.i אלגוריתם נחפשלכלתחנה i אתהמחירהמינימליהדרושלהגיעמתחנה עד נתחילמתחנה. נסמן 0 = [ ]M ונמשיךלפיסדרהתחנות. פתרוןתתבעיהמסדר i יהיה: M [ i] = min M[ j] + a j i ( ) ji לאחרפתרוןכלתתיהבעיות, פתרוןהשאלהיהיה. M[n].O( n.o(n) לכןסה"כסיבוכיות ) סיבוכיות: יש n תתיבעיות. כלבעיהנפתרתבסיבוכיותלכלהיותרשל. k הוכחהבאינדוקציהעלסדרהפתרון. בדיקה המסלולהאופטימלימתחנה לעצמהיהיהבמחיר 0 (נשאריםבמקום). i. הנחה לכלi M[k], k הואהמחירהמינימלילהגיעמתחנה לתחנה.ii : M[ i] OPT[ i] נוכיחש.iii נסמן OPT[i] - סדרתההחלפותשנותנתמחירמינימלימתחנה לתחנה.i - התחנהשבה OPT[i] לקחאתהסירההאחרונהלפני.i נסמן j. j עדתחנה OPT[i] המסלולשל - OPT j נסמן [i] OPT[ i] = OPT [ i] + a M[ j] + a min M[ r] + a M[ i ( ) ] j ji ji ri = r i הנחתהאינדוקציהעל j DAG גרףמכווןללאמעגלים (גמ"ל) מיוןטופולוגי - בהנתןDAG, מיוןטופולוגיהואסדרעלהקודקודים, כךשאםישקשתמקודקוד i לקודקוד i, j יופיעלפני j במיון.
ישכמהאפשרויותסידורשיהיומיוןטופולוגי. אםהגרףהואמלא, איןאפשרותכזו. v u y x v,u,x,y u,v,x,y תרגול 9.3.04 תרגיל נתוןעץT. מצאכמהקבוצותבלתיתלויותשלקודקודיםישבT. קבוצהבלתיתלויהשלקודקודיםהיא קבוצהשלקודקודיםכךשלאףאחדמהקודקודיםבקבוצהאין קשרלאחרים. v v v 3 v 4 v 5 v 6 קבוצותשלקודקודיםבודדים: v, v, v, v, v, v { } { } { } { } { } { } 3 4 5 6 זוגותוכו': v, v { }
T v.t v נחפשלכלקודקוד v אתמס' תתיהקבוצות הבלתיתלויותבתתהעץשהואמגדיר נתחילמהעלים. בתתעץשלעלהיששתיקבוצותבלתיתלויותשלקודקודים. סדרהפתרוןיכוללהיותכלסדרשמבטיחשבזמןהפתרוןשל v כלתתיהבעיותשמתאימות לקודקודי יהיופתורות. לדוגמא: סדרלפירמות..T v נסמן v] - N[ מספרהקבוצותהבלתיתלויותב מס' הקבוצותשכוללותאת + v מס' הקבוצותשלאכוללותאת v N[ v ] = Π ( ) Π ( ) N[ v] = N[ u] + N[ u] u onof v u grandonof v פתרון הבעיה כולה הוא N[roo]. N[ v ] = N[ v ] N[ v ] + N[ v ] 0 3 N[ v ] = N[ v ] + N[ v ] N[ v ] N[ v ] 3 4 5 6 סיבוכיות: כלקודקודנכנסלחישוב 3 פעמים: בחישובשלו, בחישובשלאבאשלוובחישובשלסבאשלו. לכן הסיבוכיותהיא n).o( הוכחת נכונות: נעשה זאת באמצעות אינדוקציה על סדר הפתרון. בסיסהאינדוקציה: מס' הקבוצותהבלתיתלויותבתתעץשלעלההוא : העלהעצמווהקבוצההריקה.. N[ u] T u הנחה: לכל קודקוד הוא מס' הקבוצותהבלתיתלויותב u T v
T v שכוללותאת v ועודמספר T v הואמס' הקבוצותהבלתיתלויותב מס' הקבוצותהבלתיתלויותב הקבוצותשלאכוללותאת. v מס' הקבוצותשלאכוללותאת v שווהלמספרהאפשרויותלאחדקבוצותבלתיתלויותמתתיהעציםשל הבניםולכן שווהלמכפלההקרטזיתשלמס' הקבוצותבכלבן. לפיהנחתהאינדוקציהמס' הקבוצותבכל. N[ u] לכןמס' הקבוצותמסוגזההוא. N[ u] הוא v שהואבןשל u Π u onof v ( ) שאלה נתונות 3 מחרוזות. באורךn. X באורךm. Y באורךn+m. Z תאראלגוריתםהקובעהאם Z הואמיזוגשל X וY. x, x,..., x y, y,..., y n n דוגמא למיזוג: Z = x, x, y, x, x, x, y, y 3 4 5 3. X j Y i z i + j,i נרשום '' אם. בתא j ( m+ ) ( n+ נבנה מטריצה בגודל ( ו היא מיזוג של Y i \ X j 0 0 n m תתיהבעיותיהיוהשורה j) (0, והעמודה i,0) (. נפתוראתתתיהבעיותהבסיסיותע"יהשוואהשל X לZ וY לZ. סדרהפתרוןיהיהלפיסדרהשורות. הפתרוןיהיהבתאהימנימלמטה. ( ) ( ) if Z[ i+ j] = X[ j] and A[ i, j ] = or Z[ i+ j] = X[ i] and A[ i, j] = A[ i, j] = 0 ele תרגול 3 6.3.04 קשתותשקיימותב BFS בגרףלאמכוון קשתותעץ, קשתותחוצות. u v אזי, v u v u הוכחאוהפרך אםישמסלולמכווןמ הסריקה. ל בגרףמכווןG ובDFS מתגלה לפני בעץ צאצא של דוגמא נגדית:
u v גרףנקראדוצדדיאםאפשרלחלקאתהקודקודיםשלולשתיקבוצות הקבוצות.,V, V כךשכלהקשתותהןבין תרגיל G= בהינתןגרףלאמכוון E) ( V, מתאימהשלהקודקודים. תאר אלגוריתם הקובע האם הוא דו צדדי ואם כן מוצא חלוקה V נבצעסריקתBFS עלהגרף. אםנגלהקשתחוצהבתוךאותהרמה, אזהגרףהואלאדוצדדי. אחרת הגרףהואדוצדדיוהחלוקההמתאימהתתקבללפיהזוגיותשלהרמות (קודקודיםברמהזוגיתיהיו בקבוצההראשונהוקודקודיםברמהאיזוגיתיהיובקבוצההשניה). כיוון : אינדוקציה: נניחשהגרףדוצדדי. הקודקודיםברמה i הםשכניםשלהקודקודיםברמה i. לפיהנחתהאינדוקציהכלהקודקודיםב.V לכןכלהקודקודיםברמה i חייביםלהיותב i הםבאותהקבוצה. נניחבליהגבלתהכלליותלגבי ולכןלאיכולהלהיותקשתביןשניקודקודיםברמה i. משפט: גרף הואדוצדדיאםורקאםאיןבומעגליםבאורךאיזוגי. כיוון : נניחשאיןקשתות חוצותבאותהרמהב.BFS נבצעחלוקהשלהקודקודיםלפיהזוגיותשלהרמות. לאתתכןקשתביןקודקודאיזוגילאיזוגימשוםשאיןקשתותבאותהרמה (לפיההנחה) ואיןקשתותבין רמותלאסמוכות (לפיתכונותהסריקה). באופןסימטריאיןקשתביןקודקודזוגילזוגיולכןהגרףדוצדדי. סיבוכיות: ) E. O( V + תרגיל נתונה מערכת של m אי שוויונים מהצורה x i < x j משתנים n על השמהמספקתהיאקביעתערךלמשתניםכךשכלאיהשוויוניםמתקיימים. תאראלגוריתםהבודק אםישהשמהמספקתואםכןמוצאכזאת.. x, x,..., xn
נבנה גרף מכוון כך שהקודקודים יהיו המשתנים ועבור כל אי שוויון x נבנה קשת מכוונת i < x j. x i x j בגרף שקיבלנו יהיה מעגל אם ורק אם אין השמה מספקת. מ כיווןראשון:. v v... vi נניחשישמעגלבגרף. נסמןאותוב v. vi איןשנימספריםשיכוליםלקייםאתהתנאיםעל לכןלפיבנייתהגרף v < v <... < vi וגם < v, v ולכןאיןהשמהמספקת. vi i j i j כיווןשני: נניחשאיןבגרףמעגלים. כלומרהגרףהוא.DAG לכןניתןלמייןאותוטופולוגית. ניתןערכיםלמשתנים לפיהמיקוםשלהםבמיוןהטופולוגי. יהי x < x אישוויוןמהנתון. אזיישקשת. x x לכן יופיעלפני במיוןולכןיקבלערךקטן x j x i. x j סיבוכיות:. O( m+ בנייתהגרף: (n. O( m+ בדיקתמעגלים: (n. O( m+ מיוןטופולוגי: (n. O( m+ סה"כ: (n תרגול 4 3.3.04 w:. נגדירעוצמהשלקודקוד: V תרגיל יהיהG גרףמכווןעםמשקליםעלהקודקודים R P( u) = max{ w( v) {ישמסלולמכווןמ u ל v מצא את עוצמת כל קודקודי G. v V נניחשהגרףהוא.DAG נמייןאתהגרףטופולוגיתונמצאלכלקודקודאתהעוצמהשלו. נתחילמהקודקודהאחרוןבמיון, כאשרהעוצמהשלותהיהשווהלמשקלשלו. נמשיךמהסוףלהתחלה.. P( u) = max w( u), P( v) e( u, v) עבורקודקוד u נקבע: E ( { }). O( V + E) סיבוכיות: מיוןטופולוגי: E). O( V + מספרהבדיקותבתכנוןהדינמייהיהכמספרהקשתות. לכןסיבוכיותהתכנוןהדינמיתהיה סה"כ: E). O( V + הוכחה באינדוקציה על סדר הפתרון: בסיס: עבורהקודקודהאחרון.
לאיוצאתממנואףקשת. לכןהקודקודהיחידשניתןלהגיעאליוהואהקודקודעצמוולכןהעוצמהשלו היאהמשקלשלו.. ( { }). P( v) = max w( v), P( z) e( v, z) E v u הנחה: שאחרי לכל קודקוד היא במיון, העוצמהשל v z אם v הואהקודקודהכבדביותרשניתןלהגיעאליומ מסלולמ u ל. v לכן ) v. P( v) w( אם נניח בשלילה ש א. v = v אז, v, P v אזיששתיאפשרויות: ( ) > w( v ). w v סתירה. ( ) > w( v ) ב. קיים u, שכןשל כך ש P u ( ) > w( v ) כךש, v אושקיים u שכןשל v וקיים ואז לפי הנחת האינדוקציה קיים מסלול מ u לקודקוד w z ואז קיים מסלול גם מ ) v > w( ) ( v ל. z סתירה. אםהגרףמכילמעגלים נבנהגרף G המתקבלמG ע"יכיווץהרכיביםהקשיריםהיטבלקודקודים. משקלכל קודקודכזהיהיהמשקלהקודקודהמקסימליברכיב. עלהגרףשקיבלנו G (שהואDAG ) נריץאתהאלגוריתםהקודם. עוצמתכלקודקודבG תהיההעוצמהשלהקודקודהמתאיםלוב G. לדוגמא: סיבוכיות: E). O( V + v v, u G וקיים מסלול מ ל u.
לכןאםניקחאתאותומסלולב לקודקודהמתאיםל u ב G. אםישמסלולמקודקוד v לקודקוד ל u. כלקודקודבמסלולב לכןנקבלמסלולבG. G, חלקמהקשתותבויתכווצוונקבלמסלולמהקודקודהמתאיםל v v, u,g קודקודיםבG כךש u ב מתאים ל v u מתאים, v G ניתןלפתיחהלמסלולב G, כיווןשהקודקודמייצגרכיבקשירהיטב.. תרגיל יהיG גרףלאמכווןו קודקודבG. מצאאתהמעגלהפשוטהקצרביותרהמכילאת פתרון: נזכורעבורכלקודקודבאיזהתתעץהואובאיזורמההואנמצא. נעבורעלכלהקשתותבגרף. אםיש קשתחוצההסוגרתמעגלביןשניתתיעציםשונים, אזהיאשייכתלמעגל. 3 הערה: המעגליםשנמצאלאיהיוכלהמעגליםהמכיליםאת, אךהמעגלהמינימלייהיהאחדמאלה. זאתמשוםשיכוללהיותמעגלשישבוכמהקשתותחוצות. מעגלמסוגזהלאיהיהלעולםמינימלי. תרגול 5 30.3.04 (המשך התרגיל מהשבוע שעבר) 3
המעגלהמינימליהואהסכוםהקטןביותרשלשתיהרמותשלתתיהעציםושלהקשתהחוצה. נריץBFS מ ונזכורלכלקודקודאתהרמהשלובסריקהואתהקודקודהשניבמסלולמ אליובסריקה (השורששלתתעץשהואבןשל ). נעבורעלכלהקשתותהחוצותהמחברותקודקודיםמתתיעצים שונים. לכלקשתכזוגודלהמעגלשהיאסוגרתיהיה סכוםהרמותשלהקודקודיםשלהועודאחד. נמצא אתהקשתהנותנתסכוםמינימלי. המעגלשקיבלנומורכבמהקשת (,v, )e,u ממסלולמ לu וממסלולמ לv. בגללשv,u נמצאים בתתיעציםשוניםשלבניםשל, המסלוליםהנ"לזריםולכןהמעגלפשוטומכילאת. ניקחמעגלפשוטכלשהוהמכילאת. המעגלמכיללפחותקשתאחתחוצהביןשניתתיעציםשונים. נסמןקשתזוכ v). e( u, המעגלמורכבממסלולמ לu, מסלולמ לv (המסלוליםזרים) והקשת (v. )e,u מכיווןשBFS מוצא אתהמסלוליםהקצריםביותר, המעגלהמתקבלמהמסלוליםבעץמ לu ומ לv עםהקשת (v )e,u הוא באורךקטןאושווהלמעגלשבחרנווהואפשוטומכילאת. לכןהמעגלהמינימליהפשוטהמכילאת מכילבדיוקקשתאחתחוצה..O( E) O() סיבוכיות:. O( V + E) :BFS בדיקה: מעברעלכלהקשתות, כלקשתב סה"כ: E). O( V + פעולות.. A, B גרףמכווןעםשתיתתיקבוצותשלקודקודים G= יהיה E) ( V, נגידכיA ניתנתלהפרדהמB אםאפשרלחלקאתקודקודיהגרףלשתיקבוצות V, V V ל ישאותוכיוון. V B ולכלהקשתותבין V, A כךש V ( V UV = V, V IV = ) בהנתןגרףוקבוצותכנ"לקבעהאם A ניתנתלהפרדהמ B. A B,a ונבדוקהאםקיימיםמסלוליםמ a לb ומb לa (למשלע"י b לקודקודים A, נכווץאתהקבוצות B.(BFS אםקיימיםשניהמסלולים, אזאיןחלוקהכזו. אחרתישחלוקה.
V נניחשיששנימסלולים: מסלולמa לb ומסלולמb לa. כלחלוקההמפרידהבין a לb חותכתאתשני המסלוליםולכןמכילהקשתותבכיווניםמנוגדים. לכןאיןחלוקה. a b V נניחשאיןאתשני המסלוליםונניחבליהגבלתהכלליותשאיןמסלולמB לA. V נסמןב אתכלהקודקודיםהניתניםלהגעהמ B. מכיווןשאיןמסלולמB לA, אז קודקודיםמA. A V B V נניחשישקשת v) ( u, כךש סיבוכיות: שתי סריקותBFS : לא כולל, v V u V אזיישמסלולמB לu ולכןישמסלולמB לv. סתירה. V. O( V + E) =G. תאראלגוריתםהמוצאקבוצתקודקודים U בעלתגודלקטןביותר, כך נתוןגרףמכוון E) ( V, לv. עבורוישמסלולמכווןמu u U קיים v ( V U שלכל ) אםהגרףהוא,DAG נבחראתהקבוצה U ע"יבחירתכלהקודקודיםבעלידרגתכניסה 0 (קודקודים שאיןאליהםאףקשת). אחרתנכווץרכיביםקשיריםהיטבעבורכלקודקודבעלדרגתכניסה 0 בגרף המכווץ. אםהואקודקודיחידבגרףהמקורי, נוסיףאותול U. אםהואמייצגרכיבקשירות, נבחרקודקוד אחדבאופן שרירותימהרכיב. תרגול 6 3.4.04 (המשךהאלגוריתםמהתרגולהקודם) עבורגרףחסרמעגלים, אם u קודקודבעלדרגתכניסה 0, u חייבלהיותבקבוצה u (כיאיןמסלול מקודקודאחראליו). לכןכלהקודקודיםבעלידרגתכניסה 0 חייביםלהיותבקבוצה. אם u קודקודעםדרגתכניסהגדולהמ 0, קייםקודקוד כךשקיימתקשת u). e( u, u בעלדרגתכניסה 0, סיימנו. אחרתקיים אם דרגתכניסה 0, מכיווןשהגרףחסרמעגלים. u u וכךהלאה. התהליךיעצררקכשנגיעלקודקודעם אםהגרףמכילמעגלים, u קודקודבעלדרגה 0 בגרףהחדשו u קודקודברכיבש u מייצג. מכלמסלולמ u לקודקודאחר v בגרףהחדשאפשרלבנותמסלולמ u ל v בגרףהמקורי. לכן הקבוצהשבחרנוחוקית. תהי U קבוצהחוקית. לרכיב u בגרףהחדשישדרגתכניסה 0. לכןעבורקודקודבתוךהרכיבאפשר להגיעאליורקמהקודקודיםהאחריםברכיב. משוםכך U מכילהלפחותקודקודאחדמהרכיבבעל דרגה 0 ולכןהקבוצהשבחרנומינימלית.
מסלוליםקליםביותר =G עםמשקליםאישלילייםעלהקשתותונתוניםקודקודים נתוןגרף E) ( V, אנומחפשיםאתהמשקל הקלביותר (סכוםהקשתותבמסלול) מ ל.., האלגוריתםשלדייקסטרה נגדיר 3 סוגיםשלקודקודים:. קודקודיםשמצאנועבורםאתהמרחקהקצרביותרמ. קודקודיםשמצאנולהםמרחקזמנימ (מועמדים)..3 קודקודיםשעדייןלאמצאנועבורםאתהמסלולמ. (קודקודים פתורים). מתחיליםבקודקוד כמועמדעםמרחקזמני 0. שלבב': איטרציה מוצאיםאתהקודקוד v בעלהמרחקהזמניהקטןביותרמביןהמועמדים, הופכיםאת המרחקהזמנילקבוע (מעביריםאת v לפתורים). עבורכל u שכןשל v נעדכןאתהמרחקהזמני u). M[ u] = min M[ u], M[ v] + w( v, ( ) תתהבעיההכלליתהיאמציאתהמרחקהמינימלי מ דינמי. לכלקודקוד. נמצאאתהפתרוןבאמצעותתכנון v 8 v 9 0 0 5 v 3 3 9 7 5 4 v 4 7 6 סיבוכיות: עלמבנההנתוניםלבצעאתהפעולותהבאות: - הוצאתמינימום. - עדכון. - הכנסה. בשימושבערימההסיבוכיותהכלליתהיא ) V.O( E log האלגוריתםשלדייקסטרהלאיעבודאםישנןקשתותשליליות. אםישנומספרקבועשלקשתות שליליות, אנויכוליםלמצואאלגוריתםאחרשיפתוראתהבעיהבאותהסיבוכיות. תרגיל: G= גרףמכווןעםמשקליםאישלילייםעלהקשתות, פרטלקשתאחת v) e( u, בעלת יהי E) ( V, משקלשליליונתוןקודקוד. מצאאתהמרחקמ ליתרהקודקודיםבגרף. נניחשאיןמעגליםבעלי משקלשלילי.
u -5 v 0 e נורידאתהקשת e ונמצאאתהמרחקמ לכלהקודקודיםבמסלוליםשלאמשתמשיםב דייקסטרהמ. נסמןב d אתהמרחקים. נמצאאתהמרחקמ v לכליתרהקודקודיםע"ידייקסטרהמ. v לכלקודקוד x נחשבאתהמרחק: x). d ( x) = min d ( x), d ( u) + w( e) + d ( ע"י ( ) v תרגול 7 0.4.04 סיבוכיות: O( E log V ) ברורשהמסלולשמצאנוהואמסלולחוקי. אפשרלהניחשהמסלולהקלביותרמ לקודקודכלשהו x הואפשוט. יהיP המסלולהקלביותרמ ל x (אנומניחיםכי P הואמסלולפשוט הואלאיכוללהיותמעגל משוםשמשקלוהואאישלילי). אםP לאעוברדרך, e אזP קייםגםבגרףללאהקשתהשליליתולכן w( p) d מכיווןשדייקסטרה u (מסלולפשוטלא ( ). w( p) d ( x) min d ( x), d ( u) + w( e) + d ( x) v P מוצאאתהמסלולהמינימלי. לכן e, P= P כךש ל מסלול מ אםP עוברדרךהקשתהשלילית, אז P דרך.( e. x ל v מ e מסלולפשוטלאדרך P מנכונותדייקסטרהנקבל: w( P ) d ( u) w P d x ( ) v ( ) לכן min(...). w( P) d ( u) + w( e) + d ( x) אםישנומספרקבועשלקשתותשליליות, אנויכוליםלהפעילאלגוריתםהדומהלאלגוריתםהזה. אםאין לנומספרקבועשלקשתותשליליות, לאנוכללהשתמשבו. v יהיG גרףמכווןעםמשקליםאישלילייםעלהקשתות. קודקודבG. כלקשתבG צבועהבצבע כחולאואדום. מסלולמתחלףבגרףהואמסלולשאיןבושתיקשתותרצופותבאותוצבע.
מצאאתהמסלולהמתחלףהקלביותרמ ל. 5 36 4 ניתןלכלצומתשניערכים: משקלאדוםומשקלכחול, לפיצבעהקשתהאחרונהשהגיעהאליו. נריץ דייקסטרה. לאחרמכןנבחרעבורכלקודקודאתהמינימלימביןשניהערכים. B R :( vb המסלולהמתחלף לכלקודקודנחפששניערכים (מתייחסיםלקודקוד v כאלשניקודקודים, vr הקלביותרמ אליוהמסתייםבקשתאדומהוהמסלולהמסתייםבקשתכחולה. האתחוליהיההכנסת אדוםו כחוללמועמדים עםמשקלזמני 0. בשלב האיטרציהמוציאיםאתהמועמדהמינימליללאחשיבותלצבע, הופכיםאתהערךשלולסופיבצבע המתאיםומסתכליםרקעלהשכניםשלובצבעהנגדי. בסיוםהאלגוריתםבוחריםאתהמינימלימבין., סיבוכיות: מריציםדייקסטרהעל n קודקודים. בכלשלבנוספתבדיקהאחת (צבעשלקשת). לכןהסיבוכיותהיא ) V.O( E log הוכחה באינדוקציה על סדר הפתרון: 4 בסיס: המסלול המתחלף הקל ביותר מ לעצמוהואבמשקל.0 הנחת האינדוקציה: כל הקודקודים שנפתרו לפני =x ( נפתרונכון (הערךשלהםהואערךהמסלולהמתחלףהקל B, R ) v x ביותרהמסתייםבצבעהמתאים - M ( ) R u או.( M ( ) B u. v R נוכיחעבור, OPT המסלולהמתחלףהקלביותרמ ל v המסתייםבקשתאדומה. R יהי ) v (. OPT ( v R נסמן : u הקודקודהאחרוןבמסלוללפני v במסלול ). OPT R ( v) = OPT R ( v) u er לכן v) ( u, לפיהנחתהאינדוקציה: v) M [ u] OPT ( (בעצםהואשווה, אךמספיקההמסקנההזאת) ( ) B R u OPT ( v) M [ u] + w( e ) min M [ x] + w( e ( x, v)) = M ( v) R B R B R R x er ( x, v) E תרגול 8 4.5.04
נתוןגרףמכווןעםקיבוליםאישלילייםעלהקשתות. קיבולתשלמסלולמוגדרתכקיבולתהקשת המינימליתבמסלול. בהנתןקודקוד מצאעבורכלקודקוד v אתהקיבולתהמקסימליתשלמסלולמ ל. v 6 5 3 4 9 7 8 האלגוריתםיפעלבדומהלדייקסטרה, פרטלשינוייםהבאים: אתחול נאתחלאתכלהקודקודיםבקיבולזמני 0 ונכניסאת למועמדיםעםקיבולזמני. שלב נוציאאתהמועמדבעלהקיבולהזמניהגדולביותר (נחזיקערימתמקסימום), נהפוךאותולפתור ונעדכןאתהשכניםשלו. אם u מעדכןאת, v אז v)) c( v) = max c( v),min c( u), w( e( u, { { }}.( d( v) = min { d( v), d( u) + w( e( u, v)), v אז } u e( u, v) E (בדייקסטרה אם u מעדכןאת { { c u w e u v }} c( v) = max min ( ), ( (, )) סיבוכיות: השינוימדייקסטרההואערימת מקסימוםבמקוםמינימוםוחישובשונהבכלעדכון. לכןהסיבוכיותהיא.O( E log V ) הוכחה באינדוקציה:. בסיס: המסלול הריק מ לעצמו הוא בקיבול.u c( u), v u הנחה: עבור כל קודקוד שנפתר לפני ל הוא הקיבולת המקסימלית של מסלול מ v אתהקודקודהאחרוןלפני u נסמןב. v ל המסלולבעלהקיבולתהמקסימליתמ, OPT v נסמן. e( u, v) בליהקשתהאחרונה OPT v OPT אתהמסלול v u. OPT v נסמןב במסלול. OPTv = min( OPT v u, w( e( u, v)) ) ( ) { } { ( )} x e( x, v) E לפי ההגדרה OPT = min OPT, w( e( u, v)) min c( u), w( e( u, v)) max min c( x), w( e( x, v)) = c( v) v v u הנחת האינדוקציה על מקסימום על קבוצה גדול u או שווה לכל איבר בה
,. קשת e תקרא נתוןגרףמכוון G עםמשקליםאישלילייםעלהקשתות. נתוניםשניקודקודים מיותרתאםהיאלאשייכתלאףמסלולקלביותרמ ל. תאראלגוריתםהמוצאאתכלהקשתות המיותרותבG. ל. d נריץדייקסטרהמ ונקבללכלקודקוד u אתהמרחקמ ל.u נסמן u) ( נהפוךאתהגרףונריץדייקסטרהמ בגרףההפוך. נקבללכלקודקוד u אתהמרחקהקלביותרמ. d ( u) בגרףההפוך. נסמן u נעבורעלכלהקשתותבגרף. קשת (v )e,u המקיימתאתהשוויון ) d ( u) + w( e( u, v)) + d ( v) = d ( היאקשתלאמיותרת. כלהשארמיותרות. סיבוכיות: פעמייםדייקסטרה ) V.O( E log.o( E ) הפיכת הגרף ) E.O( חישוב קבוע לכל קשת סה"כ: ) V.O( E log.u d ( u) מנכונות דייקסטרה נובע כי ל הוא המרחק הקל ביותר מ הואהמרחקהקלביותרמ ל v בגרףההפוךולכןהואגםהמרחקהקלביותרבגרףהמקורימ. d ( u) + w( e) + d ( v) > d ( ) v) e( u, מיותרתאםורקאם d ( v). ל v נוכיחש e d ( u) כיווןראשון: נניחש ). d ( u) + w( e) + d ( v) = d ( לכןאםנבנהאתהמסלולהמתאיםל בשרשור עם, נקבלמסלולמ ל העוברדרך e ומשקלומינימלי. לכן e d ובשרשורעםהמסלולהמתאיםל v) ( לאמיותרת. ל העוברדרך e ומקיים ). w( P) = d ( הואמסלולמ v ל. P u ו P כיווןשני: נניחש e לאמיותרת. לכןקייםמסלול בנוי בצורה מ ל הוא מסלול מ P P e, כךש P P P משום ש הוא תת מסלול של מסלול קל ביותר מ ל, נקבל u) w( P ) = d ( ובכיווןההפוךלגבי נקבל v). w( P ) = d ( לכן v). d ( ) = w( P) = w( P ) + w( e) + w( P ) = d ( u) + w( e) + d ( P תרגול 9.5.04 תרגיל נתוןגרףלאמכווןG עםמשקליםאישלילייםעלהקשתות. המכילאת. קודקודבG. מצאאתהמעגלהקלביותר
נריץדייקסטרה. נבנהעץמהקשתותביןהצמתיםלאבותשבונהדייקסטרה. בדומהלאלגוריתםהדומהבו השתמשנובBFS, הקשתהחוצהשביחדעםערכישניצמתיםבעלימסלולכלשהול, נותנתמסלול מינימלי, היאזושבונהאתהמעגלהקלביותר. הוכחאוהפרך בכלגרףלאמכווןG קייםקודקוד כך שעץ המסלולים הקלים ביותר מ הוא עץ פורש מינימלי. דוגמא נגדית: 3 3 דייקסטרה 3 עץ פורש מינימלי =G גרף. יהי E) ( V, חתךבגרףהואחלוקהשלהקודקודיםלשתיקבוצות:.V.V, V V V = V V = V V וקודקודשנינמצאב קשתבחתךהיאקשתשקודקודאחדשלהנמצאב קשתטובה קשתשהיאמינימליתבחתךמסויים.
קשתרעה קשתשהיאמקסימליתבמעגלמסויים. הוכח: =G גרףלאמכווןעםמשקליםאישלילייםעלהקשתות, כךשכלהמשקליםשונים, אזי אם E) ( V, קשת e לאיכולהלהיותגםטובוגםרעה. אנומניחיםשהגרףקשיר. e אם e קשתרעה, אזקייםמעגלש e היאהמקסימליתבו. לכןכלחתךהמכילאת לפחותבעודמקוםאחד. לכן e לאמינימליתבחתך. הוכח: באותם תנאים כל קשת היא טובה או רעה. חותך את המעגל עץ פורש מינימלי הסבר: ניקחעץפורשמינימלי. עבורכלקשתבעץניתןלהגדירחתך. קשתזותהיהבהכרחטובה. כל קשתאחרתבחתךסוגרתמעגלבונמצאתהקשתהטובה. הקשתהסוגרתאתהמעגלהיאהגדלהביותר בעץולכןהיאקשתרעה. =G עםמשקליםאישלילייםעלהקשתות. נתוןשכלהמשקליםשונים. נתוןגרףלאמכוון E) ( V, בהנתןקשתמסויימת v) e( u, קבעהאםהיאטובהאורעה. נמחקאת e ואתכלהקשתותשמשקלןגדולמ e מהגרף. נריץBFS מ u ונבדוקהאםבגרףהחדשיש מסלולל e. v היאקשתרעהאםורקאםישמסלולמ u ל v בגרףהחדש.
e לכן. e נניחשישמסלולבגרףהחדשמ u ל. v המסלולהנ"לסוגר מעגלעם. e e היאמקסימליתבמעגלכיווןשכלשארהקשתותקיימותבגרףהחדשולכןקטנותמ רעה. קשת ל מהמעגל, נקבלמסלולמ u e נניחש e קשתרעה. לכןקייםמעגלשהיאמקסימליתבו. אםנמחקאת v שכלהקשתותבוקטנותמ e ולכןהמסלולקייםגםבגרףהחדש. סיבוכיות: בניית הגרף החדש.O( E ). O( V + E ) BFS סה"כ: ) E. O( V + =G עםמשקליםאישלילייםונתון T עץפורשמינימלישל G. מוסיפיםלגרףקשת נתוןגרף E) ( V, חדשה. e מצאאתהעץהפורשהמינימלישלהגרףהחדש. נוסיףאת e לעץהפורשהמינימליונזרוקאתהקשתהמקסימליתבמעגלשנוצר. נניחשכלהמשקליםשונים. הקשתותבגרףהמקורי, פרטלקשתותT היורעות, כלומרהיהמעגלכךשהן מקסימליותבו. המעגליםהנ"ללאמשתניםעםהוספתקשתחדשה. לכןהקשתותנשארותרעות. הקשתהמקסימליתבמעגלשנסגרהיאקשתרעה. לכןזרקנואתכלהקשתותפרטלn קשתות ומשוםכךקיבלנועץפורשמינימלי. תרגול 0 8.5.04 מציאתהשמהמספקתל SAT (לאחרשמצאנושישפתרון) נכווץרכיביקשירותונבצעמיוןטופולוגי. אנויודעיםשאףמשתנהלאנמצאבאותורכיבקשירותכמו שלילתו, כלומראיןמעגלהמכילמשתנהושלילתו.. x = i,( x i x i x i x i שלביה - הנחה: איןמעגלהמכילמשתנהושלילתו. - נכווץרכיביקשירותונעשהמיוןטופולוגי. - אם מופיעלפני במיוןהטופולוגי, = 0 x. אחרת (אם מופיע אחרי i i j נוכיחשהביטוי ) x ( x הואבעלהערך. קיימותהקשתותהבאותבגרף: x i x j נניחבשלילהשההשמהשבנינואינהמספקת, כלומרש = 0 x ו 0 = x. נגדיר:. x ו j x - המקוםשל i N( x) j i הצומתבמיוןהטופולוגי. אנויודעיםש ) x. N( x ) < N( x ), N( x ) < N( x ), N( x ) < N( x ), N( x ) < N( j i j j i i i j קיבלנוש ) x N( x ) < N( x ) N( x ) < N( x ) N( וזאתסתירה. לכןההשמההיאמספקת. i i j j i שאלה
צריךלמצואעץבעלמשקלמינימליעלn. G= נתוןגרףלאמכווןוממושקל E) ( V, קודקודים. נתוןהאלגוריתםהבא: - מצאעץפורשמינימלישלG. - מצאאתהעלהשהסרתוגורמתלהקטנתהמשקלשלהעץבאופןמקסימלי. - החזראתהעץ, פרטלעלההנ"ל. הוכחאוהפרךאתהאלגוריתם. דוגמאנגדית: 0 0 30 5 6 3 האלגוריתםיתןלנועץעםמשקל 49 (ימחקאתהקשתבעלתהמשקל 6 ). העץהפורשהקטןביותרשל n צמתיםהואבמשקל.45 - שאלה נתוןגרףלאמכווןעםקיבולחיוביעלהקשתות. קיבולשלמסלולהואהקיבולהמינימלישלקשת במסלול. - יהיT העץהפורשהמקסימלישלהגרף. הוכחשהקיבולשלהמסלולהיחידבעץביןשני. v ל u שווהלקיבולהמקסימלישלמסלולמ u, קודקודים v תהי e הקשתהמינימליתבמסלולבין u ל v בעץ. נניחשישמסלולבגרףבין u ל v שהקיבולתשלוגדולהמהמסלולבעץ. לכןכלאחתמהקשתות במסלולהנ"לגדולהממשמ. e e מגדירהחתךבגרףהמפרידבין u ל. v לכןכלמסלולבין u ל v עוברבחתךהנ"ללפחותפעם אחת. משוםכךהמסלולבעלהקיבולהגדולביותרבין u ל v מכיללפחותקשתאחתבחתךהנ"לולכן e אינהמקסימליתבחתךשהיאמגדירה. זאתבסתירהלכךש e נמצאתבעץפורשמקסימום. מצא בזמן בגרף. ( log + ) O E V V אתהקיבולהמקסימלישלמסלולעבורכלזוגקודקודים
נמצאעץפורשמקסימום. מכלקודקוד v בעץנריץסריקה (למשלBFS ) ונחשבאתהקיבולמ v u (נניח u קרוביותרל,( v נסמן קודקודיהגרף. כאשרמגליםבסריקהקשת x. M[ v, x] = min M[ v, u], w ( u, x) ליתר ( ( )) תכונותשלעציםפורשיםמינימלים: האלגוריתםשלעץפורשמינימלייעבודגםעלקשתותשליליות. אםמעליםאתכלהקשתותבסכום מסויים, קשתשהיתהמינימליתבחתךתישארמינימליתבחתך. דרךנוספת לראותזאתהיאדרךמשקל העץ. אםאנומעליםאתכלהקשתותבסכוםקבוע, עץשהיהמינימלילפניכןישארעץפורשמינימלי. תרגול.6.04 רשתותזרימה, ופונקצייתקיבולאישליליתעל רשתזרימה ) ( N,, היאגרףמכווןעםקודקודים הקשתות e). c( זרימהברשתהיאפונקציהעלהקשתות e) f ( כךשהזרימהבכלקשתהיאבין 0 לקיבולהקשת, ( סכוםהזרימההנכנסתשווהלסכוםהזרימההיוצאת. ולכלקודקוד (פרטל זרימהמקסימליתהיאזרימהחוקיתכךשסכוםהזרימההיוצאתמ הואמקסימלי. ערךהזרימה סכוםהזרימההיוצאתמ. חתךברשת חלוקהשלהקודקודיםלשתיקבוצות, כךשקבוצהאחתמכילהאת והשניהאת. c( e) קיבולתשלחתך - e( u, v) u V v V f ( e) f ( e) זרימהבחתך - e( u, v) e( u, v) u V u V v V v V טענה בזרימה חוקית הזרימה בכל חתך שווה. משפט min ca= max flow החתךעםהקיבולהמינימליברשתשווהלערךהזרימההמקסימלית.
55 v v 05 5 47 4 3 30 v 3 30 v 4 c= f = 7 FF מתחיליםעםזרימה 0. בכלשלבמחפשיםמסלולמשפרזרימהומזרימיםבוככלשניתן. כאשראיןיותרמסלוליםמשפרים, עוצרים. מסלולמשפר מסלוללאמכווןמ ל, כךשכלקשתקדימהלארוויהוכלקשתאחורהלא ריקה. פוטנציאלשיפורשלמסלול מינימוםפוטנציאלהשיפורשלהקשתותבו. פוטנציאלשיפורשלקשתבמסלול: קשתקדימה e) c( e) f ( קשתאחורה e) f ( סיבוכיותהאלגוריתםתלויהבערךהזרימה. לכןהסיבוכיותהיא ) F. O( E 55 5 v v 05 הגרף לאחר שיפור אחד: 57 34 03 30 v 3 30 v 4
EC האלגוריתםפועלכמו FF עםהבדלאחד: המסלולהמשפרשנבחריהיההקצרביותרהאפשרי. V סיבוכיות: ) V. O( E טענה באלגוריתםהנ"למשתמשיםבכלקשתלכלהיותר הדגמתהרצתFF : מתחיליםעםזרימה 0: פעמים. 05 v v 05 0 07 04 03 00 v 3 00 v v v3 v4 (המסלולהמשפרהראשוןיכוללהיותרק המסלולהמשפרהראשון: עםקשתותקדימה, משוםשבקשתותאחורההזרימההיא 0). פוטנציאלשיפור 3. v 4 35 3 v v 05 07 04 33 30 v 3 v 4 30. v v פוטנציאלשיפור 3. 3
35 v v 05 3 37 34 03 30 v 3 30. v v v3 v4 המסלולשבחרנובהתחלהנהפךשובלמסלולמשפר, משוםשהגרף השתנה. פוטנציאלהשיפורהוא 3. v 4 65 v v 05 6 37 34 33 60 v 3 v 4 60. v v פוטנציאלשיפור. 3 65 6 v v 05 47 44 3 60 v 3 60 v 4. v v פוטנציאלשיפור 3
95 v v 05 9 77 44 3 60 v 3 v 4 60. v v v v פוטנציאלשיפור. 3 4 05 0 v v 05 37 44 33 70 v 3 70 וזוהי הזרימה המקסימלית. v 4 טענה החתך הוא מינימלי אם ורק אם עבור כל זרימה מקסימלית כל הקשתות קדימה יהיו רוויות וכל הקשתות אחורה ריקות. תרגיל נתונהרשתזרימהוזרימהמקסימליתבה. מצאחתךמינימלי. נסרוקמ ונתקדםרקעלקשתותקדימהלארוויותאואחורהלאריקות. כאשרלאנוכללהתקדםעוד נקבלחתךמינימלי. סיבוכיות:.BFS תרגיל בהנתןרשתזרימהוזרימהמקסימלית, מצאאלגוריתםהבודקהאםישנוחתךמינימלייחיד.
נשתמשבאלגוריתםהקודם. לאחרמכןנתחילמ ונלךהפוך. נתקדםכלפעםשישקשתאחורהלא רוויה. נתקדםעדשנקבלחתךמינימלי. אםזהואותוחתךשמצאנו, הואיחיד. אםלא, הואלאיחיד. כיוון : אםמצאנועודחתך, סימןשהואלאיחיד. כיוון : צריךלהוכיחשאםמצאנובשתיהסריקותאתאותוהחתך, זהוהחתךהיחיד. החתךהראשוןשמצאנובסריקההראשונההואהחתךהמינימליהקרובביותר ל. כלחתךמינימליאחר. V V בגרףבהכרחיכילאתהקבוצההמכילהאת. הוכחנושהחתךהואהכיקרובל. אםאנומפעיליםאתהאלגוריתםמהכיווןהשני, הואהכיקרובל. אםזהואותוחתך, אזזהוהחתךהיחיד. תרגול 8.6.04. ומ חתךשנמצאע"יהרצתהאלגוריתםמ - ( V, V ) עבור כל חתך מינימלי ( V, V מתקיים ). V V V ו V V V = V = V e תאראלגוריתםהקובעהאם. e( u, v) תרגיל נתונהרשתזרימהוזרימהמקסימליתבה. כמוכןנתונהקשת שייכתלאחד (אויותר) מהחתכיםהמינימלייםברשת. טענה: קשת e שייכתלחתךמינימליאםורקאם כלהקטנהשלהקיבולתשלהמקטינהאתערךהזרימה המקסימליתברשת. נמצאמסלולעםזרימהחיוביתמ ל העוברדרך. e נקטיןאתהזרימהבמסלולב ε ונקטיןאת יכולתהקיבולשל e ב ε. נחפשמסלולמשפרזרימהמ ל e. שייכתלחתךמינימליאםורקאם איןמסלולכזה. נניחש e שייכתלחתךמינימלי M. הקטנהשלהקיבולתשל e ב ε מקטינהאתהקיבולשל M ב ε. לכןקיבלנוחתךבקיבולתקטנהמהמינימלי בגרףהמקוריולכןהזרימההמקסימליתקטנהיותר. נניחש e לאשייכתלאףחתךמינימלי. נסמן: M החתךהמינימלי, M החתךהקטןביותרהמכילאת M M. e מההנחהנובעש. M > M לכןאםנקטיןאתהקיבולשל e ב, החתכיםהיחידים M M שיפגעוהםהחתכיםהמכיליםאת e וקיבולםיהיהגדולאושווהל M. M < לכןהזרימה המקסימליתאינהמשתנה. שימושים של זרימה
שידוך בגרף דו צדדי שידוך הוא תת קבוצה של קשתות שאין לאף שתים מהן קודקוד משותף. גודלהשידוךהואמספרהקשתות (מספרהזוגותהמשודכים). שידוךמקסימליהואשידוךחוקיעםמספר מקסימלישלקשתות. מציאתהשידוךהמקסימלינעשיתע"יהוספתכיווןלקשתותמהקבוצההראשונהאלהקבוצההשניה. נוסיףקודקוד וקודקוד. נמתחקשתותמכוונותמ אלכלאחדמהקודקודיםבקבוצההראשונה. נמתחקשתותמהקבוצההשניהל. נגדירשלכלהקשתותישקיבול. הקיבולהמקסימלייהיהכל הקשתותשלהגרףהדוצדדישזורםבהןמשהו. כלקשתרוויהבגרףהדוצדדיהיאקשתבשידוך. הסבר: ישרקקשתאחתמ לכלקודקודבקבוצההראשונה. לכןאםהזרימההיא, תוכללהיותממנורק קשתאחתביןשתיהקבוצותבהישזרימה (אלגוריתם FF יתןערךשלםשלזרימהעבורקיבולתשלמה שלקשתות). סיבוכיות: לפיFF הסיבוכיותתהיה. O( E V ) ניתןלהראותהתאמהביןזרימהלשידוך. אםניתנתזרימה, ניתןלבנותשידוךחוקיבאותוגודל. אםניתן שידוך, ניתןלבנותממנוזרימה. אםאנולוקחיםזרימהמקסימלית, ניתןלהתאיםלהשידוך. השידוךהוא מקסימלי, משוםשאםהואהיהיותרגדולהיהניתןלבנותממנוזרימהגדולהיותרמהזרימההמקסימלית. תרגיל
,...,m}.{ צריך y,..., yn,..., S. הקבוצותאינןבהכרחזרות. כולןמוכלותבקבוצה נתונות n קבוצות Sn,..., x ו למצוא (אולהגידשאין) מערכתכפולהשלנציגים, כלומרמספרים xn,...,,..., y שונים. yn ו x xn וכלהמספרים xi, yi Si כך ש קבוצות מספרים M m קשתותלפי שייכותבקיבול S M S n אם הזרימה המקסימלית שווה ל, n ישנציגיםכאלה. אםהיאקטנהמ, n איןנציגיםכאלה.. V = m סיבוכיות: הסיבוכיותהיאשל.FF נתרגםאת n<. לכן m לנתוניהשאלה. אנויודעיםש O( E V ) = E S i תרגול 3 5.6.04 (סכום גודל הקבוצות). A V V משפטהול (משפטהחתונה) =G גרףדוצדדי. בG יששידוךהמכסהאת יהי ) V ( V, V, מתקיים אם ורק אם לכל. 3 N( A) - קבוצתהשכנים. A N( A),V אזלכלקודקודהשייךל נוכיחשאםיששידוךהמכסהאת לפחותבגודלשלהקבוצה. משוםכךלכל A A V מתקיים. ישבןזוג. לכןמספרהשכניםהוא N( A) A V מספרהשכניםשלהגדולאושווהמגודלה. נניחשהתנאימתקיים, כלומרלכלתתקבוצהשל,V נוכיחאת נוכיחאתהטענהבעזרתרשתזרימה. אםנראהשברשתהזרימהשיצרנוישזרימהבגודל הטענה.
V V נבנה רשת זרימה ונוכיח שיש בה זרימה בגודל נראה שהחתך המינימלי הוא בגודל. V V. V בקיבולתגדולהאושווהל חתךכלליבגרףיראהבצורההבאה ולכן הזרימה ברשת היא בגודל V וקודקודים מ (, קודקודיםמ :(V. V נראהשכלחתךהוא V V N( A) A V עלינולהראותשישבחתךלפחות שלA. V A+ N( A) V קשתות. אנויודעיםשמספרהשכניםשל A גדולאושווהמהגודל k הוכחשבגרףיש.( k תרגיל נתוןגרףדוצדדי k רגולרי (דרגתושלכלקודקודהיאבדיוק מושלמיםזרים (איןאףזוגדומהבאףאחדמהשידוכים). שידוכים הוכחהבאינדוקציה: בסיס: = k. גרף רגולריהואשידוךמושלם. הנחה: עבורגרף k רגולרי, בגרףיש k שידוכים מושלמים זרים. k אםנוכיח שבגרף k רגולרייששידוךמושלם, אזאפשרלמחוקשידוךזהמהגרףולקבלגרףk רגולרי. בגרףהזהישלפיההנחהk שידוכיםמושלמיםזרים. הםזריםגםלשידוךהחדשולכןיש שידוכיםמושלמיםזרים.
טענה: בגרף דו צדדי k רגולרי יש שידוך מושלם.. A נראה ש. V = V מספר הקשתות היוצאות מ V הוא V k. מספרהקשתותהיוצאותמ V A V k V. = V k.v מספיקלהוכיחשלכל נראהשיששידוךהמכסהאת תהי מתקיים הוא אותו מספר:. N( A) A A V קשתות. כלקודקודב. מספרהקשתותמ A ל הוא A) N( N( A) לכןל. k A נכנסות לפחות k A N( A) k מקבל בדיוק קשתות. לכןמספרהקודקודיםב N( A) הוא לפחות תרגיל נתונהרשימה M שלמטוסים, רשימה N שלנווטיםורשימה P שלטייסים. צריךלמצואצוותשיעלהמס' מקסימלישלמטוסיםלאוויר, כךשכלצוותמכילטייסונווט, כאשרלכל אישצוותנתונהרשימהשלמטוסיםשמותרלולעלותאליהם. פתרון: כדילמנועמצבבוכמהצוותיםנכנסיםלאותומטוס, נגדירקשתממטוסלהעתקשלעצמובקיבולת. N M P סיבוכיות:,FF משוםשהזרימהכאןחסומהע"ימספרהמטוסיםומספרהטייסים. ניתןלראותשכל טייסיכוללהיותשייךרקלמטוסאחד. באותואופןגםכלנווטיכוללהיותשייךרק למטוסאחד. משוםכךזהוציוותחוקיוגודלוהואגודלהזרימה. לכןאםהוכחנושישנהזרימהבגודל ניתןלבנותממנהציוותחוקיבגודל. k לכןהזרימההמקסימליתשווהלציוותהמקסימלי. שיטותלפתרוןבעיותזרימה:. לשחקעםהקיבולות.. גרףדוצדדי, תלתצדדי. 3. לפצלקודקודיםכדילהגבילקיבולתלקודקוד., k