21The 7/8 Approximation Ratio for MAX-3ECNF, Self-Reducibility of SAT, and coNP

השיעור סוגר את פרק האקראיות: אורז את האלגוריתם הדטרמיניסטי ל‑3ECNF כקירוב ביחס 7/8, משתמש ברדוקציה העצמית של SAT כדי להוכיח שאם SAT ב‑BPP אז NP מוכלת ב‑RP, ופותח את הפרקון על coNP.

confidence: high1 recording(s)6 summary pagesapproximation-algorithmsmax-3ecnfderandomizationconditional-expectationsself-reducibilitybpp

Builds on: lesson 13, lesson 18, lesson 19, lesson 20

The handwritten summary pages

Open page 1 full size

סיבוכיות שיעור 21.pdf

Page 1 of 6 of the handwritten summary

בקצרה

  • הפתיחה אורזת את האלגוריתם הדטרמיניסטי מהשיעור הקודם כאלגוריתם קירוב: יחס α=78\alpha=\tfrac78 במוסכמת המקסימיזציה של שיעור 13, ALG≥α⋅OPT\mathrm{ALG}\ge \alpha\cdot\mathrm{OPT} עם 0<α≤10<\alpha\le 1. הצעד שאסור לדלג עליו הוא החסם OPT≤m\mathrm{OPT}\le m.
  • האלגוריתם עצמו — שיטת התוחלות המותנות ל‑3ECNF — והוכחת נכונותו נלמדו ונכתבו בשיעור 20, ותוצאת הקיום ≥78m\ge\tfrac{7}{8}m שעליה הכול נשען הוכחה בשיעור 19. כאן הם משמשים כקופסה שחורה, בניסוח מדויק.
  • מוכיחים שה‑SAT היא self-reducible: אלגוריתם פולינומי לבעיית ההכרעה גורר אלגוריתם פולינומי לבעיית החיפוש. זהו חימום דטרמיניסטי, אבל אותה בנייה בדיוק היא לב ההוכחה הבאה.
  • המשפט המרכזי: אם SAT∈BPP\mathrm{SAT}\in\mathrm{BPP} אז NP⊆RP\mathrm{NP}\subseteq\mathrm{RP} — כלומר טעות דו‑צדדית לכל בעיה ב‑NP\mathrm{NP} גוררת טעות חד‑צדדית לכל בעיה ב‑NP\mathrm{NP}. ההוכחה משלבת את הרדוקציה העצמית עם אמפליפיקציה וחסם האיחוד.
  • הטריק שגורם לטעות להיות חד‑צדדית: השלב האחרון של האלגוריתם הוא בדיקה דטרמיניסטית של ההשמה שנבנתה. "כן" נאמר רק כשההשמה מספקת בפועל.
  • הפרקון האחרון מגדיר את coNP\mathrm{coNP} ומוכיח: coP=P\mathrm{coP}=\mathrm{P}, P⊆NP∩coNP\mathrm{P}\subseteq\mathrm{NP}\cap\mathrm{coNP}, ש‑NP=coNP\mathrm{NP}=\mathrm{coNP} שקול ל‑NP⊆coNP\mathrm{NP}\subseteq\mathrm{coNP} וגם שקול ל‑SAT∈coNP\mathrm{SAT}\in\mathrm{coNP}, ושבעיה AA היא coNP\mathrm{coNP}‑קשה אם ורק אם Aˉ\bar A היא NP\mathrm{NP}‑קשה.

רקע ותלויות

מבעיות אופטימיזציה ויחס קירוב (שיעור 13). בעיית אופטימיזציה של מקסימיזציה מתאימה לכל קלט xx אוסף פתרונות אפשריים ולכל פתרון ערך; OPT(x)\mathrm{OPT}(x) הוא הערך המקסימלי. אלגוריתם ALG\mathrm{ALG} הוא קירוב ביחס α\alpha (עם 0<α≤10<\alpha\le 1) אם לכל קלט xx הוא מחזיר פתרון חוקי שערכו מקיים ALG(x)  ≥  α⋅OPT(x).\mathrm{ALG}(x)\;\ge\;\alpha\cdot \mathrm{OPT}(x). זו המוסכמת של בעיות מקסימום; בבעיות מינימום המוסכמת ההפוכה, ALG(x)≤α⋅OPT(x)\mathrm{ALG}(x)\le\alpha\cdot\mathrm{OPT}(x) עם α≥1\alpha\ge 1 (כמו הקירוב 2 ל‑VC\mathrm{VC} שם). בכל טענת קירוב כאן נדרשות שתי הוכחות נפרדות: שהפלט חוקי, ושהוא עומד בחסם מול OPT\mathrm{OPT}.

חסם ה‑78\tfrac78 (שיעור 19). תהא φ\varphi נוסחה בצורת 3ECNF — כלומר בכל הסגר בדיוק שלושה ליטרלים מעל שלושה משתנים שונים — עם mm הסגרים. נדגום השמה vv במידה אחידה מתוך 2n2^n ההשמות, ונסמן ב‑XX את מספר ההסגרים המסופקים. לכל הסגר CC, ההסתברות שהוא אינו מסופק היא (12)3=18\left(\tfrac12\right)^3=\tfrac18, כי שלושת הליטרלים הם מעל משתנים שונים ולכן ערכיהם בלתי תלויים, ויש בדיוק השמה אחת לשלושת המשתנים האלה שמפילה את ההסגר. מלינאריות התוחלת מעל ההסגרים, E[X]  =  ∑C∈φPr⁡[C satisfied]  =  m⋅78.\mathbb{E}[X]\;=\;\sum_{C\in\varphi}\Pr[C \text{ satisfied}]\;=\;m\cdot\tfrac78 . מכאן, בשיטה ההסתברותית, קיימת השמה המספקת לפחות 78m\tfrac78 m הסגרים.

למה דווקא 3ECNF ולא 3CNF. בקורס הזה 3CNF מוגדרת כ"לכל היותר שלושה ליטרלים בהסגר" (ראו שיעור 8, שם הרדוקציה SAT≤p3SAT\mathrm{SAT}\le_p \mathrm{3SAT} מייצרת הסגרים כאלה). החישוב למעלה נשען על כך שבכל הסגר יש בדיוק שלושה ליטרלים מעל שלושה משתנים שונים: הסגר באורך 1 נכשל בהסתברות 12\tfrac12, ולכן נוסחה של הסגרי יחידה בלבד מקיימת E[X]=12m\mathbb{E}[X]=\tfrac12 m ולא 78m\tfrac78 m; והסגר שבו אותו משתנה מופיע פעמיים (x∨x∨yx\vee x\vee y) נכשל בהסתברות 14\tfrac14. לכן MAX-3ECNF\mathrm{MAX\text{-}3ECNF} ולא MAX-3SAT\mathrm{MAX\text{-}3SAT}.

הדרנדומיזציה (שיעור 20). שיטת התוחלות המותנות (שהופיעה לראשונה בשיעור 19 על MAXCUT\mathrm{MAXCUT}) הופכת את הקיום לבנייה: משתנה מקרי XX שתוחלתו ידועה, ורצף החלטות בינאריות; בכל צעד קובעים משתנה אחד לפי הענף שבו התוחלת המותנית אינה יורדת מתחת לסף, ובסוף התוחלת המותנית היא ערך קונקרטי. שיעור 20 מבצע את השיטה במלואה עבור 3ECNF ומוכיח את נכונותה; כאן מנוסחת התוצאה שלו כמשפט 1 ומשמשת כקופסה שחורה, וההוכחה החדשה שנוספת עליה היא רק אריזת התוצאה כיחס קירוב מול OPT\mathrm{OPT}.

