יחידה 7

אלגוריתמי קירוב

יחסי קירוב ושיטות הוכחה לכיסוי קודקודים, Max-Cut, ‏TSP מטרי ואריזת פריטים.

מטרות

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

1. אופטימיזציה אינה שפת הכרעה

בעיית הכרעה מחזירה ביט יחיד. למשל, VC-DEC שואלת אם לגרף יש כיסוי קודקודים בגודל לכל היותר kk. בעיית האופטימיזציה MIN-VC מבקשת את הכיסוי הקטן ביותר עצמו, או את גודלו. פורמלית, NP-שלמות היא תכונה של שפת ההכרעה; קירוב הוא הבטחה על ערך פונקציית המטרה.

שאילתות סף קושרות בין השתיים. כאשר ערכי המטרה שלמים וניתנים לייצוג במספר פולינומי של ביטים, אורקל העונה על ״האם OPT≤k\mathrm{OPT}\le k?״ מאפשר למצוא את הערך האופטימלי בחיפוש בינארי. לעיתים קרובות שחזור עצמי מוצא גם פתרון. בכיוון ההפוך, אלגוריתם אופטימיזציה מדויק עונה מיד על כל שאלת סף. אבל אלגוריתם קירוב אינו מכריע את השפה המדויקת: אם קירוב פקטור 22 החזיר עלות 1212, אי־אפשר להסיק אם OPT≤7\mathrm{OPT}\le7.

נתאר בעיית אופטימיזציה באמצעות מופע II, קבוצת פתרונות ישימים F(I)F(I) ופונקציית מטרה val⁡(I,S)\operatorname{val}(I,S). נסמן ב-OPT(I)\mathrm{OPT}(I) את הערך הטוב ביותר. אלגוריתם קירוב חייב קודם כול להחזיר S∈F(I)S\in F(I) בזמן פולינומי; רק אחר כך יש משמעות ליחס.

מוסכמות ליחס

במינימיזציה, α\alpha-קירוב, עבור α≥1\alpha\ge1, מקיים

val⁡(I,A(I))≤α OPT(I).\operatorname{val}(I,A(I))\le\alpha\,\mathrm{OPT}(I).

במקסימיזציה נשתמש במוסכמת הפקטור הגדול מאחד:

val⁡(I,A(I))≥OPT(I)α.\operatorname{val}(I,A(I))\ge\frac{\mathrm{OPT}(I)}{\alpha}.

ספרים אחרים מדווחים שבר ביצועים ρ∈[0,1]\rho\in[0,1] כך ש-A(I)≥ρOPT(I)A(I)\ge\rho\mathrm{OPT}(I). לכן ״הבטחת 1/21/2״ ו״קירוב פקטור 22״ עשויים לתאר אותה תוצאה ל-Max-Cut. יש לציין את המוסכמה. ההבטחה היא לכל מופע במקרה הגרוע וכוללת זמן פולינומי; איכות ניסויית ממוצעת בלבד היא היוריסטיקה, לא משפט קירוב.

2. כיסוי קודקודים מינימלי: שידוך מקסימלי

אלגוריתם. מתחילים ב-C=∅C=\varnothing. כל עוד קיימת צלע לא מכוסה {u,v}\{u,v\}, מוסיפים את שני קצותיה ל-CC ומוחקים את כל הצלעות הנוגעות ב-uu או ב-vv. הצלעות שנבחרו יוצרות שידוך מקסימלי MM.

משפט. האלגוריתם הוא 22-קירוב ל-Minimum Vertex Cover הלא־ממושקלל.

מהלך ההוכחה.

  1. ישימות. בסיום לא נותרה צלע לא מכוסה. באופן שקול, אילו לצלע כלשהי לא היה קצה ב-CC, ניתן היה להוסיפה ל-MM, בסתירה למקסימליות.
  2. חסם תחתון. כל כיסוי חייב לבחור לפחות קצה אחד מכל צלע ב-MM. צלעות השידוך זרות בקודקודים, ולכן קודקוד יחיד אינו יכול לכסות שתיים מהן. לכן OPT≥∣M∣\mathrm{OPT}\ge|M|.
  3. חיוב הפתרון. האלגוריתם לוקח בדיוק שני קצוות לכל צלע בשידוך: ∣C∣=2∣M∣≤2OPT|C|=2|M|\le2\mathrm{OPT}.

