140 likes | 387 Views
Design and Analysis of Algorithms Recitation 10 DHC p HC. 2010 Gal Tamir Material partially based on 236343 - Computability Theory. HC and DHC. Hamiltonian Cycle (HC) קלט: גרף G בעיה: האם קיים ב- G מעגל המילטוני – מסלול שמבקר בכל צומת בדיוק פעם אחת וחוזר לנקודת ההתחלה שלו.
E N D
Design and Analysis of AlgorithmsRecitation 10 DHC p HC 2010 Gal Tamir Material partially based on 236343 - Computability Theory Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
HC and DHC • Hamiltonian Cycle (HC) • קלט: גרף G • בעיה: האם קיים ב-G מעגל המילטוני – מסלול שמבקר בכל צומת בדיוק פעם אחת וחוזר לנקודת ההתחלה שלו. HC = {<G> | Gקיים מעגל המילטוני בגרף } • Directed Hamiltonian Cycle (DHC) • קלט: גרף מכוון G • בעיה: האם קיים ב-G מעגל המילטוני מכוון – מסלול שמבקר בכל צומת בדיוק פעם אחת וחוזר לנקודת ההתחלה שלו. DHC = {<G> | Gקיים מעגל המילטוני מכוון בגרף המכוון } Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
HC היא שפה NP-שלמה • כמו במקרה המכוון, קל להראות ש-NPHC • נראה ש-HC היא NP-קשה ע"י רדוקציה מ-DHC • הרדוקציה: בהינתן גרף מכוון G=(V, E), יש לבנות בזמן פולינומי ב-|V| גרף לא מכווןG’ כך שב-G’ קיים מעגל המילטוני אמ"מ ב-G קיים מעגל המילטוני מכוון • הצעות ? Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
הרדוקציה: ניסיון ראשון • G’ זהה ל-G עם קשתות לא מכוונות • אם ב-G (המכוון) יש מעגל המילטוני, אז גם ב-G’ (הלא מכוון) • ואם ב-G אין מעגל המילטוני ? • ב-G’ עדיין יתכן מעגל המילטוני: Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
e הרדוקציה: ניסיון שני • שכפול צמתים • כל צומת ב-G : יוחלף ב: • הבעיה היא שב-G’ יתכן מעגל המילטוני שלא עובר דרך הקשת e. לדוגמא: DHC HC Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
הרדוקציה: פתרון נכון • צמתי G’ יהיו V x {0,1,2} • קשתות G’ יהיו: • לכל צומת vG תהיה קשת • לכל צומת vG תהיה קשת • לכל קשת uv ב-G נתאים קשת • כלומר, מחליפים כל צומת בגרף המקורי בשלושה צמתים באופן הבא: • פולינומיות: הכפלנו את מספר הצמתים פי 3, והוספנו 2 קשתות לכל צומת. ניתן לעשות זאת בזמן פולינומי. יוחלף ב: Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
דוגמא – אין מעגל המילטוני G G’ Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
דוגמא – יש מעגל המילטוני G G’ Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
הוכחת תקפות: כוון • נניח שב-G קיים מעגל המילטוני מכוון: • אזי ב-G’ הוא מעגל המילטוני לא מכוון Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
הוכחת תקפות: כוון • נניח שב-G’ קיים מעגל המילטוני לא מכוון • הוא חייב לכלול קטעים מהצורה: • אחרת לא נוכל להגיע לצומת • בין כל שני קטעים כאלה חייבת להיות קשת מהצורה: • לא יכול להיות מקרה של קשת למשל, מכיוון שאין קשתות כאלה בגרף • לכן המעגל ההמילטוני חייב להיות מהצורה: • כל מסלול מהצורה מייצג צומת ב-G, ואילו כל קשת מהצורה מייצגת קשת מכוונת ב-G. לכן: • הוא מעגל המילטוני מכוון ב-G Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
אלגוריתמי קירוב • עבור בעיות רבות שאינן ניתנות לפתרון יעיל אם PNP , ניתן למצוא ביעילות פתרון מקורב • הגדרות: אלגוריתם A הוא אלגוריתם קירוב עד כדי קבוע חיבורי לפונקציה, אם לכל x, • הגדרות: אלגוריתם A הוא אלגוריתם קירוב עד כדי קבוע כפלי לפונקציה , אם לכל x, עבור בעיות מינימום, אם האלגוריתם משיג פתרון שערכו A(x) וערך הפתרון האופטימאלי הוא f(x), אז הנוסחא לעיל שקולה ל: באופן דומה, עבור בעיות מקסימום: Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
Vertex Cover • נגדיר:גודלכיסוי מינימאלי ב-G • ראינו אלגוריתם לקירוב כפלי 2 ל- ע"יLinear Programming • קיימים אלגוריתמים ישירים ופשוטים יותר שמשיגים אותו יחס קירוב • לא ידוע אלגוריתם קירוב עם יחס טוב יותר • ידוע [מאמר ב-STOC 2002] שאם PNP לא קיים אלגוריתם קירוב פולינומי עם יחס טוב יותר מ- 1.3606 Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
Gב- G’ב- דוגמא • נגדיר:מספר מעגלי המילטון מכוונים בגרף המכווןG • האם ניתנת לחישוב במדויק? • טענה: לא ניתן לקרב (ע"י אלגוריתם פולינומי) את עד כדי קבוע חיבורי 2 , בהנחה PNP • הוכחה: נניח בשלילה שקיים אלגוריתם פולינומיA שמקרב את עד כדי קבוע חיבורי 2, כלומר: בהינתן גרף מכוון G, נבחר 3 צמתים כלשהם ונפצל אותם באופן הבא: (בונים גרף G’) אם דרך הצומת המקורי עבר מעגל המילטוני, דרך הצמתים שפיצלנו את הצומת אליהם יעברו כעת 2 מעגלים המילטוניים כל פיצול מכפיל את מספר המעגלים בגרף פי 2. עשינו 3 פיצולים: הכפלנו פי 8 יוחלף ב: Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8
המשך הוכחה • נפעיל את A על G’, ונקבל: • נוכל להכריע את DHC בזמן פולינומי (בסתירה להנחה ש-PNP) (נחשב את במדויק ואם אז נקבל, ואחרת נדחה) שלם קטן מחצי ערך שלם קרוב ביותר Alex Shraer, Design and Analysis of Algorithms, Technion EE, Winter 2007/8