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

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

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

דוגמה נגדית. גבר יחיד (), שתי נשים (), ושני שדכנים עם . השדכן מכיר את ואת ; השדכן מכיר את ואת (כלומר מוכר לשני השדכנים).

  • הזרימה החוקית המרבית : המסלול (זרימה ) יחד עם (זרימה ) — סה"כ יחידות זרימה, חוקיות בכל הקיבולות. שימו לב ש- יחידות עוברות דרך הקדקוד .
  • השידוך המרבי : יש רק גבר אחד , והוא יכול להיות משודך לאישה אחת בלבד.


לכן הזרימה המרבית השידוך המרבי, והאלגוריתם מחזיר תוצאה שגויה.

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