במסלול 1−2−3−41-2-3-4, בחירת {1,2}\{1,2\} ו-{3,4}\{3,4\} מחזירה את כל ארבעת הקודקודים, ואילו {2,3}\{2,3\} הוא כיסוי אופטימלי בגודל שניים. הפקטור הדוק עבור האלגוריתם הזה. ״מקסימלי״ פירושו שאי־אפשר להוסיף צלע; אין פירושו שידוך בגודל מקסימום.

3. Max-Cut: חצי מכל הצלעות

בגרף לא מכוון G=(V,E)G=(V,E), ערך החתך (S,V∖S)(S,V\setminus S) הוא מספר הצלעות החוצות אותו, או משקלן הכולל כאשר המשקלים אי־שליליים.

אלגוריתם אקראי. מציבים כל קודקוד באופן בלתי־תלוי באחד משני הצדדים בהסתברות 1/21/2. לכל e={u,v}e=\{u,v\} נגדיר Xe=1X_e=1 אם קצותיה בצדדים שונים. מתקיים Pr⁡[Xe=1]=1/2\Pr[X_e=1]=1/2, ולכן מלינאריות התוחלת

E[X]=∑e∈EE[Xe]=∣E∣/2.\mathbb E[X]=\sum_{e\in E}\mathbb E[X_e]=|E|/2.

מאחר ש-OPT≤∣E∣\mathrm{OPT}\le|E|, ערך החתך הצפוי הוא לפחות OPT/2\mathrm{OPT}/2. אין צורך באי־תלות בין המשתנים XeX_e לצורך סכום התוחלות. חזרות ושמירת החתך הטוב ביותר מגבירות ביטחון, אך טענת התוחלת כבר מוכיחה שקיים חתך כזה.

אפשר לדה־רנדמז. מעבדים קודקודים בזה אחר זה, ובכל שלב בוחרים את הצד שאינו מקטין את התוחלת המותנית של החתך הסופי. שיטת התוחלות המותנות מחזירה חתך בגודל לפחות ∣E∣/2|E|/2. גם שיפור מקומי נותן זאת: כל עוד לקודקוד יש יותר שכנים בצדו מאשר בצד האחר, מעבירים אותו. כל העברה מגדילה ממש ערך שלם, ולכן התהליך נעצר. בסיום לכל קודקוד לפחות חצי מצלעותיו חוצות; סכימת הדרגות החוצות סופרת כל צלע חוצה פעמיים ונותנת 2∣δ(S)∣≥∣E∣2|\delta(S)|\ge|E|.

דוגמה. במשולש יש שלוש צלעות והאופטימום הוא שתיים. השמה אקראית נותנת תוחלת 3/23/2, ושיפור מקומי מחזיר חתך בגודל שתיים. הניתוח אינו טוען שכל ריצה אקראית חותכת לפחות חצי מהצלעות.

4. ‏TSP מטרי: אלגוריתם העץ הכפול

ב-TSP כללי אין הצדקה לקיצורי דרך. כאן הקלט הוא גרף מלא עם מרחקים אי־שליליים, סימטריים, המקיימים את אי־שוויון המשולש

d(u,w)≤d(u,v)+d(v,w).d(u,w)\le d(u,v)+d(v,w).

אלגוריתם.

  1. מוצאים עץ פורש מינימלי TT.
  2. מכפילים כל צלע ב-TT. כעת כל הדרגות זוגיות ולכן קיים מסלול אוילרי סגור.
  3. עוברים במסלול האוילרי ומדלגים על קודקודים שכבר בוקרו, עד לחזרה להתחלה.

משפט. העץ הכפול הוא 22-קירוב ל-TSP מטרי.