מחלקות אקראיות (שיעורים 16–17). נזכיר: L∈BPPL\in\mathrm{BPP} אם קיימת מכונה אקראית פולינומית MM כך שלכל xx, Pr⁡[M(x)=[x∈L]]≥23\Pr[M(x)=[x\in L]]\ge\tfrac23 — טעות דו‑צדדית. L∈RPL\in\mathrm{RP} אם קיימת מכונה אקראית פולינומית MM כך שאם x∈Lx\in L אז Pr⁡[M accepts x]≥12\Pr[M \text{ accepts } x]\ge\tfrac12, ואם x∉Lx\notin L אז Pr⁡[M accepts x]=0\Pr[M \text{ accepts } x]=0 — טעות חד‑צדדית, רק false negatives. שתי המחלקות סגורות לרדוקציות זמן פולינומי. אמפליפיקציה: לכל פולינום qq, כל שפה ב‑BPP\mathrm{BPP} מוכרעת בזמן פולינומי בהסתברות שגיאה ≤1/q(∣x∣)\le 1/q(|x|) (חזרות בלתי תלויות והכרעת רוב, עם חסם צ'רנוף).

רדוקציות. A≤pBA\le_p B פירושו: קיימת פונקציה ff הניתנת לחישוב בזמן פולינומי כך ש‑x∈A  ⟺  f(x)∈Bx\in A \iff f(x)\in B. הכיוון חשוב — BB היא הקשה מבין השתיים. SAT\mathrm{SAT} היא NP\mathrm{NP}‑שלמה (שיעור 9), כלומר SAT∈NP\mathrm{SAT}\in\mathrm{NP} וגם NP\mathrm{NP}‑קשה.


הגדרות

הגדרה 1: MAX-3ECNF

הקלט: נוסחה φ\varphi בצורת 3ECNF מעל המשתנים x1,…,xnx_1,\dots,x_n, עם mm הסגרים. הפתרונות החוקיים: כל ההשמות המלאות v:{x1,…,xn}→{0,1}v:\{x_1,\dots,x_n\}\to\{0,1\}. הערך: מספר ההסגרים של φ\varphi שההשמה vv מספקת. המטרה: מקסימום. נסמן OPT(φ)=max⁡v#{C∈φ:v⊨C}\mathrm{OPT}(\varphi)=\max_v \#\{C\in\varphi: v \models C\}.

אינטואיציה. בניגוד ל‑SAT\mathrm{SAT} אין כאן שאלת "כן/לא" אלא דרישה להפיק כמה שיותר. מפני שכל השמה מלאה היא פתרון חוקי, בעיית החוקיות טריוויאלית — הקושי כולו בערך. זו נקודה שכדאי לשים לב אליה: בבעיות אופטימיזציה אחרות (למשל VC\mathrm{VC}) עצם החוקיות של הפלט היא חלק מההוכחה.

דוגמה. φ=(x1∨x2∨x3)∧(¬x1∨¬x2∨¬x3)\varphi=(x_1\vee x_2\vee x_3)\wedge(\neg x_1\vee \neg x_2\vee \neg x_3): כאן m=2m=2, OPT=2\mathrm{OPT}=2 (למשל v=(1,0,0)v=(1,0,0)).

דוגמה נגדית (מה איננו קלט חוקי). (x1∨x2)∧(x1∨¬x1∨x2)(x_1\vee x_2)\wedge(x_1\vee\neg x_1\vee x_2) אינה 3ECNF: ההסגר הראשון באורך 2, ובשני מופיע x1x_1 פעמיים. שתי החריגות שוברות את חישוב ה‑18\tfrac18.

הגדרה 2: השמה חלקית והשלמה

השמה חלקית vv היא פונקציה חלקית מקבוצת המשתנים ל‑{0,1}\{0,1\} — כלומר, ייתכן שאינה מוגדרת על חלק מהמשתנים. השלמה של vv היא השמה מלאה v^\hat v המוגדרת על כל המשתנים, כך שבכל מקום שבו vv מוגדרת מתקיים v^(x)=v(x)\hat v(x)=v(x); על המשתנים שבהם vv אינה מוגדרת אין ל‑v^\hat v שום מחויבות.

אינטואיציה. האלגוריתמים בשיעור בונים את ההשמה משתנה‑משתנה. בכל רגע ביד יש השמה חלקית, והאינווריאנטה שנשמור עליה תמיד תהיה מהצורה "קיימת השלמה של vv בעלת תכונה טובה". כשההשמה נעשית מלאה, ההשלמה היחידה שלה היא היא עצמה — ולכן התכונה הטובה עוברת אליה. זה כל מנגנון ההוכחה בשני האלגוריתמים הבאים.

הגדרה 3: התוחלת המותנית של מספר ההסגרים המסופקים (מובאת משיעור 20 לצורך ציטוט)

יהי φ\varphi קבוע עם mm הסגרים, ותהא ρ\rho השמה חלקית. נסמן E[X∣ρ]  =  E[ #{C∈φ:v⊨C}  ∣  v extends ρ ],\mathbb{E}[X\mid \rho]\;=\;\mathbb{E}\big[\,\#\{C\in\varphi: v\models C\}\;\big|\; v \text{ extends } \rho\,\big], כאשר ההשמה vv נדגמת אחידה מבין כל ההשמות המלאות המרחיבות את ρ\rho — כלומר, כל משתנה שאינו בתחום של ρ\rho מקבל 00 או 11 בהסתברות 12\tfrac12 באופן בלתי תלוי.

אינטואיציה ואופן החישוב. למרות שהביטוי הזה מדבר על אקראיות, יש לו נוסחה סגורה שמחושבת דטרמיניסטית במעבר אחד על הנוסחה. עוברים הסגר‑הסגר; אם בהסגר יש ליטרל ש‑ρ\rho כבר קבעה ל‑TRUE, תרומתו 11; אם ρ\rho הפילה את כל ליטרליו, תרומתו 00; אחרת, אם נותרו בו k≥1k\ge 1 ליטרלים חופשיים (מעל משתנים שונים), תרומתו 1−2−k1-2^{-k}. סוכמים. אין כאן שום הטלת מטבע. זו נקודה שהמרצה עמד עליה ארוכות: כל השיעורים על אלגוריתמים אקראיים דיברו על אקראיות באופן דטרמיניסטי לגמרי — הניתוח על הנייר הוא חישוב, לא ניסוי.

מקרה קצה חשוב. אם ρ\rho היא השמה מלאה, אין משתנים חופשיים, המשתנה המקרי הוא קבוע, ולכן E[X∣ρ]\mathbb{E}[X\mid\rho] שווה בדיוק למספר ההסגרים שהשמה ρ\rho מספקת. זהו הצעד שסוגר את הוכחת הנכונות בשיעור 20.

הגדרה 4: גרסת ההכרעה מול גרסת החיפוש של SAT

גרסת ההכרעה (SAT\mathrm{SAT}): הקלט הוא נוסחת CNF φ\varphi, והפלט הוא "כן" אם קיימת ל‑φ\varphi השמה מספקת ו"לא" אחרת. גרסת החיפוש: הקלט הוא נוסחת CNF φ\varphi, והפלט הוא השמה מספקת ל‑φ\varphi אם קיימת כזו, ו"אין השמה מספקת" אחרת.

אינטואיציה. ההכרעה מחזירה ביט; החיפוש מחזיר עד. ברור שהחיפוש לא קל יותר: מי שפותר את החיפוש בזמן פולינומי פותר גם את ההכרעה (מריצים ומסתכלים בפלט). הכיוון ההפוך — שלפתור את ההכרעה מספיק כדי לפתור את החיפוש — הוא לא טריוויאלי, וזה בדיוק משפט 2.

הגדרה 5: coNP

coNP={ Aˉ  ∣  A∈NP }.\mathrm{coNP}=\{\,\bar A \;\mid\; A\in\mathrm{NP}\,\}.

אינטואיציה ואזהרה. coNP\mathrm{coNP} היא אוסף המשלימים של שפות ב‑NP\mathrm{NP}, ולא המשלים של האוסף NP\mathrm{NP}. שפה שאינה ב‑NP\mathrm{NP} אינה בהכרח ב‑coNP\mathrm{coNP}, ושפה ב‑coNP\mathrm{coNP} יכולה בהחלט להיות גם ב‑NP\mathrm{NP} (כל שפה ב‑P\mathrm{P}, למשל). זה בדיוק כמו R\mathrm{R} ו‑coR\mathrm{coR} בחישוביות — שם coR=R\mathrm{coR}=\mathrm{R}, ולא "המשלים של R\mathrm{R}".

מקור אי‑הסימטריה: ההגדרה של NP\mathrm{NP} אינה סימטרית. עבור yes-instance נדרש קיום (קיים עד קצר, או קיימת ריצה מקבלת של מכונה לא‑דטרמיניסטית), ועבור no-instance נדרש לכל (כל עד נדחה). היפוך התשובה של מכונה לא‑דטרמיניסטית אינו מחליף בין "קיים" ל"לכל", ולכן הטריק שעובד ב‑P\mathrm{P} אינו עובד כאן.

מופע. SAT‾\overline{\mathrm{SAT}} — קבוצת נוסחאות ה‑CNF שאין להן השמה מספקת — היא ב‑coNP\mathrm{coNP} לפי ההגדרה, כי SAT∈NP\mathrm{SAT}\in\mathrm{NP}. אי‑מופע. אין לנו הצדקה לטעון ש‑SAT‾∈NP\overline{\mathrm{SAT}}\in\mathrm{NP}: אין עד קצר ידוע לאי‑ספיקות. השאלה אם NP=coNP\mathrm{NP}=\mathrm{coNP} פתוחה.


משפטים והוכחות

משפט 1: יחס הקירוב 7/8 ל‑MAX-3ECNF

גבול בעלוּת: האלגוריתם שלהלן והוכחת נכונותו (האינווריאנטה, האינדוקציה, סיום המשתנה המנוון וחשבון זמן הריצה) שייכים לשיעור 20 ונכתבו שם במלואם. כאן הם מובאים בניסוח מדויק בלבד, כדי שאפשר יהיה לצטט אותם; מה שמוכח כאן במלואו הוא אריזת התוצאה כיחס קירוב — חוקיות הפלט והשוואה ל‑OPT\mathrm{OPT}.

האלגוריתם AA (משיעור 20). קלט: נוסחה φ\varphi בצורת 3ECNF. נסמן ב‑x1,…,xnx_1,\dots,x_n את משתני הנוסחה, וב‑mm את מספר ההסגרים. הערך mm נקבע פעם אחת בתחילת הריצה ואינו משתנה.

  1. לכל 1≤i≤n1\le i\le n:
    1. אם E[X∣v(xi)=1] ≥ 78m\mathbb{E}[X\mid v(x_i)=1]\ \ge\ \tfrac78 m — קבע v(xi)=1v(x_i)=1 והצב 11 במקום xix_i ב‑φ\varphi.
    2. אחרת — קבע v(xi)=0v(x_i)=0 והצב 00 במקום xix_i ב‑φ\varphi.
  2. החזר את vv.

(התוחלת בשלב 1 מחושבת ביחס להשמה החלקית שנבנתה עד כה, כלומר E[X∣v(x1),…,v(xi−1),v(xi)=1]\mathbb{E}[X\mid v(x_1),\dots,v(x_{i-1}),v(x_i)=1] בסימוני הגדרה 3; זו בדיוק התוחלת על הנוסחה הנוכחית לאחר ההצבות, בתוספת ההסגרים שכבר סופקו.)

מה הוכח בשיעור 20 (מצוטט כאן). האלגוריתם AA הוא דטרמיניסטי (אין בו ביט אקראי אחד — E[X∣⋅]\mathbb{E}[X\mid\cdot] הוא מספר שמחושב בנוסחה סגורה לפי הגדרה 3), רץ בזמן O(∣φ∣2)O(|\varphi|^2), ולכל נוסחה φ\varphi בצורת 3ECNF עם mm הסגרים הוא מחזיר השמה מלאה vv המקיימת #{C∈φ: v⊨C} ≥ 78m.\#\{C\in\varphi:\ v\models C\}\ \ge\ \tfrac78 m . ההוכחה שם היא אינדוקציה על האינווריאנטה E[X∣ρi]≥78m\mathbb{E}[X\mid\rho_i]\ge\tfrac78 m, המשלבת את משפט התוחלת השלמה עם טיעון "ממוצע של שניים ⟸ אחד מהם לפחות הממוצע", ומסתיימת בכך שכשההשמה מלאה המשתנה המקרי מנוון ולכן תוחלתו היא ערכו. ראו שיעור 20 לפרטים המלאים, ושיעור 19 לתנאי ההתחלה E[X]=78m\mathbb{E}[X]=\tfrac78 m שממנו האינדוקציה יוצאת.

המשפט (החלק החדש כאן). האלגוריתם AA הוא אלגוריתם קירוב ביחס α=78\alpha=\tfrac78 ל‑MAX-3ECNF\mathrm{MAX\text{-}3ECNF} במוסכמת המקסימיזציה של שיעור 13: לכל נוסחה φ\varphi בצורת 3ECNF הוא מחזיר פתרון חוקי המקיים ALG(φ)≥78⋅OPT(φ)\mathrm{ALG}(\varphi)\ge\tfrac78\cdot\mathrm{OPT}(\varphi).

הוכחה — חוקיות הפלט. האלגוריתם קובע ערך לכל xix_i, 1≤i≤n1\le i\le n, בדיוק פעם אחת. לכן הפלט הוא השמה מלאה על כל המשתנים, וכל השמה מלאה היא פתרון חוקי של MAX-3ECNF\mathrm{MAX\text{-}3ECNF} (הגדרה 1). אין כאן מה להוכיח מעבר לכך, אבל חשוב לומר זאת במפורש: בהוכחת יחס קירוב תמיד יש שני חלקים, וזה הראשון.

הוכחה — חסימת OPT\mathrm{OPT} מלמעלה. זהו הצעד המהותי, והוא זה שאסור להשאיר משתמע. הערבות של האלגוריתם היא מוחלטת — "לפחות 78m\tfrac78 m הסגרים" — ואילו יחס קירוב מוגדר תמיד יחסית ל‑OPT\mathrm{OPT}, שערכו לא ידוע לנו. המעבר בין השניים דורש לחסום את OPT\mathrm{OPT} מלמעלה בגודל שהאלגוריתם שולט בו. כאן החסם מיידי: לנוסחה יש בסך הכול mm הסגרים, ולכן שום השמה — ובכללן ההשמה האופטימלית — אינה יכולה לספק יותר מ‑mm מהם: OPT(φ) ≤ m.\mathrm{OPT}(\varphi)\ \le\ m .

הוכחה — יחס הקירוב. נשלב את שני החסמים: ALG(φ) ≥ 78m ≥ 78⋅OPT(φ),\mathrm{ALG}(\varphi)\ \ge\ \tfrac78 m\ \ge\ \tfrac78\cdot \mathrm{OPT}(\varphi), כאשר אי‑השוויון הראשון הוא הערבות של שיעור 20 והשני הוא OPT≤m\mathrm{OPT}\le m מוכפל ב‑78>0\tfrac78>0. כלומר ALG≥α⋅OPT\mathrm{ALG}\ge\alpha\cdot\mathrm{OPT} עם α=78∈(0,1]\alpha=\tfrac78\in(0,1] — בדיוק מוסכמת המקסימיזציה של שיעור 13. ■\blacksquare

שתי הערות על היחס.

  1. הערבות ALG≥78m\mathrm{ALG}\ge\tfrac78 m חזקה מיחס הקירוב 78\tfrac78: כל אימת ש‑OPT<m\mathrm{OPT}<m (כלומר, כשהנוסחה אינה ספיקה) היחס בפועל טוב מ‑78\tfrac78. ראו דוגמה 2, שבה OPT=7\mathrm{OPT}=7, m=8m=8, והיחס בפועל הוא 11.
  2. הכיוון של אי‑השוויון תלוי במוסכמה. במוסכמת המינימיזציה של שיעור 13 היינו כותבים ALG≤α⋅OPT\mathrm{ALG}\le\alpha\cdot\mathrm{OPT} עם α≥1\alpha\ge1; לכתוב כאן α=87\alpha=\tfrac87 יהיה שגוי במוסכמה שנקבעה בקורס. תמיד לציין את המוסכמה במפורש.

איפה נגמרת הבעלוּת של שיעור 20 ומתחילה זו של השיעור הזה. כל מה שקדם לחסם OPT≤m\mathrm{OPT}\le m — האלגוריתם, האינווריאנטה, האינדוקציה, וההסבר מדוע תכונת ה‑3ECNF נחוצה אך ורק לתנאי ההתחלה — נלמד בהקלטה לפני [00:27:36] ונכתב בשיעור 20. החומר של השיעור הזה מתחיל ב‑[00:27:36], עם הטענה המרכזית על BPP\mathrm{BPP} ו‑RP\mathrm{RP} (משפט 4).

משפט 2: SAT היא self-reducible

המשפט. אם קיים אלגוריתם זמן ריצה פולינומי עבור SAT\mathrm{SAT} (גרסת ההכרעה), אז קיים אלגוריתם זמן ריצה פולינומי עבור גרסת החיפוש של SAT\mathrm{SAT}.

הערה על השם. זו אינה רדוקציית מיפוי: רדוקציות מיפוי הוגדרו בין בעיות הכרעה, וגרסת החיפוש אינה בעיית הכרעה. במובן של קורס אלגוריתמים זו בהחלט רדוקציה (שימוש באלגוריתם אחד כתת‑שגרה בתוך אחר), אך לא רדוקציה במובן של חישוביות/סיבוכיות. התכונה נקראת self-reducibility, ולא כל בעיה NP\mathrm{NP}‑שלמה ידועה ככזו — עבור חלק מהן זו שאלה פתוחה. זו אחת הדוגמאות לכך שבעיות NP\mathrm{NP}‑שלמות אינן נראות אותו הדבר ברזולוציה עדינה יותר מ‑NP\mathrm{NP}‑קושי; הבדל אחר הוא קירוביות — ל‑VC\mathrm{VC} יש קירוב 2 (שיעור 13), ואילו ל‑TSP\mathrm{TSP} הכללי קירוב כלשהו כבר גורר P=NP\mathrm{P}=\mathrm{NP} (שם).

הוכחה. נניח שקיים אלגוריתם MM המכריע את SAT\mathrm{SAT} בזמן פולינומי. נתבונן באלגוריתם M^\hat M הבא:

קלט: נוסחה φ\varphi בצורת CNF. נסמן x1,…,xnx_1,\dots,x_n את משתני הנוסחה.

  1. אם MM דוחה את φ\varphi — החזר "אין השמה מספקת".
  2. לכל 1≤i≤n1\le i\le n:
    1. אם MM מקבלת את φ∧xi\varphi\wedge x_i — קבע v(xi)=1v(x_i)=1 והצב φ←φ∧xi\varphi \leftarrow \varphi\wedge x_i.
    2. אחרת — קבע v(xi)=0v(x_i)=0 והצב φ←φ∧¬xi\varphi \leftarrow \varphi\wedge \neg x_i.
  3. החזר את vv.

החלטת התכנון החשובה. במשפט 1 קבענו משתנה על ידי הצבה, וכך המשתנה נעלם מהנוסחה. כאן, במקום להציב, אנחנו מוסיפים הסגר יחידה (xi)(x_i) או (¬xi)(\neg x_i). האפקט זהה — כל השמה מספקת של הנוסחה החדשה חייבת לתת ל‑xix_i את הערך שקבענו — אבל מספר המשתנים ואורך הנוסחה נשמרים בערך. במשפט 2 עצמו אין לכך צורך; הסיבה תתגלה במשפט 4, שם הסתברות השגיאה תלויה ב‑nn ולכן חשוב ש‑nn לא יקטן. (בנוסף, דידקטית זו דרך שנייה ושימושית לקבע ערך של משתנה.) הנוסחה שנשארת היא עדיין נוסחת CNF תקינה.

ניתוח זמן ריצה. קיים c>0c>0 כך שלכל נוסחה ψ\psi מתקיים timeM(ψ)≤O(∣ψ∣c)\mathrm{time}_M(\psi)\le O(|\psi|^{c}). האלגוריתם M^\hat M מריץ את MM לכל היותר n+1≤∣φ∣+1n+1\le|\varphi|+1 פעמים. לגבי אורך הקלטים: בכל איטרציה מתווסף הסגר יחידה בודד, ומשתנה זה כבר הופיע ב‑φ\varphi; לכן לאחר nn איטרציות האורך גדל לכל היותר פי שניים, ∣ψ∣≤2∣φ∣|\psi|\le 2|\varphi|. מכאן timeM^(φ) ≤ (∣φ∣+1)⋅O((2∣φ∣)c) = O(∣φ∣ c+1),\mathrm{time}_{\hat M}(\varphi)\ \le\ (|\varphi|+1)\cdot O\big((2|\varphi|)^{c}\big)\ =\ O\big(|\varphi|^{\,c+1}\big), פולינומי באורך הקלט.

ניתוח סמנטי. תהא φ\varphi נוסחת CNF.

אם φ∉SAT\varphi\notin\mathrm{SAT}: MM מכריעה נכון, לכן היא דוחה בשלב 1 ו‑M^\hat M מחזירה "אין השמה מספקת" — נכון.

אם φ∈SAT\varphi\in\mathrm{SAT}: נסמן ב‑φi\varphi_i את הנוסחה שבידי האלגוריתם בסוף איטרציה ii (ו‑φ0=φ\varphi_0=\varphi), וב‑viv_i את ההשמה החלקית שנבנתה עד אז. נוכיח באינדוקציה על ii את האינווריאנטה:

φi∈SAT\varphi_i\in\mathrm{SAT}, כלומר קיימת השמה מספקת של φ\varphi המשלימה את viv_i.

(שתי הניסוחים שקולים כאן: φi=φ∧⋀j≤i(literal for vi(xj))\varphi_i=\varphi\wedge\bigwedge_{j\le i}(\text{literal for } v_i(x_j)), ולכן השמה מספקת את φi\varphi_i אם ורק אם היא מספקת את φ\varphi ומסכימה עם viv_i.)

בסיס i=0i=0: φ0=φ∈SAT\varphi_0=\varphi\in\mathrm{SAT} לפי ההנחה, ו‑v0v_0 ריקה.

צעד: נניח φi−1∈SAT\varphi_{i-1}\in\mathrm{SAT}. — אם MM מקבלת את φi−1∧xi\varphi_{i-1}\wedge x_i: מכיוון ש‑MM מכריעה את SAT\mathrm{SAT} נכון, φi=φi−1∧xi\varphi_i=\varphi_{i-1}\wedge x_i אכן ספיקה. — אם MM דוחה את φi−1∧xi\varphi_{i-1}\wedge x_i: אז φi−1∧xi\varphi_{i-1}\wedge x_i אינה ספיקה, כלומר אין השמה המספקת את φi−1\varphi_{i-1} ונותנת ל‑xix_i את הערך 11. אבל φi−1\varphi_{i-1} כן ספיקה לפי הנחת האינדוקציה, ולכל השמה יש ערך יחיד עבור xix_i; לכן כל השמה מספקת של φi−1\varphi_{i-1} נותנת ל‑xix_i את הערך 00, ובפרט קיימת כזו. מכאן φi=φi−1∧¬xi\varphi_i=\varphi_{i-1}\wedge\neg x_i ספיקה.

הערה: בהרצאה ובסיכום הצעד הזה נאמר בקיצור — "באינדוקציה"; הפירוט למעלה הוא מה שהאינדוקציה עומדת עליו. הנקודה היחידה שאינה אוטומטית היא שדחייה של הענף xi=1x_i=1 בשילוב עם ספיקות φi−1\varphi_{i-1} מכריחה את קיומה של השמה מספקת עם xi=0x_i=0.

סיום: בתום האיטרציה ה‑nn ההשמה vnv_n מוגדרת על כל המשתנים, כלומר מלאה. לפי האינווריאנטה קיימת השמה מספקת של φ\varphi המשלימה את vnv_n; אבל ההשלמה היחידה של השמה מלאה היא היא עצמה, ולכן vnv_n עצמה מספקת את φ\varphi. ■\blacksquare

משפט 3: NP⊆BPP\mathrm{NP}\subseteq\mathrm{BPP} אם ורק אם SAT∈BPP\mathrm{SAT}\in\mathrm{BPP} (וכנ"ל עבור RP\mathrm{RP})

המשפט. NP⊆BPP\mathrm{NP}\subseteq\mathrm{BPP} אם ורק אם SAT∈BPP\mathrm{SAT}\in\mathrm{BPP}.

הוכחה. (⇒\Rightarrow) SAT∈NP\mathrm{SAT}\in\mathrm{NP}, ולכן מהכלה SAT∈BPP\mathrm{SAT}\in\mathrm{BPP}. זהו טיעון תורת‑קבוצות בלבד — ובכל זאת יש לכתוב אותו; דילוג על מה שנראה מובן מאליו הוא מקור נפוץ לטעויות.

(⇐\Leftarrow) נניח SAT∈BPP\mathrm{SAT}\in\mathrm{BPP}, ותהא L∈NPL\in\mathrm{NP}. מכיוון ש‑SAT\mathrm{SAT} היא NP\mathrm{NP}‑קשה, קיימת רדוקציה L≤pSATL\le_p \mathrm{SAT}. מכיוון ש‑BPP\mathrm{BPP} סגורה לרדוקציות זמן פולינומי, נובע L∈BPPL\in\mathrm{BPP}. לכן NP⊆BPP\mathrm{NP}\subseteq\mathrm{BPP}. ■\blacksquare

איזו תכונה שימשה בכל כיוון. לכיוון (⇐\Leftarrow) נדרשה רק NP\mathrm{NP}‑קושי של SAT\mathrm{SAT} (שיש רדוקציה אליה מכל בעיה ב‑NP\mathrm{NP}) וסגירות המחלקה לרדוקציות. לכיוון (⇒\Rightarrow) נדרשה דווקא השייכות SAT∈NP\mathrm{SAT}\in\mathrm{NP}. שני התנאים יחד הם בדיוק NP\mathrm{NP}‑שלמות. אותו טיעון בדיוק תקף עם RP\mathrm{RP} במקום BPP\mathrm{BPP}, כי גם RP\mathrm{RP} סגורה לרדוקציות זמן פולינומי.

משפט 4: אם SAT∈BPP\mathrm{SAT}\in\mathrm{BPP} אז NP⊆RP\mathrm{NP}\subseteq\mathrm{RP}

מה המשפט אומר. זוהי טענת הכלה, ולכן היא מתחילה ב"לכל": אם לכל בעיה ב‑NP\mathrm{NP} יש אלגוריתם אקראי פולינומי עם טעות דו‑צדדית, אז לכל בעיה ב‑NP\mathrm{NP} יש אלגוריתם אקראי פולינומי עם טעות חד‑צדדית. ההבדל בין BPP\mathrm{BPP} ל‑RP\mathrm{RP} אינו הקבועים 23\tfrac23 ו‑12\tfrac12 (ראינו באמפליפיקציה שהם ניתנים לשינוי כמעט כרצוננו) אלא צדדיות הטעות: ב‑RP\mathrm{RP} אין false positives כלל.

הערת ניסוח. ניסחנו את התנאי כ‑SAT∈BPP\mathrm{SAT}\in\mathrm{BPP} (החלש ביותר) ואת המסקנה כ‑NP⊆RP\mathrm{NP}\subseteq\mathrm{RP} (החזקה ביותר), למרות שלפי משפט 3 שתי הצורות שקולות. זה עניין של נראות: תמיד עדיף לנסח משפט עם הנחה חלשה ככל האפשר ומסקנה חזקה ככל האפשר.

הוכחה. נניח SAT∈BPP\mathrm{SAT}\in\mathrm{BPP}. נעבור ממכונה אקראית למכונה אקראית — אין סיבה לעבור דרך מכונה דטרמיניסטית, כי היעד RP\mathrm{RP} הוא ממילא אקראי.

שלב א' — אמפליפיקציה. מהנחת SAT∈BPP\mathrm{SAT}\in\mathrm{BPP} ומשפט האמפליפיקציה (שיעור 17) קיימת מכונה אקראית MM הרצה בזמן פולינומי כך שלכל נוסחת CNF ψ\psi:

\psi\notin\mathrm{SAT}\;\Rightarrow\;\Pr[M \text{ rejects } \psi]\ \ge\ 1-\frac{1}{2(n+1)},$$ כאשר $n$ הוא מספר המשתנים בנוסחת הקלט $\varphi$ שבה נעסוק. > **הערה:** בהרצאה ובסיכום הפרמטר נכתב ישירות כ‑$n$; הפירוט כאן. האמפליפיקציה מנוסחת ביחס ל**אורך הקלט**: לכל פולינום $q$ אפשר לקבל שגיאה $\le 1/q(|\psi|)$. ניקח $q(\ell)=2(\ell+1)$. מכיוון שכל משתנה חייב להופיע בקידוד, $n\le|\psi|$, ולכן $\frac{1}{2(|\psi|+1)}\le\frac{1}{2(n+1)}$ והחסם הדרוש מתקיים. חשוב לוודא שזה נכון גם עבור הנוסחאות **העזר** $\psi=\varphi_i\wedge x_i$ שנשאל עליהן: מכיוון שהאלגוריתם למטה **אינו מעלים משתנים**, לכולן אותה קבוצת משתנים בגודל $n$, וגם עבורן $n\le|\psi|$. זו בדיוק הסיבה שבחרנו במשפט 2 להוסיף הסגרי יחידה ולא להציב. הבחירה $\tfrac{1}{2(n+1)}$ אינה מקרית — היא נקבעה לאחור, מתוך ידיעה שנכפול ב‑$n+1$ ונרצה לקבל $\tfrac12$. **שלב ב' — האלגוריתם $\hat M$.** קלט: נוסחה $\varphi$ בצורת CNF, עם משתנים $x_1,\dots,x_n$. 1. אם $M$ דוחה את $\varphi$ — דחה. 2. לכל $1\le i\le n$: 1. אם $M$ מקבלת את $\varphi\wedge x_i$ — קבע $v(x_i)=1$ והצב $\varphi\leftarrow\varphi\wedge x_i$. 2. אחרת — קבע $v(x_i)=0$ והצב $\varphi\leftarrow\varphi\wedge\neg x_i$. 3. אם $v$ מספקת את $\varphi$ — קבל; אחרת — דחה. **ההבדל מהאלגוריתם של משפט 2** אינו בתחביר אלא בהקשר. הטקסט כמעט זהה, מלבד שלב 3 שמחזיר "קבל/דחה" ולא השמה. ההבדל האמיתי: שם $M$ הייתה **דטרמיניסטית** ולכן כל האלגוריתם היה דטרמיניסטי; כאן $M$ היא מכונה **אקראית** ולכן כל האלגוריתם אקראי ויכול לטעות. **ניתוח זמן ריצה.** זהה מילה במילה לניתוח של משפט 2 — החסם על זמן הריצה של $M$ הוא דטרמיניסטי (מתקיים בכל הרצה), ולכן $\mathrm{time}_{\hat M}(\varphi)=O(|\varphi|^{c+1})$. **ניתוח סמנטי, מקרה $\varphi\notin\mathrm{SAT}$ — אין false positives.** נטען: $\Pr[\hat M \text{ rejects } \varphi]=1$, כלומר הסתברות הקבלה היא $0$ בדיוק. התבוננו ברמה התחבירית: **המקום היחיד באלגוריתם שבו מופיעה המילה "קבל" הוא שלב 3**, ותנאי הכניסה אליו הוא ש‑$v$ מספקת את $\varphi$. שלב 3 הוא דטרמיניסטי לחלוטין — יש ביד השמה מלאה, ובודקים אותה מול הנוסחה. נתק אותו לרגע מכל השאר: נניח שמישהו נותן לך נוסחה $\varphi$ והשמה $v$ שהגיעה מהשמיים, ואתה מקבל אם ורק אם $v\models\varphi$. אם ל‑$\varphi$ אין השמה מספקת כלל, אז **שום** השמה — ולא משנה איך התקבלה, כמה טעויות נעשו בדרך, ומה היו תוצאות ההטלות — לא תספק אותה, ולכן לעולם לא תקבל. לכן $\Pr[\hat M \text{ accepts } \varphi]=0$. (בפרט שלב 1 אינו נחוץ לנכונות; הוא נשמר כדי לשמור על הדמיון לאלגוריתם הקודם.) **ניתוח סמנטי, מקרה $\varphi\in\mathrm{SAT}$.** ההסתברויות כאן הן **מעל המטבעות של $\hat M$ עבור הנוסחה הקבועה $\varphi$** — לא מעל נוסחאות אקראיות. נגדיר שני מאורעות: - $A$ — המאורע "$\hat M$ מקבלת את $\varphi$". - $B$ — המאורע "$M$ **צודקת בכל אחת** מההרצות שלה במהלך הריצה של $\hat M$". **טענת ההכלה $B\subseteq A$.** אם $M$ צודקת בכל הרצותיה, אז כל תשובה שקיבל $\hat M$ מ‑$M$ זהה לתשובה שהייתה מקבלת מהמכריע המדויק, ולכן $\hat M$ מתנהג בדיוק כמו האלגוריתם הדטרמיניסטי של משפט 2. לפי משפט 2, אותו אלגוריתם בונה השמה $v$ **המספקת** את $\varphi$; אז שלב 3 מקבל. לכן כל תוצאת מטבעות ב‑$B$ שייכת גם ל‑$A$, ומכאן $\Pr(B)\le\Pr(A)$. > **הערה:** ההכלה היא בכיוון אחד בלבד, וזה בסדר גמור. ייתכן ש‑$\hat M$ תקבל למרות ש‑$M$ טעתה בדרך — טעות, תיקון, טעות, תיקון, ובסוף במקרה נבנתה השמה מספקת. אנחנו רק חוסמים מלמטה, ולכן די בכיוון הזה. שימו לב גם ש‑$B$ הוא תנאי **חזק** — הוא דורש צדקוּת בכל ההרצות, גם כשיש הרבה השמות מספקות ולכן "מותר" ל‑$M$ לטעות ולהצליח בכל זאת. **חסימת $\Pr(B)$ מלמטה.** בהסתברות יש הרבה יותר כלים לחסום מלמעלה מאשר מלמטה (למשל אי‑שוויון מרקוב, שיעור 20), ולכן נחסום מלמעלה את המשלים. נסמן: - $B_0$ — המאורע "$M$ צדקה בשלב 1". - לכל $1\le i\le n$: $B_i$ — המאורע "$M$ צדקה בקריאה שבאיטרציה ה‑$i$". אז $B=\bigcap_{i=0}^{n}B_i$, ולכן לפי דה‑מורגן $\bar B=\bigcup_{i=0}^{n}\bar B_i$. המאורעות $\bar B_i$ אינם זרים ואינם בלתי תלויים, ולכן אי אפשר לחשב את הסתברות האיחוד; אבל **חסם האיחוד** אינו דורש דבר מאלה: $$\Pr(\bar B)\ \le\ \sum_{i=0}^{n}\Pr(\bar B_i)\ \le\ (n+1)\cdot\frac{1}{2(n+1)}\ =\ \frac12 .$$ > **הערה:** בהרצאה החסם $\Pr(\bar B_i)\le\frac{1}{2(n+1)}$ נלקח ישירות מהאמפליפיקציה; הפירוט כאן. הנוסחה שעליה $M$ נקראת באיטרציה $i$ תלויה בתשובות הקודמות, ולכן $\bar B_i$ אינו "כישלון על קלט קבוע". אבל כל קריאה משתמשת במטבעות **טריים**, ולכן לכל היסטוריה $h$ של הקריאות הקודמות מתקיים $\Pr[\bar B_i\mid h]\le\frac{1}{2(n+1)}$ — כי בהינתן $h$ הנוסחה הנשאלת קבועה, וכל נוסחה כזו היא קלט לגיטימי ל‑$M$ עם אותה קבוצת $n$ משתנים. מנוסחת ההסתברות השלמה, $\Pr(\bar B_i)=\sum_h \Pr(h)\Pr[\bar B_i\mid h]\le\frac{1}{2(n+1)}$. לכן $\Pr(B)=1-\Pr(\bar B)\ge\tfrac12$, ומההכלה $B\subseteq A$ נובע $$\Pr[\hat M \text{ accepts } \varphi]\ =\ \Pr(A)\ \ge\ \tfrac12 .$$ **מסקנת ביניים.** $\hat M$ היא מכונה אקראית פולינומית שמקבלת נוסחה ספיקה בהסתברות $\ge\tfrac12$ ואינה מקבלת נוסחה בלתי ספיקה לעולם. לכן $\mathrm{SAT}\in\mathrm{RP}$. **סיום.** תהא $L\in\mathrm{NP}$. מכיוון ש‑$\mathrm{SAT}$ היא $\mathrm{NP}$‑קשה מתקיים $L\le_p\mathrm{SAT}$, ומכיוון ש‑$\mathrm{RP}$ סגורה לרדוקציות זמן פולינומי נובע $L\in\mathrm{RP}$. לכן $\mathrm{NP}\subseteq\mathrm{RP}$. $\blacksquare$ ### משפט 5: $\mathrm{coP}=\mathrm{P}$ נגדיר $\mathrm{coP}=\{\bar A\mid A\in\mathrm{P}\}$. **טענה:** $\mathrm{coP}=\mathrm{P}$. **הוכחה.** תהא $A$ שפה כלשהי. נטען $A\in\mathrm{P}\iff\bar A\in\mathrm{P}$ (סגירות $\mathrm{P}$ למשלים): אם $M$ מכריעה את $A$ בזמן פולינומי, המכונה שמריצה את $M$ והופכת את התשובה (מקבלת כאשר $M$ דוחה ולהפך) מכריעה את $\bar A$ באותו זמן ריצה; זה חוקי כי $M$ **דטרמיניסטית ועוצרת תמיד**. הכיוון השני זהה. כעת: אם $B\in\mathrm{coP}$ אז $B=\bar A$ עבור $A\in\mathrm{P}$, ולכן $B\in\mathrm{P}$; ואם $B\in\mathrm{P}$ אז $\bar B\in\mathrm{P}$ ולכן $B=\overline{\bar B}\in\mathrm{coP}$. $\blacksquare$ **למה זה נכשל ב‑$\mathrm{NP}$.** הטריק "הפוך את התשובה" דורש שהמכונה תהיה דטרמיניסטית. ב‑$\mathrm{NP}$ ההגדרה אינה סימטרית: $x\in L$ פירושו ש**קיימת** ריצה מקבלת (או **קיים** עד קצר), ו‑$x\notin L$ פירושו ש**לכל** ריצה/עד התשובה שלילית. היפוך התשובה של כל ריצה בנפרד אינו מחליף בין הכמתים. לכן $\mathrm{NP}\overset{?}{=}\mathrm{coNP}$ היא **בעיה פתוחה**. ### משפט 6: $\mathrm{P}\subseteq\mathrm{NP}\cap\mathrm{coNP}$ **הוכחה.** ראינו $\mathrm{P}\subseteq\mathrm{NP}$ (שיעור 6). נותר להראות $\mathrm{P}\subseteq\mathrm{coNP}$. תהא $A\in\mathrm{P}$. לפי משפט 5, $\bar A\in\mathrm{P}$, ולכן $\bar A\in\mathrm{NP}$. לפי הגדרת $\mathrm{coNP}$, המשלים של שפה ב‑$\mathrm{NP}$ הוא ב‑$\mathrm{coNP}$; והמשלים של $\bar A$ הוא $A$. מכאן $A\in\mathrm{coNP}$. לכן $\mathrm{P}\subseteq\mathrm{NP}\cap\mathrm{coNP}$. $\blacksquare$ ### משפט 7: $\mathrm{NP}=\mathrm{coNP}$ אם ורק אם $\mathrm{NP}\subseteq\mathrm{coNP}$ **הוכחה.** ($\Rightarrow$) מהגדרת שוויון קבוצות, שוויון גורר הכלה. ($\Leftarrow$) נניח $\mathrm{NP}\subseteq\mathrm{coNP}$. נותר להראות $\mathrm{coNP}\subseteq\mathrm{NP}$. תהא $A\in\mathrm{coNP}$. מהגדרת $\mathrm{coNP}$ קיימת $C\in\mathrm{NP}$ עם $A=\bar C$, ולכן $\bar A=C\in\mathrm{NP}$. מההנחה, $\bar A\in\mathrm{coNP}$; שוב מההגדרה, $\overline{\bar A}=A\in\mathrm{NP}$. לכן $\mathrm{coNP}\subseteq\mathrm{NP}$, ויחד עם ההנחה $\mathrm{NP}=\mathrm{coNP}$. $\blacksquare$ שימו לב שאין בהוכחה הזו שום סיבוכיות — היא כולה תורת קבוצות על אופרטור המשלים. ### משפט 8: $\mathrm{NP}=\mathrm{coNP}$ אם ורק אם $\mathrm{SAT}\in\mathrm{coNP}$ **הוכחה.** ($\Rightarrow$) $\mathrm{SAT}\in\mathrm{NP}$, ומהשוויון $\mathrm{SAT}\in\mathrm{coNP}$. ($\Leftarrow$) נניח $\mathrm{SAT}\in\mathrm{coNP}$, ותהא $A\in\mathrm{NP}$. מ‑$\mathrm{NP}$‑קושי של $\mathrm{SAT}$ קיימת רדוקציה $A\le_p\mathrm{SAT}$. מסגירות $\mathrm{coNP}$ לרדוקציות זמן פולינומי (ראו תרגיל 3 בסעיף הדוגמאות) נובע $A\in\mathrm{coNP}$. לכן $\mathrm{NP}\subseteq\mathrm{coNP}$, ולפי משפט 7 $\mathrm{NP}=\mathrm{coNP}$. $\blacksquare$ ### משפט 9: $A$ היא coNP-קשה אם ורק אם $\bar A$ היא NP-קשה תהא $A$ בעיית הכרעה. **הוכחה.** ($\Rightarrow$) נניח ש‑$A$ היא $\mathrm{coNP}$‑קשה, כלומר לכל $D\in\mathrm{coNP}$ מתקיים $D\le_p A$. תהא $B\in\mathrm{NP}$. אז $\bar B\in\mathrm{coNP}$ (מהגדרת $\mathrm{coNP}$), ולכן $\bar B\le_p A$; תהא $f$ הרדוקציה, כלומר $x\in\bar B\iff f(x)\in A$ לכל $x$. **אותה $f$ בדיוק** היא רדוקציה מ‑$B$ ל‑$\bar A$: $$x\in B\iff x\notin\bar B\iff f(x)\notin A\iff f(x)\in\bar A .$$ $f$ עדיין ניתנת לחישוב בזמן פולינומי — לא נגענו בה כלל. לכן $B\le_p\bar A$ לכל $B\in\mathrm{NP}$, כלומר $\bar A$ היא $\mathrm{NP}$‑קשה. ($\Leftarrow$) בדומה, בהחלפת התפקידים. נניח ש‑$\bar A$ היא $\mathrm{NP}$‑קשה, ותהא $D\in\mathrm{coNP}$. אז $\bar D\in\mathrm{NP}$, ולכן $\bar D\le_p\bar A$ באמצעות $g$ כלשהי; ואותה $g$ נותנת $D\le_p A$, שכן $x\in D\iff x\notin\bar D\iff g(x)\notin\bar A\iff g(x)\in A$. לכן $A$ היא $\mathrm{coNP}$‑קשה. $\blacksquare$ > **הערה:** בהרצאה [02:01:20] המרצה פתח בטעות מהכיוון ההפוך, סטודנט העיר על כך, והוא תיקן והמשיך מהכיוון הנכון [02:02:26]. הגרסה כאן היא הגרסה של הסיכום, שהיא הנכונה. **הנקודה המפתיעה שהודגשה בכיתה.** רדוקציית מיפוי "יודעת" להתהפך בשני הצדדים בו‑זמנית — אין צורך "להפוך את התוצאה" של $f$ (רדוקציה אינה מחזירה כן/לא, היא מחזירה מופע!). אותה פונקציה בדיוק משמשת גם בכיוון המשלים. זה נראה כבר בחישוביות, וכאן הוא מופיע שוב. --- ## דוגמאות ותרגילים מהשיעור ### דוגמה 1: הרצה מלאה של אלגוריתם הקירוב על נוסחה קונקרטית *(הרצת האלגוריתם עצמו היא חומר של שיעור 20; היא מובאת כאן כדי שיהיה אפשר לסגור את חשבון הקירוב מקצה לקצה על מספרים ממשיים.)* $$\varphi=\underbrace{(x_1\vee x_2\vee x_3)}_{C_1}\wedge\underbrace{(x_1\vee\neg x_2\vee x_4)}_{C_2}\wedge\underbrace{(x_1\vee x_3\vee\neg x_4)}_{C_3}\wedge\underbrace{(\neg x_1\vee\neg x_2\vee\neg x_3)}_{C_4}$$ נוסחה זו היא 3ECNF: בכל הסגר בדיוק שלושה ליטרלים מעל שלושה משתנים שונים. $n=4$, $m=4$, והסף הוא $\tfrac78\cdot4=3.5$. תנאי ההתחלה: $\mathbb{E}[X]=4\cdot\tfrac78=3.5$. **איטרציה 1 ($x_1$).** נציב $x_1=1$: $C_1,C_2,C_3$ מסופקים (תרומה $1$ כל אחד); $C_4$ מצטמצם ל‑$(\neg x_2\vee\neg x_3)$, שני ליטרלים חופשיים, תרומה $1-2^{-2}=\tfrac34$. $$\mathbb{E}[X\mid v(x_1)=1]=1+1+1+\tfrac34=3.75 .$$ בדיקה (לצורך ההמחשה בלבד — האלגוריתם לא מחשב אותה): $x_1=0$ נותן $C_1\to(x_2\vee x_3)$: $\tfrac34$; $C_2\to(\neg x_2\vee x_4)$: $\tfrac34$; $C_3\to(x_3\vee\neg x_4)$: $\tfrac34$; $C_4$ מסופק: $1$. סה"כ $3.25$. ואכן $\frac{3.75+3.25}{2}=3.5=\mathbb{E}[X]$, כמתחייב ממשפט התוחלת השלמה. $3.75\ge3.5$, לכן $v(x_1)=1$. הנוסחה הנוכחית: שלושה הסגרים מסופקים לצמיתות $+\ (\neg x_2\vee\neg x_3)$. **איטרציה 2 ($x_2$).** $\mathbb{E}[X\mid v(x_1)=1,v(x_2)=1]=3+\Pr[\neg x_3]=3+\tfrac12=3.5\ \ge\ 3.5$. לכן $v(x_2)=1$. נותר ההסגר $(\neg x_3)$. **איטרציה 3 ($x_3$).** $\mathbb{E}[X\mid \dots,v(x_3)=1]=3+0=3\ <\ 3.5$. לכן $v(x_3)=0$, ואז $\mathbb{E}[X\mid\dots,v(x_3)=0]=3+1=4\ge3.5$ — האינווריאנטה נשמרה, כמובטח מטיעון הממוצע. **איטרציה 4 ($x_4$).** $x_4$ כבר אינו מופיע בשום הסגר לא‑מסופק, ולכן $\mathbb{E}[X\mid\dots,v(x_4)=1]=4\ge3.5$; האלגוריתם קובע $v(x_4)=1$. **פלט:** $v=(x_1,x_2,x_3,x_4)=(1,1,0,1)$. בדיקה: $C_1$ ✓ (מ‑$x_1$), $C_2$ ✓, $C_3$ ✓, $C_4$ ✓ (מ‑$\neg x_3$). $\mathrm{ALG}=4\ge3.5$. כאן במקרה $\mathrm{OPT}=4=\mathrm{ALG}$, ויחס הקירוב בפועל הוא $1\ge\tfrac78$. ### דוגמה 2: המקרה ההדוק — כשהחסם $\mathrm{OPT}\le m$ אינו חד ניקח את הנוסחה שכל שמונת ההסגרים מעל $x_1,x_2,x_3$ מופיעים בה: $$\varphi^\*=\bigwedge_{(a,b,c)\in\{0,1\}^3}\big(x_1^{a}\vee x_2^{b}\vee x_3^{c}\big),\qquad x^{1}:=x,\ x^{0}:=\neg x .$$ כאן $n=3$, $m=8$, וזו 3ECNF תקינה. כל השמה מלאה $(u_1,u_2,u_3)$ מפילה **בדיוק הסגר אחד** — זה שכל ליטרליו מנוגדים לה. לכן $\mathrm{OPT}(\varphi^\*)=7<8=m$, והנוסחה אינה ספיקה. הרצת האלגוריתם: הסף הוא $\tfrac78\cdot8=7$. - $\mathbb{E}[X\mid v(x_1)=1]$: ארבעת ההסגרים המכילים $x_1$ מסופקים ($4$); ארבעת ההסגרים המכילים $\neg x_1$ מצטמצמים להסגרים באורך 2, כל אחד תורם $\tfrac34$, סה"כ $3$. יחד $7\ge7$ ⟹ $v(x_1)=1$. - $\mathbb{E}[X\mid v(x_1)=1,v(x_2)=1]=4+\big(1+1+\tfrac12+\tfrac12\big)=7\ge7$ ⟹ $v(x_2)=1$. - $\mathbb{E}[X\mid\dots,v(x_3)=1]=4+1+1+1+0=7\ge7$ ⟹ $v(x_3)=1$. פלט $v=(1,1,1)$, המספק $7$ הסגרים — **בדיוק** $\tfrac78 m$. שתי מסקנות על יחס הקירוב: 1. הערבות $\mathrm{ALG}\ge\tfrac78 m$ **הדוקה**: יש נוסחה שעליה האלגוריתם משיג בדיוק את החסם ולא יותר. 2. החסם $\mathrm{OPT}\le m$ **אינו** הדוק כאן ($\mathrm{OPT}=7<8=m$), ולכן היחס בפועל מול $\mathrm{OPT}$ הוא $7/7=1$ — טוב מ‑$\tfrac78$. זה בדיוק המחיר של המעבר מערבות מוחלטת ליחס קירוב: אנחנו מוותרים על חדות כדי לקבל טענה שמנוסחת מול $\mathrm{OPT}$, שאותו איננו יודעים לחשב. ### דוגמה 3: הרצת הרדוקציה העצמית (משפט 2) על נוסחה קונקרטית $$\varphi=(x_1\vee x_2)\wedge(\neg x_1\vee x_3)\wedge(\neg x_2\vee\neg x_3).$$ - **שלב 1:** $\varphi$ ספיקה (למשל $(0,1,0)$), ולכן $M$ מקבלת ואנחנו ממשיכים. - **$i=1$:** האם $\varphi\wedge(x_1)$ ספיקה? $x_1=1$ מכריח $x_3=1$ (מההסגר השני), ואז ההסגר השלישי מכריח $x_2=0$; ההשמה $(1,0,1)$ מספקת. $M$ מקבלת ⟹ $v(x_1)=1$, $\varphi\leftarrow\varphi\wedge(x_1)$. - **$i=2$:** האם $\varphi\wedge(x_1)\wedge(x_2)$ ספיקה? $x_1=1$ מכריח $x_3=1$, ו‑$x_2=1$ יחד עם $x_3=1$ מפילים את ההסגר השלישי. אין השמה מספקת. $M$ דוחה ⟹ $v(x_2)=0$, $\varphi\leftarrow\varphi\wedge(x_1)\wedge(\neg x_2)$. - **$i=3$:** האם $\varphi\wedge(x_1)\wedge(\neg x_2)\wedge(x_3)$ ספיקה? ההשמה $(1,0,1)$ מספקת. $M$ מקבלת ⟹ $v(x_3)=1$. - **פלט:** $v=(1,0,1)$. בדיקה: $(x_1\vee x_2)=1$ ✓, $(\neg x_1\vee x_3)=0\vee1$ ✓, $(\neg x_2\vee\neg x_3)=1\vee0$ ✓. שימו לב לאורך: התחלנו עם $3$ הסגרים והוספנו $3$ הסגרי יחידה — לכל היותר הכפלה, כמו שנטען בניתוח. ### דוגמה 4: איפה בדיוק נכנסת הטעות באלגוריתם האקראי, ולמה היא חד‑צדדית ניקח את אותה $\varphi$ מדוגמה 3, ונדמיין ש‑$M$ (האקראית) **טועה** באיטרציה $i=1$ ודוחה את $\varphi\wedge(x_1)$ למרות שהיא ספיקה. אז $\hat M$ קובעת $v(x_1)=0$ ומוסיפה $(\neg x_1)$. הנוסחה עדיין ספיקה ($(0,1,0)$), ולכן ייתכן שנתאושש: אם $M$ תצדק בהמשך נקבל $v=(0,1,0)$, שמספקת. אבל אם $M$ תטעה שוב ותקבל את $\varphi\wedge(\neg x_1)\wedge(x_2)\wedge(x_3)$ — שאינה ספיקה — נסיים עם $v=(0,1,1)$, שמפילה את ההסגר השלישי. אז שלב 3 בודק, מגלה ש‑$v$ אינה מספקת, ו**דוחה**. זו טעות מסוג false negative: נוסחה ספיקה נדחתה. false positive לעולם אינו אפשרי, כי כדי לקבל צריך להחזיק ביד השמה מספקת — וכזו לא קיימת לנוסחה בלתי ספיקה. זו בדיוק ההבחנה בין $\mathrm{BPP}$ (שתי הטעויות אפשריות) ל‑$\mathrm{RP}$ (רק false negatives), ובשפת מטריצת הבלבול: ב‑$\mathrm{RP}$ אין false positives. ### תרגיל 1 (מהשיעור): מדוע $\Pr(B)\le\Pr(A)$ ולא להפך? **השאלה בכיתה:** אינטואיטיבית נדמה ש"להיות צודקת בכל ההרצות" קורה יותר מ"$\hat M$ מקבלת", ולכן ההסתברות שלו גדולה יותר. **התשובה:** ההפך. "צודקת בכל ההרצות" היא דרישה **חזקה יותר** מ"$\hat M$ מקבלת" — כל תוצאת מטבעות שמקיימת אותה גורמת לקבלה, אבל יש תוצאות שגורמות לקבלה בלי שהיא מתקיימת ($M$ טעתה ובכל זאת נבנתה השמה מספקת). לכן $B\subseteq A$ כקבוצות של תוצאות, ומכאן $\Pr(B)\le\Pr(A)$. חוסמים מלמטה את $\Pr(A)$ דרך $\Pr(B)$ — וזה מותר, כי אנחנו רק צריכים חסם תחתון. ### תרגיל 2 (מהשיעור): למה לא לחסום את $\Pr(\bar B)$ במכפלה $\big(\tfrac{1}{2(n+1)}\big)^{n+1}$? **התשובה:** מכפלה כזו הייתה נכונה רק אם המאורעות $\bar B_i$ היו בלתי תלויים. הם אינם: הנוסחה שנשאלת באיטרציה $i$ תלויה בתשובות הקודמות. אפשר תמיד לכתוב את הסתברות החיתוך כמכפלת הסתברויות **מותנות** (כמו בניתוח אלגוריתם החתך המינימלי, שיעור 18), אבל אלה אינן ההסתברויות הבלתי מותנות, וההשוואה בין המכפלה לביטוי המקורי אינה קבועה בכיוונה. חסם האיחוד, לעומת זאת, תקף תמיד ללא שום הנחת תלות — וזו בדיוק הסיבה שבחרנו בו. ### תרגיל 3 (שהמרצה השאיר לבית): $\mathrm{coNP}$ סגורה לרדוקציות זמן פולינומי **הטענה.** אם $A\in\mathrm{coNP}$ ו‑$B\le_p A$, אז $B\in\mathrm{coNP}$. **פתרון מלא.** תהא $f$ הרדוקציה הפולינומית, $x\in B\iff f(x)\in A$. מהגדרת $\mathrm{coNP}$, $\bar A\in\mathrm{NP}$. אותה $f$ היא רדוקציה מ‑$\bar B$ ל‑$\bar A$: $$x\in\bar B\iff x\notin B\iff f(x)\notin A\iff f(x)\in\bar A .$$ לכן $\bar B\le_p\bar A$. מכיוון ש‑$\mathrm{NP}$ סגורה לרדוקציות זמן פולינומי (ראו שיעור 7), $\bar B\in\mathrm{NP}$, ולכן לפי ההגדרה $B=\overline{\bar B}\in\mathrm{coNP}$. $\blacksquare$ זה בדיוק מה שהמרצה ביקש: להשתמש בסגירות של $\mathrm{NP}$ במקום לרדת לרמת המכונה. ### תרגיל 4: $\overline{\mathrm{SAT}}$ היא coNP-קשה **פתרון.** $\mathrm{SAT}$ היא $\mathrm{NP}$‑קשה. נפעיל את משפט 9 עם $A=\overline{\mathrm{SAT}}$: אז $\bar A=\mathrm{SAT}$ היא $\mathrm{NP}$‑קשה, ולכן $A=\overline{\mathrm{SAT}}$ היא $\mathrm{coNP}$‑קשה. יחד עם $\overline{\mathrm{SAT}}\in\mathrm{coNP}$ (מהגדרה, כי $\mathrm{SAT}\in\mathrm{NP}$), $\overline{\mathrm{SAT}}$ היא $\mathrm{coNP}$‑שלמה. --- ## הערות מהשיעור - *(האסופה של הערות המרצה על הדרנדומיזציה עצמה — "משתנה מקרי הוא פונקציה, לא מספר" [00:04:17], היתרון בפשטות של אלגוריתמים אקראיים [00:09:35], מדוע ה‑$\tfrac78$ שורד גם כשהנוסחה חדלה להיות 3ECNF [00:22:14], והמשתנה המנוון באיטרציה האחרונה [00:26:33] — שייכת לשיעור 20; ראו שם.)* - **[00:29:48] שגיאת תמלול שכדאי להכיר.** התמלול האוטומטי כותב "אם NP מוכל בBPP אז NP מוכל בP". זה שגוי: הסיכום כותב $\mathrm{NP}\subseteq\mathrm{RP}$, וכל הדיון שבא מיד אחריו [00:31:21]–[00:33:57] עוסק בהבדל בין טעות דו‑צדדית לחד‑צדדית, כלומר בין $\mathrm{BPP}$ ל‑$\mathrm{RP}$ — ולא ב‑$\mathrm{P}$. - **[00:30:20] טענת הכלה מתחילה ב"לכל".** המרצה עצר את הכיתה על ניסוח: *"ברגע שתצייתו לתבנית, הסיכוי שלכם לטעות יורד משמעותית."* ההוכחה של $\mathrm{NP}\subseteq\mathrm{RP}$ חייבת להתחיל ב"תהא $L\in\mathrm{NP}$", לא ב"קיים". - **[00:33:27] "התחילו מההבדל התחבירי."** לפני שמחפשים אינטואיציה, משווים את הסימנים: $\mathrm{BPP}$ מול $\mathrm{RP}$ נבדלות בשתי אותיות, והקבועים $\tfrac23,\tfrac12$ אינם המהות (אמפליפיקציה משנה אותם). מה שנשאר הוא **צדדיות הטעות**. *"הפורמליזם הוא כאן כדי לשמור עלינו מטעויות."* - **[00:40:17] איזו תכונה נדרשת בכל כיוון.** בשקילות $\mathrm{NP}\subseteq\mathrm{BPP}\iff\mathrm{SAT}\in\mathrm{BPP}$ — כיוון אחד משתמש ב‑$\mathrm{NP}$‑**קושי** בלבד, השני בשייכות $\mathrm{SAT}\in\mathrm{NP}$. המרצה ביקש במפורש: אל תזרקו "כי $\mathrm{SAT}$ היא $\mathrm{NP}$‑שלמה" בלי לומר איזו חצי‑תכונה נחוצה איפה. *"אני יודע מתי סתם זורקים דברים; זה ניכר."* - **[00:46:09] לא כל הבעיות ה‑$\mathrm{NP}$‑שלמות נראות אותו הדבר.** ברזולוציה של $\mathrm{NP}$‑קושי הן זהות, אבל self-reducibility אינה ידועה לכולן, ובקירוביות יש ביניהן פערים עצומים ($\mathrm{VC}$ עם קירוב 2, מול $\mathrm{TSP}$ שקירוב כלשהו שלה גורר $\mathrm{P}=\mathrm{NP}$; ראו שיעור 13). - **[01:06:37] ניסוח מיטבי של משפט.** *"כשאני מנסח statement, אני אדאג שהתנאי יהיה כמה שיותר חלש והתוצאה כמה שיותר חזקה."* לכן נכתב "אם $\mathrm{SAT}\in\mathrm{BPP}$ אז $\mathrm{NP}\subseteq\mathrm{RP}$" ולא "אם $\mathrm{NP}\subseteq\mathrm{BPP}$ אז $\mathrm{SAT}\in\mathrm{RP}$", למרות ששתיהן שקולות. - **[01:26:19] "it all boils down" — הרגע היפה של השיעור.** כשסטודנט התקשה, המרצה מחק את הלוח: *"שכח מהאלגוריתם. אני נותן לך נוסחה והשמה. אם ההשמה מספקת, אתה מקבל; אחרת אתה דוחה. אם הנוסחה לא הייתה ספיקה, האם יש מצב שתקבל?"* — ה‑one-sidedness כולה יושבת על שלב 3 הדטרמיניסטי, ולא על שום דבר בבנייה שלפניו. - **[01:31:30] למה חוסמים את המשלים.** *"בהסתברות יש לי הרבה יותר כלים לחסום דברים מלמעלה"* (מרקוב, צ'רנוף, חסם האיחוד). לכן כדי לחסום $\Pr(B)$ מלמטה חוסמים את $\Pr(\bar B)$ מלמעלה. - **[01:40:27] הסיבה שלא העלמנו משתנים.** *"אם הסתברות ההצלחה תלויה במספר המשתנים, אני לא רוצה להקטין את מספר המשתנים, כי אני לא רוצה לשנות את ההסתברות."* זו התשובה לחידה שהושארה פתוחה שעה שלמה קודם. - **[01:39:23] שאלה שנשאלה ותשובתה.** אם הסתברות ההצלחה הייתה $\tfrac12$ בדיוק (בלי "bounded away") לא היה אפשר לעשות דבר — זהו תרגיל בית. - **[01:47:35] אזהרת בלבול.** $\mathrm{coNP}$ הוא **אוסף המשלימים** ולא **המשלים של האוסף**. *"בדיוק כמו $\mathrm{R}$ ו‑$\mathrm{coR}$: $\mathrm{coR}$ זה לא המשלים של $\mathrm{R}$."* - **[02:04:33] גישת ה‑high-level.** *"הוכחתי מספיק דברים בחיינו כדי שלא אצטרך לרדת לרמת המכונה. אם ה‑high-level לא עובד, אני אפתח את מכסה המנוע."* כל הוכחות ה‑$\mathrm{coNP}$ בשיעור נעשות ברמת סגירויות ורדוקציות, בלי מכונות. - **[02:05:37] הכנה לשיעור הבא.** המרצה ביקש לחזור על הרדוקציות מ‑$\mathrm{SAT}$ ל‑$\mathrm{IS}$ ול‑$\mathrm{MAXIS}$ מתרגיל הבית, כי השיעור הבא יראה ש‑$\mathrm{MAXIS}$ היא גם $\mathrm{NP}$‑קשה וגם $\mathrm{coNP}$‑קשה — יישום ישיר של משפט 9. --- ## פערים בין הסיכום להקלטה - **מקור:** עמודים 1–2 בסיכום מול גבול הבעלוּת בין השיעורים. **הפער:** שני העמודים הראשונים של הסיכום של שיעור 21 מכילים את אלגוריתם הדרנדומיזציה ל‑3ECNF ואת הוכחת נכונותו במלואם, אך בהקלטה החומר הזה נלמד לפני [00:27:36] ונכתב בשיעור 20. **ההכרעה:** האלגוריתם והתוצאה מנוסחים כאן במדויק ומצוטטים בהפניה לשיעור 20; מה שמוכח כאן במלואו הוא רק אריזתם כיחס קירוב ($\mathrm{OPT}\le m$, חוקיות הפלט, המוסכמה). מתועד גם ב‑`open_questions`. - **מקור:** ההקלטה [00:29:48] מול הסיכום עמוד 2. **הפער:** התמלול האוטומטי כותב "אם NP מוכל בBPP אז NP מוכל בP", בעוד שהסיכום כותב $\mathrm{NP}\subseteq\mathrm{RP}$. **ההכרעה:** הסיכום. ההקשר בהקלטה מכריע חד‑משמעית לטובתו: מיד אחר כך [00:31:21]–[00:33:57] מנוהל דיון שכולו על ההבדל בין טעות דו‑צדדית לחד‑צדדית ועל כך ש"ההבדל בין $\mathrm{BPP}$ ל‑$\mathrm{RP}$ הוא שתי אותיות" — טיעון חסר משמעות אילו המסקנה הייתה $\mathrm{P}$. - **מקור:** ההקלטה [00:53:18] ו‑[01:40:27]. **הפער:** הסיכום מציג את הוספת הסגרי היחידה (במקום הצבה) בלי נימוק. **ההכרעה:** הנימוק — שמירת מספר המשתנים בגלל שגיאה התלויה ב‑$n$ — נכתב בגוף בשני המקומות, כפי שהמרצה חשף אותו רק בהמשך. - **מקור:** הסיכום, עמודים 4–5. **הפער:** האות $A$ משמשת גם למאורע "$\hat M$ מקבלת את $\varphi$" וגם לשפה $A\in\mathrm{NP}$ בשורות הסיום — התנגשות סימונים ממש בתוך אותה הוכחה. **ההכרעה:** נשמרו $A,B$ למאורעות (כמו בסיכום ובהקלטה), והשפה סומנה $L$. מתועד גם ב‑`open_questions`. - **מקור:** הסיכום, עמוד 4. **הפער:** הסתברות השגיאה נכתבת כ‑$1-\frac{1}{2(n+1)}$ עם $n$ = מספר המשתנים, בעוד שמשפט האמפליפיקציה מנוסח לפי אורך הקלט. **ההכרעה:** הושלם בגוף (הערה בתוך הוכחת משפט 4): בוחרים $q(\ell)=2(\ell+1)$, ומכיוון ש‑$n\le|\psi|$ החסם הדרוש נובע — כולל עבור נוסחאות העזר, שלהן אותם $n$ משתנים. - **מקור:** הסיכום, עמוד 5. **הפער:** נכתב $\Pr(\bar B_i)\le\frac{1}{2(n+1)}$ בלי לטפל בכך שהנוסחה הנשאלת באיטרציה $i$ תלויה בתשובות הקודמות. **ההכרעה:** הושלם בגוף בהערה — התניה על ההיסטוריה + נוסחת ההסתברות השלמה, תוך שימוש בכך שכל קריאה משתמשת במטבעות טריים. - **מקור:** הסיכום, עמוד 3. **הפער:** האינדוקציה "קיימת השמה מספקת המשלימה את $v$" נרשמת במילה "אינדוקציה" בלבד. **ההכרעה:** נכתבה במלואה, כולל הצעד הלא‑אוטומטי שדחייה של הענף $x_i=1$ יחד עם ספיקות הנוסחה מכריחה קיום השמה מספקת עם $x_i=0$. - **מקור:** ההקלטה [02:01:20]–[02:02:26]. **הפער:** המרצה פתח את הוכחת משפט 9 מהכיוון ההפוך מזה שרצה, ותיקן לאחר שאלת סטודנט. **ההכרעה:** הגוף עוקב אחרי הניסוח והכיוון של הסיכום, שהם הנכונים; התקלה מתועדת כהערה מתחת למשפט 9. - **מקור:** הסיכום, עמוד 6. **הפער:** ליד השימוש בסגירות $\mathrm{coNP}$ לרדוקציות מסומן "צ" (צריך להוכיח) והמרצה השאיר זאת כתרגיל בית [01:59:43]; אין הוכחה בשום מקור. **ההכרעה:** ההוכחה נכתבה במלואה כתרגיל 3 בסעיף הדוגמאות. - **מקור:** הסיכום, עמוד 6. **הפער:** כיוון ($\Leftarrow$) של משפט 9 נכתב "בדומה" בלבד. **ההכרעה:** נכתב במלואו. - **מקור:** ההקלטה, כותרת הקובץ. **הפער:** תמלול 26 מתויג "שיעור 20" בעוד שתוכנו הוא שיעור 21 לפי מספור הסיכומים. **ההכרעה:** התיוג מתועלם, וההצמדה נעשתה לפי התוכן; מתועד ב‑`sources`. - **מקור:** התמלול השני (27). **הפער:** אינו מכסה חומר של שיעור זה כלל — הוא של שיעור 22 ($\mathrm{MAXIS}$). **ההכרעה:** נרשם עם `coverage: none` והערה; ממנו נלקחה רק ההצבעה על כך שטענות ה‑coNP כאן משמשות מיד בשיעור הבא. - לא הופיע בסיכום ולא בהקלטה: תוצאת אי‑קרִיבוּת מתאימה (חסם תחתון של $\tfrac78+\varepsilon$). **ההכרעה:** לא נכתבה כאן, כדי לא להכניס חומר שאינו מהמקורות. --- ## סיכום ונקודות למבחן **מה לזכור בעל פה.** 1. **$\mathrm{MAX\text{-}3ECNF}$:** האלגוריתם הדטרמיניסטי של שיעור 20 מחזיר השמה המספקת $\ge\tfrac78 m$ הסגרים; בצירוף $\mathrm{OPT}\le m$ זה קירוב ביחס $\alpha=\tfrac78$ במוסכמת המקסימיזציה $\mathrm{ALG}\ge\alpha\cdot\mathrm{OPT}$. הצעד $\mathrm{OPT}\le m$ הוא כל ההבדל בין ערבות מוחלטת ליחס קירוב. 2. **$\mathrm{SAT}$ היא self-reducible:** אלגוריתם פולינומי להכרעה ⟹ אלגוריתם פולינומי לחיפוש. אינה רדוקציית מיפוי. 4. **אם $\mathrm{SAT}\in\mathrm{BPP}$ אז $\mathrm{NP}\subseteq\mathrm{RP}$.** ההוכחה: אמפליפיקציה לשגיאה $\tfrac{1}{2(n+1)}$ + אותה בנייה כמו ברדוקציה העצמית + חסם איחוד על $n+1$ קריאות + בדיקה דטרמיניסטית בסוף. 5. **$\mathrm{coNP}=\{\bar A\mid A\in\mathrm{NP}\}$**, $\mathrm{coP}=\mathrm{P}$, $\mathrm{P}\subseteq\mathrm{NP}\cap\mathrm{coNP}$, $\mathrm{NP}=\mathrm{coNP}\iff\mathrm{NP}\subseteq\mathrm{coNP}\iff\mathrm{SAT}\in\mathrm{coNP}$, ו‑$A$ היא $\mathrm{coNP}$‑קשה $\iff$ $\bar A$ היא $\mathrm{NP}$‑קשה. **מלכודות סטנדרטיות.** - לכתוב את יחס הקירוב במוסכמה ההפוכה ($\alpha=\tfrac87$). בבעיית מקסימום המוסכמה היא $\mathrm{ALG}\ge\alpha\cdot\mathrm{OPT}$ עם $0<\alpha\le1$. - לבלבל בין $\mathrm{coNP}$ ל"המשלים של $\mathrm{NP}$". - לומר "$\mathrm{SAT}$ היא $\mathrm{NP}$‑שלמה" בלי לציין אם השתמשתם ב$\mathrm{NP}$‑**קושי** או בשייכות ל‑$\mathrm{NP}$ — במשפט 3 כל כיוון משתמש בחצי אחרת. - לנסות לחסום $\Pr(\bar B)$ במכפלה. המאורעות אינם בלתי תלויים; חסם האיחוד הוא הכלי. - לשכוח את הצעד $\mathrm{OPT}\le m$ ולהסיק ישירות "$\mathrm{ALG}\ge\tfrac78 m$ ולכן קירוב $\tfrac78$". - להתחיל הוכחת הכלה ב"קיים" במקום ב"לכל". **צ'ק‑ליסט — מה סטודנט אמור לדעת לעשות אחרי השיעור.** - להוכיח את יחס הקירוב $\tfrac78$ בשני החלקים: חוקיות הפלט, וההשוואה ל‑$\mathrm{OPT}$ דרך $\mathrm{OPT}\le m$ — בהינתן הערבות $\mathrm{ALG}\ge\tfrac78 m$ משיעור 20. - לרשום את אלגוריתם הרדוקציה העצמית ולהוכיח את האינווריאנטה באינדוקציה — כולל הצעד של הענף השלילי. - לשחזר את ההוכחה ש‑$\mathrm{SAT}\in\mathrm{RP}$: לזהות איפה נכנסת האמפליפיקציה, למה $n$ נשמר, מהם $A$ ו‑$B$, למה $B\subseteq A$, ואיפה בדיוק מובטח שאין false positives. - להוכיח את כל טענות ה‑$\mathrm{coNP}$ ברמת סגירויות ורדוקציות, בלי לרדת לרמת המכונה, כולל "אותה רדוקציה בדיוק עובדת גם למשלימים". > **הערה שלא נאמרה בהרצאה:** מכיוון שידוע גם $\mathrm{RP}\subseteq\mathrm{NP}$, המסקנה של משפט 4 שקולה למעשה ל‑$\mathrm{NP}=\mathrm{RP}$. זה לא נאמר בשיעור ולא נכתב בסיכום, ולכן אינו חלק מהחומר הנדרש. --- *הסיכום הכתוב שעליו מבוסס קובץ זה נכתב על ידי גיא סופר.*

Questions left open

  • ה‑slug approximation-max-3ecnf מתאר רק את הפתיחה; עיקר השיעור (SAT ∈ BPP ⟹ NP ⊆ RP, ו‑coNP) אינו קירוב כלל.
  • עמודים 1–2 בסיכום של שיעור 21 מכילים את אלגוריתם הדרנדומיזציה ל‑3ECNF ואת הוכחת נכונותו במלואם, אך אלה נלמדו בהקלטה לפני [00:27:36] ונכתבו בשיעור 20; כאן הם מוצגים כהפניה, ורק אריזתם כיחס קירוב מוכחת בגוף.
  • בעמוד 4–5 בסיכום האות A משמשת גם למאורע 'M̂ מקבלת את φ' וגם לשפה A ∈ NP בשורות הסיום; כאן השפה סומנה L כדי למנוע התנגשות.
  • הסיכום מנסח את הגברת ההסתברות כ‑1−1/(2(n+1)) לפי מספר המשתנים n; פורמלית האמפליפיקציה נותנת חסם לפי אורך הקלט, וההשלמה מופיעה בגוף (n ≤ |φ|).