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