שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2022 - זרימה ברשתות

שאלה 2 – תשלום זרימה (דוגמה מעגלית)

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

(א) לכל קדקוד מקדקודים מתקיים (חוק שימור-זרימה, כרוך).

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

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

שלב 1: הגדרת זרימת העודפים

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

שלב 2: ניתוח חוק שימור הזרימה

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

שלב 3: בניית רשת זרימה חדשה

נבנה רשת זרימה חדשה באופן הבא:
1. צמתים:
(נוסיף מקור-על ובור-על ).
2. קשתות וקיבולים:

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

שלב 4: פתרון הבעיה

נשים לב כי , ולכן סך הקיבולים של הקשתות היוצאות מ- שווה לסך הקיבולים של הקשתות הנכנסות ל-.
קיימת זרימה חוקית
ברשת המקורית אם ורק אם הזרימה המקסימלית ברשת מהמקור לבור מרווה את כל הקשתות היוצאות מ-. כלומר, אם ערך הזרימה המקסימלית שווה ל- .

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