מהלך ההוכחה. מוחקים צלע אחת ממסלול המילטוני אופטימלי ומקבלים עץ פורש, ולכן w(T)≤OPTw(T)\le\mathrm{OPT}. הכפלת העץ נותנת רב־גרף אוילרי במשקל 2w(T)2w(T). בכל פעם שהמסלול עומד לבקר שוב בקודקודים, מחליפים תת־מסלול בצלע הישירה. אי־שוויון המשולש מבטיח שהקיצור אינו מגדיל עלות. לכן המסלול ההמילטוני המתקבל עולה לכל היותר

2w(T)≤2OPT.2w(T)\le2\mathrm{OPT}.

דוגמה פתורה. ארבע נקודות בפינות ריבוע יחידה: MST כולל שלוש צלעות באורך אחד, ולכן משקל העץ הכפול הוא 66. מסלול אוילרי עשוי לחזור לפינה, אך קיצורו יכול לתת את היקף הריבוע בעלות 44, שהיא אופטימלית. ההבטחה הכללית נשארת 22 אף שבמופע זה התוצאה טובה יותר.

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

5. Bin Packing: חסמים אסימפטוטיים ותוספת קבועה

לכל פריט גודל si∈(0,1]s_i\in(0,1] ולכל סל קיבולת 11; ממזערים את מספר הסלים. חסם הנפח הוא

OPT≥⌈∑isi⌉,\mathrm{OPT}\ge\left\lceil\sum_i s_i\right\rceil,

אך הוא עשוי להיות חלש מפני שאסור לפצל פריטים.

Next Fit ‏(NF). מחזיקים סל פתוח אחד. אם הפריט הבא נכנס, אורזים אותו; אחרת סוגרים את הסל ופותחים חדש. אם NF השתמש ב-mm סלים, העומס הכולל בכל זוג סלים עוקבים גדול מ-11: הפריט הראשון בסל המאוחר לא נכנס לקודם. מזווגים סלים ומקבלים

∑isi>⌊m/2⌋,\sum_i s_i>\lfloor m/2\rfloor,

ולכן m≤2OPTm\le2\mathrm{OPT}; ניסוח חד יותר הוא m<2OPT+1m<2\mathrm{OPT}+1. זהו אלגוריתם מקוון שאינו רואה את העתיד.

First Fit Decreasing ‏(FFD). ממיינים את הפריטים בסדר לא־עולה ואז מכניסים כל פריט לסל הראשון שבו יש מקום. משפט קלאסי חזק יותר קובע

FFD(I)≤119OPT(I)+69.\mathrm{FFD}(I)\le\frac{11}{9}\mathrm{OPT}(I)+\frac{6}{9}.

זהו חסם מוחלט עם קבוע חיבור, שממנו נובע יחס אסימפטוטי 11/911/9. אסור למחוק את הקבוע כאשר OPT\mathrm{OPT} קטן. ההוכחה המלאה ממיינת פריטים למחלקות גדלים ומעבר להיקף השיעור; עמודי סיכום הקורס תומכים בהצגת האלגוריתם, והמסגרת הפורמלית נבדקה בספרי הלימוד.

לדוגמה, הפריטים 0.6,0.6,0.4,0.40.6,0.6,0.4,0.4 נכנסים לשני סלים מושלמים אם האלגוריתם משדך גדול עם קטן. בסדרים ארוכים יותר NF רגיש מאוד לסדר, ולכן המיון המוקדם של FFD משמעותי.

6. תבנית הוכחה לשימוש חוזר

לכל טענת קירוב:

  1. מציינים את הנחות הקלט ואת פונקציית המטרה.
  2. נותנים אלגוריתם בר־ביצוע בזמן פולינומי.
  3. מוכיחים שהפלט ישים.
  4. מוצאים חסם תחתון על OPT\mathrm{OPT} במינימיזציה או חסם עליון במקסימיזציה.
  5. קושרים את ערך הפלט לחסם.
  6. מציינים אם ההבטחה דטרמיניסטית, בתוחלת, בהסתברות גבוהה, מוחלטת או אסימפטוטית.

גודל שידוך חוסם את כיסוי הקודקודים מלמטה; מספר הצלעות חוסם Max-Cut מלמעלה; משקל MST חוסם TSP מטרי מלמטה; והנפח הכולל חוסם את מספר הסלים מלמטה.

