מבני נתונים ואלגוריתמים - מחברת קורס/גרפים/אלגוריתמי זרימה/תרגילים/מציאת מסלולים זרים/תשובה

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

א'[עריכה]

נבנה רשת זרימה בה הגרף הוא הגרף המקורי, ולכל קשת יש קיבול 1. נריץ אלגוריתם זרימה המבטיח זרימות שלמות (כמו, לדוגמה, אלגוריתם Edmonds-Karp. קל להראות שבזרימה המירבית, כל קשת תזרים 0 או 1 (יש בדיוק שתי אפשרויות). קל להראות שהקשתות בהן יש זרימה 1 - הן בדיוק הפתרון לבעיה.


ב'[עריכה]

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



דוגמה:

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

התמרת הצמתים.
התמרת הצמתים.

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


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

נמשיך מכאן כבסעיף הקודם.