שאלת מבחן באלגוריתמים - האוניברסיטה הפתוחה 2019 - ספיקות
נתונה נוסחת 3-CNF שבה כל אחד מהמשתנים מופיע בדיוק בשלוש פסוקיות שונות, וכל פסוקית כוללת בדיוק שלושה משתנים שונים. הוכיחו כי הנוסחה ספיקה, והציגו אלגוריתם למציאת השמה מספקת. הדרכה: היעזרו במשפט Hall.
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
האוניברסיטה הפתוחהמועד 85 · 2019 · סמסטר ב
★★★★★
ספיקותזרימה ברשתותרדוקציהגרפיםהוכחה
ספרו: הופעות משתנים משבצות פסוקיות . בנו גרף דו-צדדי פסוקיות–משתנים, והשתמשו במשפט Hall () כדי להסיק קיום זיווג מושלם המשדך לכל פסוקית משתנה שמספק אותה.
מבנה. מספר הופעות המשתנים הוא (כל משתנה ב-3 פסוקיות), והוא שווה למספר משבצות הפסוקיות (כל פסוקית 3 משתנים); לכן .
גרף דו-צדדי . צד אחד — קדקוד לכל פסוקית ; צד שני — קדקוד לכל משתנה (סה"כ קדקודים). לכל פסוקית נחבר את לשלושת קדקודי המשתנים המופיעים בה.
קיום זיווג מושלם (Hall). תהי קבוצת פסוקיות. מספר הצלעות היוצאות מ- הוא בדיוק , וכל קדקוד-משתנה הוא בעל דרגה (כל משתנה ב-3 פסוקיות). לכן , כלומר — תנאי Hall מתקיים, וקיים זיווג מושלם המשדך לכל פסוקית משתנה ייחודי.
מכאן ספיקות. בזיווג כל פסוקית מותאמת למשתנה שונה המופיע בה. נציב לאותו משתנה את הערך המספק את הליטרל שלו בפסוקית ( אם חיובי, אם שלילי), ולשאר המשתנים ערך שרירותי. כל פסוקית מסופקת ע"י המשתנה המשודך לה, ואין התנגשות (כל משתנה משודך לכל היותר לפסוקית אחת). לכן ספיקה.
אלגוריתם למציאת ההשמה.
0. בנה את הדו-צדדי; הוסף מקור המחובר לכל וניקוז המחובר מכל , כל הצלעות בקיבול .
1. הרֵץ אלגוריתם זרימה מקסימלית (Edmonds–Karp); הזרימה המקסימלית (בקיבולים יחידתיים) = זיווג מקסימלי = מושלם.
2. לכל המשודך לפסוקית — הצב את כך שיספק את הליטרל שלו באותה פסוקית; שאר המשתנים כרצוננו.
זמן ריצה. גרף בעל קדקודים ו- צלעות: בנייה , הרצת EK — סה"כ .
גרף דו-צדדי . צד אחד — קדקוד לכל פסוקית ; צד שני — קדקוד לכל משתנה (סה"כ קדקודים). לכל פסוקית נחבר את לשלושת קדקודי המשתנים המופיעים בה.
קיום זיווג מושלם (Hall). תהי קבוצת פסוקיות. מספר הצלעות היוצאות מ- הוא בדיוק , וכל קדקוד-משתנה הוא בעל דרגה (כל משתנה ב-3 פסוקיות). לכן , כלומר — תנאי Hall מתקיים, וקיים זיווג מושלם המשדך לכל פסוקית משתנה ייחודי.
מכאן ספיקות. בזיווג כל פסוקית מותאמת למשתנה שונה המופיע בה. נציב לאותו משתנה את הערך המספק את הליטרל שלו בפסוקית ( אם חיובי, אם שלילי), ולשאר המשתנים ערך שרירותי. כל פסוקית מסופקת ע"י המשתנה המשודך לה, ואין התנגשות (כל משתנה משודך לכל היותר לפסוקית אחת). לכן ספיקה.
אלגוריתם למציאת ההשמה.
0. בנה את הדו-צדדי; הוסף מקור המחובר לכל וניקוז המחובר מכל , כל הצלעות בקיבול .
1. הרֵץ אלגוריתם זרימה מקסימלית (Edmonds–Karp); הזרימה המקסימלית (בקיבולים יחידתיים) = זיווג מקסימלי = מושלם.
2. לכל המשודך לפסוקית — הצב את כך שיספק את הליטרל שלו באותה פסוקית; שאר המשתנים כרצוננו.
זמן ריצה. גרף בעל קדקודים ו- צלעות: בנייה , הרצת EK — סה"כ .