טעויות נפוצות

  • לכנות בעיית אופטימיזציה ״NP-שלמה״ בלי לציין את גרסת ההכרעה.
  • לחסום עלות בלי להוכיח ישימות וזמן פולינומי.
  • להפוך את אי־השוויון בין מינימיזציה למקסימיזציה.
  • להסיק מתוחלת הבטחה לכל ריצה אקראית.
  • לקצר מסלול TSP בלי אי־שוויון המשולש.
  • להציג יחס Bin Packing אסימפטוטי כחסם מדויק לכל מופע.

המחשות

בנייה מודרכת

גשרי הוכחה ליחס קירוב

שלב 1 מתוך 6
מינימיזציהOPT ≤ A ≤ α·OPTחוסמים מלמעלה את תוצאת האלגוריתם בעזרת חסם תחתון על OPT.
מקסימיזציהOPT/α ≤ A ≤ OPTחוסמים מלמטה את תוצאת האלגוריתם בעזרת חסם עליון על OPT.
חסם תחתון למינימיזציהחסם עליון למקסימיזציה

על הלוח אפשר לצייר ארבעה ״גשרי הוכחה״: שידוך אל חסם VC; כל הצלעות אל חסם Max-Cut; מסלול אופטימלי פחות צלע אל MST; ונפח כולל אל מספר סלים. על כל גשר מסמנים את כיוון אי־השוויון.

תרגילים

תרגיל 1 — פקטור מחסם

אלגוריתם מינימיזציה החזיר ערך 3030, והוכחתם OPT≥20\mathrm{OPT}\ge20. איזה פקטור קירוב הוכחתם? הסבירו מדוע אין צורך לדעת את OPT\mathrm{OPT} המדויק.

פתרון

היחס ALG/OPT≤30/20=3/2\mathrm{ALG}/\mathrm{OPT}\le30/20=3/2. חסם תחתון על OPT מספיק למינימיזציה; החסם יכול להיות שמרני. אין צורך בערך האופטימום האמיתי.

תרגיל 2 — Vertex Cover משידוך מקסימלי

הוכיחו שאלגוריתם הכיסוי משני קצות צלעות שידוך מקסימלי הוא 22-קירוב. הבחינו בין שידוך מקסימלי לשידוך מקסימום.

פתרון

ישימות: מקסימליות — כל צלע נוגעת ב-MM, אחרת אפשר להוסיף אותה. חסם: צלעות MM זרות, ולכן OPT≥∣M∣\mathrm{OPT}\ge|M|. האלגוריתם בוחר 2∣M∣2|M| קודקודים, ולכן ALG≤2 OPT\mathrm{ALG}\le2\,\mathrm{OPT}. אין צורך בשידוך מקסימום־משקל/גודל.

תרגיל 3 — Max-Cut ותוחלת

הוכיחו E[X]≥12∑ewe\mathbb E[X]\ge\tfrac12\sum_e w_e לחלוקה אקראית מאוזנת עם משקלים אי־שליליים, גם בתלות בין צלעות. מתי משקלים שליליים שוברים את הטיעון?

פתרון

לכל צלע Pr⁡[חתוכה]=1/2\Pr[\text{חתוכה}]=1/2, ולכן E[X]=∑ewe/2\mathbb E[X]=\sum_e w_e/2 בליניאריות — בלי אי־תלות. אם המשקלים אי־שליליים, ∑we≥OPT\sum w_e\ge\mathrm{OPT} ולכן התוחלת ≥OPT/2\ge\mathrm{OPT}/2. משקל שלילי: האופטימום עלול להשאיר צלע לא חתוכה, וחצי הסכום אינו חסם שימושי.

תרגיל 4 — TSP מטרי

סכמו הוכחת 22-קירוב לעץ הכפול תחת אי־שוויון המשולש. מה נשבר בלי המשולש?

פתרון

w(MST)≤OPTw(\mathrm{MST})\le\mathrm{OPT} (מחיקת צלע ממעגל אופטימלי). הכפלה נותנת סיור אוילרי במשקל 2w(MST)2w(\mathrm{MST}). קיצור לפי משולש אינו מגדיל עלות. בלי משולש הקיצור עלול לייקר שלב זה.

