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