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