תרגיל 5 — Bin Packing ונפח

‏NF השתמש ב-99 סלים. מה נותן טיעון זוגות הסלים על OPT\mathrm{OPT}? מדוע יחס אסימפטוטי 11/911/9 אינו מחליף תוספת קבועה במופעים קטנים?

פתרון

זוגות זרים של סלים סמוכים בעלי עומס >1>1 נותנים נפח >4>4 לארבעה זוגות ב-88 סלים, ולכן עם סל תשיעי OPT≥5\mathrm{OPT}\ge5 בטיעון הסטנדרטי של הקורס. יחס 11/911/9 מתאר התנהגות גדולה; הקבוע החיבורי שולט במופעים קטנים (למשל OPT=2\mathrm{OPT}=2 מתיר עד 33 סלים ב-FFD).

סיכום

קירוב הוא משפט מקרה־גרוע: פתרון ישים בזמן פולינומי מול חסם על OPT\mathrm{OPT}. כיוון החסם והנחות הבעיה הם חלק מההוכחה.

תרגול מודרך

משימה 1 — כיוון החסם

ריצת VC בחרה 66 צלעות שידוך (1212 קודקודים). מצאתם גם כיסוי ידני בגודל 88. מה כל מספר מוכיח לגבי הפקטור?

פתרון

השידוך נותן OPT≥6\mathrm{OPT}\ge6 ולכן ALG/OPT≤12/6=2\mathrm{ALG}/\mathrm{OPT}\le12/6=2. הכיסוי בגודל 88 הוא חסם עליון על OPT (כי OPT≤8\le8), ואינו מאשר לבדו את איכות אלגוריתם המינימיזציה.

משימה 2 — תוחלת מול דטרמיניזציה

ב-Max-Cut האקראי ייתכן חתך ריק בריצה בודדת. כיצד שיטת התוחלות המותנות הופכת הבטחת תוחלת לאלגוריתם דטרמיניסטי?

פתרון

בכל שלב מקבעים צד לקודקוד שאינו מוריד את התוחלת המותנית של המשקל הנותר. מתקבל פתרון דטרמיניסטי שערכו לפחות התוחלת המקורית. קיום בתוחלת ≠\neq הבטחה לכל ריצה אקראית.

משימה 3 — קירוב מול NP-שלמות

מדוע אלגוריתם קירוב פולינומי לבעיית אופטימיזציה אינו סותר NP-שלמות של גרסת ההכרעה?

פתרון

גרסת ההכרעה שואלת על סף מדויק; קירוב מתיר שגיאה יחסית. פתרון מקורב אינו בהכרח מכריע האם OPT≤K\mathrm{OPT}\le K. רק קירוב מדויק (פקטור 11) או סכמות FPTAS בתנאים מסוימים קשורים ישירות להכרעה.

נתיב מקורות וסמכות

  • ראיות מן הסיכום הסטודנטיאלי (היקף בלבד): סיכומי שיעור/סיכום ממוזג.pdf, עמ׳ 58–63, 67 ו-76–80. עמ׳ 79–80 עוסקים ב-Steiner Tree ומשתמשים בתבנית קשורה של MST, הכפלה וקיצור; הם אינם מציגים במפורש TSP מטרי. לכן שיעור ה-TSP המטרי לעיל נתמך בספרי הלימוד ואינו מיוחס לסיכום הממוזג. הסיכום הוא ראיה לדגשי הקורס, לא סמכות סופית.
  • סמכות ספרי לימוד: Sipser, Introduction to the Theory of Computation, מהדורה 3, §10.1, עמ׳ 393–396 (מסגרת הקירוב); Papadimitriou, Computational Complexity, פרק 13, בפרט §13.1, עמ׳ 299–309 (אלגוריתמי קירוב) ו-§13.2, עמ׳ 309–319 (הקשר סיבוכיותי).
  • מצב עריכתי: ההגדרות וארבעת הניתוחים נבדקו מול הסעיפים האלה. קבוע FFD מובא כעובדת סקר קלאסית ואינו מוכח כאן. נבדק; ביטחון גבוה.