23חזרה למבחן א׳: פתרון מטלה 1 ושאלה 1 ממבחן 2

שיעור חזרה שכולו פתרון תרגילים: סידור שבע מחלקות סיבוכיות לפי הכלה, המחלקה TISP, שתי ההוכחות ש-NP מוכלת ב-EXP וב-PSPACE, וארבע טענות רדוקציה ממבחן — שלוש מהן עם אלגוריתם שגוי שיש להפריך.

ביטחון: lowללא הקלטה8 עמודי סיכוםexam-reviewcomplexity-classestime-hierarchytispreductionsnae-sat

לשיעור הזה אין הקלטה

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

נשען על: שיעור 2, שיעור 3, שיעור 4, שיעור 6, שיעור 7, שיעור 8, שיעור 22

עמודי הסיכום בכתב יד

פתיחת עמוד 1 בגודל מלא

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

עמוד 1 מתוך 8 בסיכום הכתב יד

בקצרה

  • זהו הראשון מארבעה שיעורי חזרה. אין בו תיאוריה חדשה: הוא פתרון מלא של מטלה 1 (שאלות 3, 4, 8) ושל שאלה 1 ממבחן 2 (סעיפים א, ד, ה, ו).
  • סידור שבע מחלקות סיבוכיות לפי הכלה, וקביעה לגבי כל הכלה האם היא שוויון או הכלה ממש. התוצאה: שלוש מהמחלקות "המפחידות" מתמוטטות ל-P\mathrm{P} או ל-EXP\mathrm{EXP}, ושלוש ההכלות שנשארות הן ממש — כולן דרך משפט ההיררכיה בזמן.
  • המחלקה TISP(f,g)\mathrm{TISP}(f,g) (חסם זמן וחסם מקום בו-זמנית): מוכיחים ש-TISP(f,f)=DTime(f)\mathrm{TISP}(f,f)=\mathrm{DTime}(f), ומסיקים שהטענה ⋃cTISP(nc,nc)=PSPACE\bigcup_c\mathrm{TISP}(n^c,n^c)=\mathrm{PSPACE} שקולה לשאלה הפתוחה P=PSPACE\mathrm{P}=\mathrm{PSPACE}.
  • שתי הוכחות שונות לחסם עליון על NP\mathrm{NP}: NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP} דרך סריקת עץ הריצות של מכונה אי-דטרמיניסטית, ו-NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} דרך מעבר על כל העדים. הנקודה שהמרצה הדגיש: אותה מכונה בדיוק משמשת לשתי ההוכחות — היא צנועה במקום ובזבזנית בזמן.
  • שלוש טענות רדוקציה שהאלגוריתם המוצע להן שגוי, וזה עיקר השיעור: פלט שאינו קלט חוקי של בעיית היעד; פונקציית הזהות שאינה שומרת על כיוון ההכרעה; ואלגוריתם שבונה מספר אקספוננציאלי של קודקודים. בשלושתן הטענה עצמה נכונה — רק ההוכחה קרסה.
  • הסעיף האחרון של שאלת המבחן נגמר בשאלה מושגית: IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS} מתקיים תמיד, ואילו MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS} מתקיים אם ורק אם NP=coNP\mathrm{NP}=\mathrm{coNP}.
  • מי שקורא רק את הסעיף הזה יכול לדלג — אבל לא כדאי: קובץ זה הוא בדיוק סוג העבודה שהמבחן דורש.

רקע ותלויות

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

  • המחלקות העדינות והגסות — DTime(f)\mathrm{DTime}(f), DSpace(f)\mathrm{DSpace}(f), ומעליהן P=⋃c≥1DTime(nc)\mathrm{P}=\bigcup_{c\ge1}\mathrm{DTime}(n^c), EXP=⋃c≥1DTime(2nc)\mathrm{EXP}=\bigcup_{c\ge1}\mathrm{DTime}(2^{n^c}), PSPACE=⋃c≥1DSpace(nc)\mathrm{PSPACE}=\bigcup_{c\ge1}\mathrm{DSpace}(n^c) (ראו שיעור 2). שייכות למחלקה גסה היא טענת קיום — קודם "מקלפים" את הקיים ורק אז מגיעים למכונה.
  • מונוטוניות — אם f=O(g)f=O(g) אז DTime(f)⊆DTime(g)\mathrm{DTime}(f)\subseteq\mathrm{DTime}(g) (שיעור 2, משפט 4). זהו סוס העבודה של תרגיל 1: כמעט כל הכלה שם היא הערכת סדר גודל אחת ואז ציטוט המשפט.
  • הקשר בין מקום לזמן — spaceM(x)≤timeM(x)\mathrm{space}_M(x)\le\mathrm{time}_M(x) (שיעור 2, משפט 2; ובמודל האי-דטרמיניסטי שיעור 4, משפט 3). זהו כל תרגיל 2 סעיף (א).
  • משפט ההיררכיה בזמן (שיעור 3, משפט 4) — היחיד שיודע להוכיח הכלה ממש. בלעדיו אין לתרגיל 1 סעיף שני.
  • מכונות אי-דטרמיניסטיות ועץ הריצות (שיעור 4) — הגדרת ההכרעה האי-דטרמיניסטית, וספירת הקונפיגורציות.
  • שתי ההגדרות של NP\mathrm{NP} — עם מכונת הכרעה אי-דטרמיניסטית (שיעור 4) ועם מוודא דטרמיניסטי ועד (שיעור 6). התרגיל דורש במפורש הוכחה לכל הגדרה בנפרד.
  • NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} (שיעור 8, משפט 1) וסגירות P,NP,PSPACE\mathrm{P},\mathrm{NP},\mathrm{PSPACE} כלפי מטה תחת ≤p\le_p (שיעור 7 ושיעור 8).
  • רדוקציות, NP-קשיות ו-NP-שלמות (שיעור 7), והשפות IS\mathrm{IS} ו-SAT\mathrm{SAT} (שיעורים 5, 7).
  • MAX-IS\mathrm{MAX}\text{-}\mathrm{IS}, קשיותה משני הצדדים, והקשר ל-NP=coNP\mathrm{NP}=\mathrm{coNP} (שיעור 22).

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


הגדרות

הסעיף הזה קצר בכוונה — נזכיר רק את מה שהתרגילים כאן באמת משתמשים בו.

הגדרה 1: TISP(f,g)\mathrm{TISP}(f,g)

תהיינה f,g:N→Nf,g:\mathbb N\to\mathbb N. המחלקה TISP(f,g)\mathrm{TISP}(f,g) היא מחלקת השפות A⊆Σ∗A\subseteq\Sigma^* שעבורן קיימת מכונת טיורינג MM עם אלפבית קלט Σ\Sigma וקיימים קבועים c,d>0c,d>0 כך ש-MM מכריעה את AA, וגם לכל x∈Σ∗x\in\Sigma^* מתקיים

timeM(x)≤c⋅f(∣x∣)andspaceM(x)≤d⋅g(∣x∣).\mathrm{time}_M(x)\le c\cdot f(|x|)\qquad\text{and}\qquad \mathrm{space}_M(x)\le d\cdot g(|x|).

אינטואיציה. השם הוא ראשי תיבות של TIme–SPace: זו מחלקה שדורשת משאב אחד בו-זמנית בשני החסמים — לא "יש מכונה מהירה ויש מכונה חסכונית", אלא "יש מכונה אחת שהיא גם מהירה וגם חסכונית". הסדר של הכמתים הוא הרגיל: קודם המכונה והקבועים, ואחר כך כל הקלטים.

מופע. PAL∈TISP(n2,n)\mathrm{PAL}\in\mathrm{TISP}(n^2,n): האלגוריתם הנאיבי לפלינדרומים רץ בזמן O(n2)O(n^2) ואינו כותב מחוץ לאזור הקלט.

אי-מופע שמחדד את הגבול. המכונה שעוברת על כל העדים בהוכחת NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} (תרגיל 3(ב) להלן) מעידה על שייכות ל-DSpace(nk)\mathrm{DSpace}(n^k), אבל לא על שייכות ל-TISP(nk,nk)\mathrm{TISP}(n^k,n^k): זמן הריצה שלה אקספוננציאלי. שני החסמים חייבים להיתפס על ידי אותה מכונה.

הגדרה 2: ספיקוּת מסוג NAE ובעיית 4NAE\mathrm{4NAE}

השמה VV מספקת נוסחה באופן NAE (Not-All-Equal) אם בכל הסגר יש לפחות ליטרל אחד שערכו True וגם לפחות ליטרל אחד שערכו False — כלומר, ערכי הליטרלים בהסגר אינם כולם שווים. 4NAE\mathrm{4NAE} היא שפת נוסחאות ה-4CNF שקיימת עבורן השמה המספקת אותן באופן NAE.

אינטואיציה. ספיקוּת רגילה דורשת "לפחות אחד אמת"; NAE דורשת בנוסף "לפחות אחד שקר". זו דרישה סימטרית בין אמת לשקר, ומכאן נובעת התכונה המרכזית שמשמשת בתרגיל 4 (ראו משפט 5).

מופע. (x1∨x2)(x_1\vee x_2) עם V(x1)=True,V(x2)=FalseV(x_1)=\text{True},V(x_2)=\text{False} — מסופקת באופן NAE.

אי-מופע. ההשמה V(x1)=V(x2)=TrueV(x_1)=V(x_2)=\text{True} מספקת את (x1∨x2)(x_1\vee x_2) במובן הרגיל אך לא באופן NAE.

הגדרה 3: IS\mathrm{IS} ו-MAX-IS\mathrm{MAX}\text{-}\mathrm{IS}

IS={⟨G,k⟩∣there is an independent set of size k in G},\mathrm{IS}=\{\langle G,k\rangle \mid \text{there is an independent set of size } k \text{ in } G\}, MAX-IS={⟨G,k⟩∣the maximum size of an independent set in G equals k}.\mathrm{MAX}\text{-}\mathrm{IS}=\{\langle G,k\rangle \mid \text{the maximum size of an independent set in } G \text{ equals } k\}.

אינטואיציה, וזו הנקודה שכל תרגילים 5–6 יושבים עליה. IS\mathrm{IS} היא טענת קיום בלבד. MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} היא טענת וגם: קיימת קבוצה בגודל kk, וגם כל קבוצה בלתי תלויה היא בגודל לכל היותר kk. החלק הראשון ב-NP\mathrm{NP}, החלק השני ב-coNP\mathrm{coNP} — ולכן שתי השפות מתנהגות אחרת לגמרי (ראו שיעור 22).

מופע. GG = שני קודקודים ללא קשת, k=2k=2: ⟨G,2⟩∈MAX-IS\langle G,2\rangle\in\mathrm{MAX}\text{-}\mathrm{IS} וגם ⟨G,2⟩∈IS\langle G,2\rangle\in\mathrm{IS}.

אי-מופע שמפריד בין השתיים. אותו GG עם k=1k=1: ⟨G,1⟩∈IS\langle G,1\rangle\in\mathrm{IS} (קודקוד בודד הוא קבוצה בלתי תלויה בגודל 1), אבל ⟨G,1⟩∉MAX-IS\langle G,1\rangle\notin\mathrm{MAX}\text{-}\mathrm{IS} (המקסימום הוא 2). זהו בדיוק הזוג שמפריך את שני האלגוריתמים בתרגילים 5–6.


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

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

משפט 1: מונוטוניות ביחס לסדר גודל

תהיינה f,g:N→Nf,g:\mathbb N\to\mathbb N. אם f=O(g)f=O(g) אז DTime(f)⊆DTime(g)\mathrm{DTime}(f)\subseteq\mathrm{DTime}(g), ובאותו אופן DSpace(f)⊆DSpace(g)\mathrm{DSpace}(f)\subseteq\mathrm{DSpace}(g).

ההוכחה — שיעור 2, משפט 4. בשורה אחת: אם MM ו-cc מעידים על A∈DTime(f)A\in\mathrm{DTime}(f) ו-f≤c0⋅gf\le c_0\cdot g, אז אותה מכונה עם הקבוע c⋅c0c\cdot c_0 מעידה על A∈DTime(g)A\in\mathrm{DTime}(g). אין בנייה, רק החלפת קבוע.

למה זה כל כך חשוב כאן. כל אחת מההכלות (להבדיל מההכלות-ממש) בתרגיל 1 היא בדיוק שימוש אחד במשפט הזה, ולכן כל העבודה בתרגיל 1 היא חשבון סדרי גודל, לא בניית מכונות.

משפט 2: משפט ההיררכיה בזמן

תהיינה f,g:N→Nf,g:\mathbb N\to\mathbb N. נניח כי (1) g=o(f)g=o(f); (2) ff ישימה בזמן; (3) ff סופר-לינארית. אז DTime(g)⊊DTime ⁣(f2).\mathrm{DTime}(g)\subsetneq\mathrm{DTime}\!\left(f^{2}\right).

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

איך משתמשים בו נכון — וזו הטעות הנפוצה. המשפט אינו אומר "יש שפה קשה"; הוא אומר שקיימת שפה ב-DTime(f2)\mathrm{DTime}(f^2) שאינה ב-DTime(g)\mathrm{DTime}(g). כדי להוכיח C1⊊C2\mathcal C_1\subsetneq\mathcal C_2 בין שתי מחלקות גסות צריך תמיד את אותו ריקוד בן שלושה צעדים:

  1. לחסום את המחלקה הקטנה בתוך מחלקה עדינה אחת: C1⊆DTime(g)\mathcal C_1\subseteq\mathrm{DTime}(g).
  2. לבחור ff ישימה בזמן וסופר-לינארית כך ש-g=o(f)g=o(f) וגם DTime(f2)⊆C2\mathrm{DTime}(f^2)\subseteq\mathcal C_2.
  3. להסיק C1⊆DTime(g)⊊DTime(f2)⊆C2\mathcal C_1\subseteq\mathrm{DTime}(g)\subsetneq\mathrm{DTime}(f^2)\subseteq\mathcal C_2.

צעד 1 הוא היחיד שדורש מחשבה, והוא אפשרי רק מפני שהאיחוד הוא של פונקציות שכולן נבלעות בפונקציה אחת גדולה יותר.

הערה: הסיכום מציין עבור 2n6/22^{n^6/2} רק שהיא "סופר-לינארית". תנאי הישימוּת בזמן נדרש גם הוא, והוא אכן מתקיים לכל הפונקציות מהצורה 2p(n)2^{p(n)} עבור פולינום pp בעל מקדמים טבעיים; השלמתי אותו בגוף הפתרון.

משפט 3: מקום חסום בזמן

לכל מכונה MM ולכל קלט xx שעליו MM עוצרת:  spaceM(x)≤timeM(x)\ \mathrm{space}_M(x)\le\mathrm{time}_M(x).

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

זהו כל תרגיל 2 סעיף (א) — הכיוון הלא-טריוויאלי שם הוא ציטוט אחד של המשפט הזה.

משפט 4: NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} (בהגדרת המוודא)

כל שפה ב-NP\mathrm{NP} ניתנת להכרעה במקום פולינומי.

ההוכחה במלואה — שיעור 8, משפט 1. המכונה MAM_A מקבלת xx, מחשבת את q(∣x∣)q(|x|), ועוברת בסדר לקסיקוגרפי על כל w∈{0,1}q(∣x∣)w\in\{0,1\}^{q(|x|)}; לכל ww היא מריצה את המוודא MM על (x,w)(x,w) ומקבלת אם MM קיבלה; בסוף הלולאה היא דוחה. הנקודה שהכול תלוי בה: לפני כל איטרציה מוחקים את סרט העבודה, ולכן המקום אינו מצטבר, אף שמספר האיטרציות אקספוננציאלי.

מה שהסיכום מוסיף כאן ואינו בשיעור 8 (ההערה הכחולה בעמוד 5): אותה מכונה בדיוק, אם מסתכלים עליה במשקפי זמן ולא במשקפי מקום, רצה בזמן 2q(∣x∣)⋅poly(∣x∣)2^{q(|x|)}\cdot\mathrm{poly}(|x|) — אקספוננציאלי — ולכן היא מוכיחה בו-זמנית גם NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP}. זה הופך אותה לפתרון חלופי מלא לסעיף (א) של תרגיל 3, בלי לגעת בעץ הריצות.

משפט 5: עץ הריצות של מכונה אי-דטרמיניסטית

זהו החישוב שסעיף (א) של תרגיל 3 בנוי עליו, ולכן הוא כתוב כאן במלואו.

תהא MM מכונת טיורינג אי-דטרמיניסטית ויהי xx קלט. נתבונן בעץ כל הריצות האפשריות של MM על xx: הקודקודים הם הקונפיגורציות המופיעות בריצות, והקשתות הן צעדי δ\delta. אז:

  1. מספר הבנים של כל צומת חסום ב-α=∣Q∣⋅∣Γ∣⋅2\alpha=|Q|\cdot|\Gamma|\cdot 2;
  2. אם timeM(x)≤T\mathrm{time}_M(x)\le T אז עומק העץ חסום ב-TT;
  3. מספר הצמתים בעץ חסום ב-∑i=0Tαi=O ⁣(αT+1)=O ⁣(2(lg⁡α)(T+1))\displaystyle\sum_{i=0}^{T}\alpha^{i}=O\!\left(\alpha^{T+1}\right)=O\!\left(2^{(\lg\alpha)(T+1)}\right).

הוכחה. (1) צעד יחיד של MM מקונפיגורציה נתונה נקבע כולו על ידי שלישייה: המצב שאליו עוברים (∣Q∣|Q| אפשרויות), האות הנכתבת (∣Γ∣|\Gamma| אפשרויות), וכיוון תזוזת הראש (שתי אפשרויות). לכן δ\delta יכולה להציע לכל היותר ∣Q∣⋅∣Γ∣⋅2|Q|\cdot|\Gamma|\cdot2 המשכים שונים, וזה מספר הבנים.

(2) מסלול מהשורש לעלה הוא בדיוק ריצה אפשרית אחת, ואורכו הוא מספר הצעדים באותה ריצה. לפי הגדרת timeM(x)\mathrm{time}_M(x) כמקסימום על פני כל הריצות האפשריות, אורך כל מסלול חסום ב-TT.

(3) עץ שבו לכל צומת לכל היותר α\alpha בנים ושעומקו לכל היותר TT מכיל לכל היותר αi\alpha^i צמתים ברמה ii, ולכן לכל היותר 1+α+α2+⋯+αT1+\alpha+\alpha^2+\dots+\alpha^{T} צמתים בסך הכול. זהו סכום סדרה הנדסית, וכשהמנה קבועה וגדולה מ-1 הוא מסדר גודל האיבר האחרון: O(αT+1)O(\alpha^{T+1}). הכתיבה מחדש בבסיס 2 היא זהות: αT+1=2(lg⁡α)(T+1)\alpha^{T+1}=2^{(\lg\alpha)(T+1)}. ■\blacksquare

הערה: בסיכום החזקה נכתבה פעמיים ∣x∣2|x|^2 ופעם אחת ∣x∣c|x|^c באותו חישוב עצמו. מכיוון שהחסם על זמן הריצה שממנו הכול נגזר הוא d⋅∣x∣cd\cdot|x|^c, המעריך הנכון בכל שלושת המקומות הוא cc; כך כתוב כאן.

משפט 6: התכונה הסימטרית של ספיקוּת NAE

תהא φ\varphi נוסחת CNF ותהא VV השמה למשתני φ\varphi המספקת אותה באופן NAE. תהא V^\widehat V ההשמה המשלימה, כלומר V^(y)=¬V(y)\widehat V(y)=\neg V(y) לכל משתנה yy. אז גם V^\widehat V מספקת את φ\varphi באופן NAE.

הוכחה. יהי CC הסגר של φ\varphi. לפי ההנחה קיימים ב-CC ליטרל ℓ1\ell_1 שערכו תחת VV הוא True וליטרל ℓ2\ell_2 שערכו תחת VV הוא False. היפוך ערכו של כל משתנה הופך את ערכו של כל ליטרל, ולכן תחת V^\widehat V ערכו של ℓ1\ell_1 הוא False וערכו של ℓ2\ell_2 הוא True. שוב יש ב-CC ליטרל אמת וליטרל שקר, כלומר CC מסופק באופן NAE. הטענה נכונה לכל הסגר, ולכן V^\widehat V מספקת את φ\varphi באופן NAE. ■\blacksquare

למה זה בדיוק המנוע של תרגיל 4. התכונה הזו היא שמאפשרת "להניח בלי הגבלת הכלליות" שהמשתנה החדש קיבל False — וזה כל מה שהאלגוריתם שבשאלה ניסה להשיג בכוח, על ידי צירוף השמה לפלט.

משפט 7: מתי MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS}

MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS} אם ורק אם NP=coNP\mathrm{NP}=\mathrm{coNP}.

ההוכחה — שיעור 22, שבו הוכח ש-MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} היא גם NP-קשה וגם coNP-קשה, וש-MAX-IS∈NP∪coNP\mathrm{MAX}\text{-}\mathrm{IS}\in\mathrm{NP}\cup\mathrm{coNP} שקולה ל-NP=coNP\mathrm{NP}=\mathrm{coNP}. שתי הרוחות של הטיעון, בקצרה, כדי שהמסקנה בתרגיל 6 לא תיפול מהשמיים:

  • (⇒\Rightarrow) נניח MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS}. מכיוון ש-IS∈NP\mathrm{IS}\in\mathrm{NP} ו-NP\mathrm{NP} סגורה כלפי מטה תחת ≤p\le_p (שיעור 7), נובע MAX-IS∈NP\mathrm{MAX}\text{-}\mathrm{IS}\in\mathrm{NP}. אבל MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} היא coNP-קשה, ושפה coNP-קשה שנמצאת ב-NP\mathrm{NP} גוררת coNP⊆NP\mathrm{coNP}\subseteq\mathrm{NP} ומכאן NP=coNP\mathrm{NP}=\mathrm{coNP}.
  • (⇐\Leftarrow) נניח NP=coNP\mathrm{NP}=\mathrm{coNP}. השייכות ⟨G,k⟩∈MAX-IS\langle G,k\rangle\in\mathrm{MAX}\text{-}\mathrm{IS} היא חיתוך של שתי טענות: "קיימת קבוצה בלתי תלויה בגודל kk" (ב-NP\mathrm{NP}) ו"כל קבוצה בלתי תלויה היא בגודל לכל היותר kk" (ב-coNP\mathrm{coNP}). תחת ההנחה שתיהן ב-NP\mathrm{NP}, ו-NP\mathrm{NP} סגורה לחיתוך, ולכן MAX-IS∈NP\mathrm{MAX}\text{-}\mathrm{IS}\in\mathrm{NP}. מכיוון ש-IS\mathrm{IS} היא NP-שלמה, קיימת רדוקציה MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS}.

דוגמאות ותרגילים מהשיעור

זהו לב הקובץ. שלושת התרגילים הראשונים הם ממטלה 1 (שאלות 4, 3, 8 בהתאמה — הסיכום פותר אותן בסדר הזה), וארבעת האחרונים הם סעיפים משאלה 1 של מבחן 2.

תרגיל 1 (מטלה 1, שאלה 4): סידור שבע מחלקות סיבוכיות

הנוסח. נתונות שבע מחלקות סיבוכיות:

P,EXP,DTime ⁣(2(n6)),⋃c≥1DTime ⁣(n(2c)),⋃c≥1DTime ⁣(ccn),⋃c≥1DTime ⁣(cnc),⋃c≥1DTime ⁣(nnc).\mathrm{P},\quad \mathrm{EXP},\quad \mathrm{DTime}\!\left(2^{(n^6)}\right),\quad \bigcup_{c\ge1}\mathrm{DTime}\!\left(n^{(2^c)}\right),\quad \bigcup_{c\ge1}\mathrm{DTime}\!\left(c^{cn}\right),\quad \bigcup_{c\ge1}\mathrm{DTime}\!\left(c^{n^c}\right),\quad \bigcup_{c\ge1}\mathrm{DTime}\!\left(n^{n^c}\right).

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

התשובה.

⋃c≥1DTime ⁣(n2c)  =  P  ⊊  ⋃c≥1DTime ⁣(ccn)  ⊊  DTime ⁣(2n6)  ⊊  EXP  =  ⋃c≥1DTime ⁣(cnc)  =  ⋃c≥1DTime ⁣(nnc).\bigcup_{c\ge1}\mathrm{DTime}\!\left(n^{2^c}\right)\;=\;\mathrm{P}\;\subsetneq\;\bigcup_{c\ge1}\mathrm{DTime}\!\left(c^{cn}\right)\;\subsetneq\;\mathrm{DTime}\!\left(2^{n^6}\right)\;\subsetneq\;\mathrm{EXP}\;=\;\bigcup_{c\ge1}\mathrm{DTime}\!\left(c^{n^c}\right)\;=\;\bigcup_{c\ge1}\mathrm{DTime}\!\left(n^{n^c}\right).

כלומר: שלוש מהמחלקות מתמוטטות למחלקות מוכרות, ושלוש ההכלות שנשארות הן ממש.

שלב א: P=⋃c≥1DTime(n2c)\mathrm{P}=\bigcup_{c\ge1}\mathrm{DTime}(n^{2^c})

כיוון ראשון. תהא A∈PA\in\mathrm{P}. לפי הגדרת P\mathrm{P} קיים c≥1c\ge1 כך ש-A∈DTime(nc)A\in\mathrm{DTime}(n^c). לכל c≥1c\ge1 מתקיים c≤2cc\le 2^c, ולכן לכל n≥1n\ge1 מתקיים nc≤n2cn^c\le n^{2^c}, כלומר nc=O(n2c)n^c=O(n^{2^c}). לפי משפט 1 נובע A∈DTime(n2c)A\in\mathrm{DTime}(n^{2^c}), ובפרט A∈⋃c≥1DTime(n2c)A\in\bigcup_{c\ge1}\mathrm{DTime}(n^{2^c}).

כיוון שני. תהא A∈⋃c≥1DTime(n2c)A\in\bigcup_{c\ge1}\mathrm{DTime}(n^{2^c}). לפי הגדרת האיחוד קיים c≥1c\ge1 כך ש-A∈DTime(n2c)A\in\mathrm{DTime}(n^{2^c}). נסמן d=2cd=2^c; זהו מספר טבעי המקיים d≥1d\ge1, ולכן A∈DTime(nd)⊆⋃d≥1DTime(nd)=PA\in\mathrm{DTime}(n^{d})\subseteq\bigcup_{d\ge1}\mathrm{DTime}(n^{d})=\mathrm{P}. ■\blacksquare

הערה: בסיכום נכתב בשורה האחרונה ⋃d≥1DTime(2d)=P\bigcup_{d\ge1}\mathrm{DTime}(2^{d})=\mathrm{P}. זו פליטת קולמוס: המחלקה DTime(2d)\mathrm{DTime}(2^d) עבור dd קבוע היא זמן קבוע, וההגדרה של P\mathrm{P} היא ⋃d≥1DTime(nd)\bigcup_{d\ge1}\mathrm{DTime}(n^{d}). תוקן כאן.

מה הרעיון מאחורי התוצאה. 2c2^c נראה מפחיד, אבל הוא חזקה קבועה — כשמאחדים על כל cc, "החזקה הקבועה הגדולה" מתגלה כסתם עוד חזקה קבועה. זה בדיוק מה שהמרצה חזר עליו בשיעור העוקב: "לא כל מה שיש לו צורה מעריכית הוא מעריכי; מה שמעניין הוא אם זה מעריכי כפונקציה של אורך הקלט" ([00:59:55], הקלטת שיעור 24).

שלב ב: EXP=⋃c≥1DTime(nnc)\mathrm{EXP}=\bigcup_{c\ge1}\mathrm{DTime}(n^{n^c})

כיוון ראשון. תהא A∈EXPA\in\mathrm{EXP}, כלומר קיים c≥1c\ge1 עם A∈DTime(2nc)A\in\mathrm{DTime}(2^{n^c}). לכל n≥2n\ge2 מתקיים 2≤n2\le n ולכן 2nc≤nnc2^{n^c}\le n^{n^c}, כלומר 2nc=O(nnc)2^{n^c}=O(n^{n^c}). לפי משפט 1, A∈DTime(nnc)A\in\mathrm{DTime}(n^{n^c}), ובפרט AA באיחוד.

כיוון שני. תהא A∈⋃c≥1DTime(nnc)A\in\bigcup_{c\ge1}\mathrm{DTime}(n^{n^c}), ויהי c≥1c\ge1 עם A∈DTime(nnc)A\in\mathrm{DTime}(n^{n^c}). נכתוב

nnc=2 nc⋅lg⁡n.n^{n^c}=2^{\,n^c\cdot\lg n}.

מכיוון ש-lg⁡n≤n\lg n\le n לכל n≥1n\ge1, מתקיים nc⋅lg⁡n≤nc+1n^c\cdot\lg n\le n^{c+1}, ולכן nnc≤2 nc+1n^{n^c}\le 2^{\,n^{c+1}}, כלומר nnc=O ⁣(2nc+1)n^{n^c}=O\!\left(2^{n^{c+1}}\right). לפי משפט 1, A∈DTime ⁣(2nc+1)⊆EXPA\in\mathrm{DTime}\!\left(2^{n^{c+1}}\right)\subseteq\mathrm{EXP}. ■\blacksquare

שלב ג: EXP=⋃c≥1DTime(cnc)\mathrm{EXP}=\bigcup_{c\ge1}\mathrm{DTime}(c^{n^c})

הסיכום אינו מטפל במחלקה הזו; היא נסגרת באותה טכניקה בדיוק ולכן היא כתובה כאן במלואה.

כיוון ראשון (⊇\supseteq). יהי c≥1c\ge1. אז cnc=2 (lg⁡c)⋅ncc^{n^c}=2^{\,(\lg c)\cdot n^c}. הגודל lg⁡c\lg c הוא קבוע שאינו תלוי ב-nn, ולכן לכל nn גדול מספיק (lg⁡c)⋅nc≤nc+1(\lg c)\cdot n^c\le n^{c+1}, כלומר cnc=O ⁣(2nc+1)c^{n^c}=O\!\left(2^{n^{c+1}}\right). לפי משפט 1, DTime(cnc)⊆DTime ⁣(2nc+1)⊆EXP\mathrm{DTime}(c^{n^c})\subseteq\mathrm{DTime}\!\left(2^{n^{c+1}}\right)\subseteq\mathrm{EXP}, ומכאן שגם האיחוד מוכל ב-EXP\mathrm{EXP}.

כיוון שני (⊆\subseteq). תהא A∈EXPA\in\mathrm{EXP} עם A∈DTime(2nc)A\in\mathrm{DTime}(2^{n^c}). נבחר c′=max⁡{c,2}c'=\max\{c,2\}. אז 2nc≤2nc′≤(c′) nc′2^{n^c}\le 2^{n^{c'}}\le (c')^{\,n^{c'}} (האי-שוויון האחרון כי c′≥2c'\ge2), ולכן A∈DTime ⁣((c′)nc′)A\in\mathrm{DTime}\!\left((c')^{n^{c'}}\right), שהוא אחד מאיברי האיחוד. ■\blacksquare

שלב ד: ⋃c≥1DTime(ccn)\bigcup_{c\ge1}\mathrm{DTime}(c^{cn}) — המחלקה שנופלת בין P\mathrm{P} ל-DTime(2n6)\mathrm{DTime}(2^{n^6})

גם המחלקה הזו אינה מטופלת בסיכום. נכתוב ccn=2 clg⁡c⋅nc^{cn}=2^{\,c\lg c\cdot n}, ולכן

⋃c≥1DTime ⁣(ccn)=⋃k≥1DTime ⁣(2kn),\bigcup_{c\ge1}\mathrm{DTime}\!\left(c^{cn}\right)=\bigcup_{k\ge1}\mathrm{DTime}\!\left(2^{kn}\right),

כלומר זו מחלקת הזמן האקספוננציאלי הלינארי: המעריך גדל לינארית ב-nn, ורק המקדם משתנה. נסמן אותה E\mathcal E.

  • P⊆E\mathrm{P}\subseteq\mathcal E: לכל dd קבוע מתקיים nd=O(2n)n^d=O(2^n), ולכן DTime(nd)⊆DTime(2n)\mathrm{DTime}(n^d)\subseteq\mathrm{DTime}(2^n) לכל dd, ומכאן P⊆DTime(2n)⊆E\mathrm{P}\subseteq\mathrm{DTime}(2^{n})\subseteq\mathcal E.
  • E⊆DTime(2n6)\mathcal E\subseteq\mathrm{DTime}(2^{n^6}): לכל kk קבוע ולכל nn גדול מספיק מתקיים kn≤n6kn\le n^6, ולכן 2kn=O ⁣(2n6)2^{kn}=O\!\left(2^{n^6}\right), ולפי משפט 1 גם DTime(2kn)⊆DTime(2n6)\mathrm{DTime}(2^{kn})\subseteq\mathrm{DTime}(2^{n^6}).

שלב ה: ההכלה DTime(2n6)⊆EXP\mathrm{DTime}(2^{n^6})\subseteq\mathrm{EXP}

מיידית מההגדרה: EXP=⋃c≥1DTime(2nc)\mathrm{EXP}=\bigcup_{c\ge1}\mathrm{DTime}(2^{n^c}) והמחלקה שלנו היא האיבר c=6c=6.

שלב ו: שלוש ההכלות הן ממש

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

(1) P⊊E\mathrm{P}\subsetneq\mathcal E. ראינו ש-P⊆DTime(2n)\mathrm{P}\subseteq\mathrm{DTime}(2^{n}). נבחר f(n)=22nf(n)=2^{2n}: היא ישימה בזמן, סופר-לינארית, ומתקיים 2n=o(22n)2^{n}=o(2^{2n}) שכן 2n/22n=2−n→02^n/2^{2n}=2^{-n}\to0. לפי משפט 2,

DTime(2n)⊊DTime ⁣((22n)2)=DTime ⁣(24n)⊆E,\mathrm{DTime}(2^{n})\subsetneq\mathrm{DTime}\!\left(\left(2^{2n}\right)^2\right)=\mathrm{DTime}\!\left(2^{4n}\right)\subseteq\mathcal E,

ולכן קיימת שפה ב-E\mathcal E שאינה ב-DTime(2n)\mathrm{DTime}(2^n) ובפרט אינה ב-P\mathrm{P}.

(2) E⊊DTime(2n6)\mathcal E\subsetneq\mathrm{DTime}(2^{n^6}). ראשית, E⊆DTime(2n2)\mathcal E\subseteq\mathrm{DTime}(2^{n^2}): לכל kk קבוע ולכל n≥kn\ge k מתקיים kn≤n2kn\le n^2. כעת נבחר f(n)=2n3f(n)=2^{n^3} — ישימה בזמן וסופר-לינארית — ומתקיים 2n2=o ⁣(2n3)2^{n^2}=o\!\left(2^{n^3}\right). לפי משפט 2,

DTime ⁣(2n2)⊊DTime ⁣(22n3)⊆DTime ⁣(2n6),\mathrm{DTime}\!\left(2^{n^2}\right)\subsetneq\mathrm{DTime}\!\left(2^{2n^3}\right)\subseteq\mathrm{DTime}\!\left(2^{n^6}\right),

כאשר ההכלה האחרונה היא משפט 1 עם 2n3≤n62n^3\le n^6 לכל n≥2n\ge2.

(3) DTime(2n6)⊊EXP\mathrm{DTime}(2^{n^6})\subsetneq\mathrm{EXP}. נבחר f(n)=2n7f(n)=2^{n^7}; אז 2n6=o ⁣(2n7)2^{n^6}=o\!\left(2^{n^7}\right), ולפי משפט 2

DTime ⁣(2n6)⊊DTime ⁣(22n7)⊆DTime ⁣(2n8)⊆EXP.\mathrm{DTime}\!\left(2^{n^6}\right)\subsetneq\mathrm{DTime}\!\left(2^{2n^7}\right)\subseteq\mathrm{DTime}\!\left(2^{n^8}\right)\subseteq\mathrm{EXP}.

ההוכחה שהסיכום כותב במפורש: P⊊DTime(2n6)\mathrm{P}\subsetneq\mathrm{DTime}(2^{n^6})

הסיכום אינו עובר דרך E\mathcal E אלא מוכיח ישירות את ההכלה-ממש הזו, וכדאי לראות גם אותה כי היא מדגימה את הבחירה הנוחה של ff:

תהא A∈PA\in\mathrm{P}, כלומר A∈DTime(nc)A\in\mathrm{DTime}(n^c) עבור cc כלשהו. מתקיים nc=O ⁣(2n5)n^c=O\!\left(2^{n^5}\right), ולכן P⊆DTime ⁣(2n5)\mathrm{P}\subseteq\mathrm{DTime}\!\left(2^{n^5}\right). כעת 2n5=o ⁣(2n6/2)2^{n^5}=o\!\left(2^{n^6/2}\right), והפונקציה 2n6/22^{n^6/2} סופר-לינארית וישימה בזמן, ולכן לפי משפט ההיררכיה בזמן

DTime ⁣(2n5)⊊DTime ⁣((2n6/2)2)=DTime ⁣(2n6),\mathrm{DTime}\!\left(2^{n^5}\right)\subsetneq\mathrm{DTime}\!\left(\left(2^{n^6/2}\right)^{2}\right)=\mathrm{DTime}\!\left(2^{n^6}\right),

ומכאן P⊊DTime(2n6)\mathrm{P}\subsetneq\mathrm{DTime}(2^{n^6}). ■\blacksquare

ובאותו אופן, השרשרת שהסיכום מסמן בכחול כתקציר של כל התרגיל:

P⊆DTime ⁣(2n)⊊DTime ⁣(2n2)⊆EXP.\mathrm{P}\subseteq\mathrm{DTime}\!\left(2^{n}\right)\subsetneq\mathrm{DTime}\!\left(2^{n^2}\right)\subseteq\mathrm{EXP}.

תרגיל 2 (מטלה 1, שאלה 3): המחלקה TISP(f,g)\mathrm{TISP}(f,g)

הנוסח. עבור שתי פונקציות f,g:N→Nf,g:\mathbb N\to\mathbb N נגדיר את מחלקת הסיבוכיות TISP(f,g)\mathrm{TISP}(f,g) כמחלקת השפות A⊆Σ∗A\subseteq\Sigma^* עבורן קיימת מכונת טיורינג MM עם אלפבית קלט Σ\Sigma כך שקיימים קבועים c,d>0c,d>0 כך ש-MM מכריעה את AA וגם לכל x∈Σ∗x\in\Sigma^* מתקיים timeM(x)≤c⋅f(∣x∣)\mathrm{time}_M(x)\le c\cdot f(|x|) וגם spaceM(x)≤d⋅g(∣x∣)\mathrm{space}_M(x)\le d\cdot g(|x|).

(א) הוכיחו או הפריכו: לכל פונקציה ff מתקיים TISP(f,f)=DTime(f)\mathrm{TISP}(f,f)=\mathrm{DTime}(f).

התשובה: הטענה נכונה. תהא f:N→Nf:\mathbb N\to\mathbb N.

כיוון ראשון: TISP(f,f)⊆DTime(f)\mathrm{TISP}(f,f)\subseteq\mathrm{DTime}(f). תהא A∈TISP(f,f)A\in\mathrm{TISP}(f,f). לפי ההגדרה קיימת מכונה MM וקיימים קבועים c,d>0c,d>0 כך ש-MM מכריעה את AA ולכל x∈Σ∗x\in\Sigma^* מתקיים timeM(x)≤c⋅f(∣x∣)\mathrm{time}_M(x)\le c\cdot f(|x|) וגם spaceM(x)≤d⋅f(∣x∣)\mathrm{space}_M(x)\le d\cdot f(|x|). נתבונן ב-MM ונתבונן ב-cc. MM מכריעה את AA; יהי xx; אז timeM(x)≤c⋅f(∣x∣)\mathrm{time}_M(x)\le c\cdot f(|x|). אלה בדיוק שני התנאים בהגדרת DTime(f)\mathrm{DTime}(f), ולכן A∈DTime(f)A\in\mathrm{DTime}(f).

שימו לב מה קרה כאן: פשוט זרקנו את חסם המקום. הכיוון הזה חינם.

כיוון שני: DTime(f)⊆TISP(f,f)\mathrm{DTime}(f)\subseteq\mathrm{TISP}(f,f). תהא A∈DTime(f)A\in\mathrm{DTime}(f). לפי ההגדרה קיימת מכונה MM וקיים קבוע c>0c>0 כך ש-MM מכריעה את AA ולכל xx מתקיים timeM(x)≤c⋅f(∣x∣)\mathrm{time}_M(x)\le c\cdot f(|x|). נתבונן ב-MM, נתבונן ב-cc, ונבחר d=cd=c. יהי xx. אז מצד אחד timeM(x)≤c⋅f(∣x∣)\mathrm{time}_M(x)\le c\cdot f(|x|), ומצד שני, לפי משפט 3 (הקשר בין מקום לזמן),

spaceM(x)≤timeM(x)≤c⋅f(∣x∣)=d⋅f(∣x∣).\mathrm{space}_M(x)\le\mathrm{time}_M(x)\le c\cdot f(|x|)=d\cdot f(|x|).

לכן MM עם הקבועים c,dc,d מעידה על A∈TISP(f,f)A\in\mathrm{TISP}(f,f). ■\blacksquare

מה הרעיון. החסם המשותף TISP(f,f)\mathrm{TISP}(f,f) אינו מוסיף כלום מעל חסם הזמן, מפני שחסם הזמן כבר כולל בתוכו חסם מקום זהה. המחלקה מתחילה להיות מעניינת רק כאשר gg קטנה ממש מ-ff — למשל TISP(2n,n2)\mathrm{TISP}(2^{n},n^2), שבה יש מתח אמיתי בין שני המשאבים.

(ג) האם הטענה הבאה נכונה, אינה נכונה או שקולה לשאלה פתוחה? טענה: ⋃c≥1TISP(nc,nc)=PSPACE\bigcup_{c\ge1}\mathrm{TISP}(n^c,n^c)=\mathrm{PSPACE}.

התשובה: הטענה שקולה לשאלה פתוחה — לשאלה האם P=PSPACE\mathrm{P}=\mathrm{PSPACE}.

הפתרון. לפי סעיף (א), לכל c≥1c\ge1 מתקיים TISP(nc,nc)=DTime(nc)\mathrm{TISP}(n^c,n^c)=\mathrm{DTime}(n^c). שוויון בין איברי שני איחודים גורר שוויון בין האיחודים, ולכן

⋃c≥1TISP(nc,nc)=⋃c≥1DTime(nc)=P.\bigcup_{c\ge1}\mathrm{TISP}(n^c,n^c)=\bigcup_{c\ge1}\mathrm{DTime}(n^c)=\mathrm{P}.

מכאן שהטענה ⋃c≥1TISP(nc,nc)=PSPACE\bigcup_{c\ge1}\mathrm{TISP}(n^c,n^c)=\mathrm{PSPACE} שקולה בדיוק לטענה P=PSPACE\mathrm{P}=\mathrm{PSPACE}, שהיא שאלה פתוחה. ■\blacksquare

חידוד שכדאי לכתוב במבחן. ההכלה P⊆PSPACE\mathrm{P}\subseteq\mathrm{PSPACE} ידועה (שיעור 2, משפט 5). לכן החלק הפתוח בטענה הוא רק ההכלה ההפוכה, PSPACE⊆⋃cTISP(nc,nc)\mathrm{PSPACE}\subseteq\bigcup_c\mathrm{TISP}(n^c,n^c). הפירוק הזה — "איזה חלק מהשוויון ידוע ואיזה פתוח" — הוא בדיוק מה שהמרצה דרש בשיעור העוקב כשעסק בשאלה מאותו סוג ([01:22:18]–[01:23:54], הקלטת שיעור 24): "שוויון הוא טענת 'וגם', והוא מחביא בפנים שאחת הטענות ידועה והשנייה היא שאלה פתוחה".

תרגיל 3 (מטלה 1, שאלה 8): שני חסמים עליונים על NP\mathrm{NP}

הנוסח. (א) הוכיחו כי NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP} בעזרת ההגדרה של NP\mathrm{NP} עם מכונת הכרעה אי-דטרמיניסטית. (ב) הוכיחו כי NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} בעזרת ההגדרה של NP\mathrm{NP} עם מכונת וידוא דטרמיניסטית.

הדגש בשאלה הוא על המילים "בעזרת ההגדרה": כל סעיף מחייב את ההגדרה שלו, גם אם הסעיף השני קל יותר.

(א) NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP} דרך עץ הריצות

דיון פותח. תהא A∈NPA\in\mathrm{NP}. אזי קיימת מכונה אי-דטרמיניסטית MM וקיימים קבועים c,d>0c,d>0 כך ש-MM מכריעה את AA באופן אי-דטרמיניסטי ולכל xx מתקיים timeM(x)≤d⋅∣x∣c\mathrm{time}_M(x)\le d\cdot|x|^c.

מה יש לנו ביד. לפי משפט 5, עץ כל הריצות האפשריות של MM על xx הוא עץ שבו:

  • הקודקודים הם הקונפיגורציות המופיעות בריצות, והקשתות הן צעדי δ\delta;
  • מספר הבנים של כל צומת חסום ב-α=∣Q∣⋅∣Γ∣⋅2\alpha=|Q|\cdot|\Gamma|\cdot2 — קבוע התלוי ב-MM בלבד ולא ב-xx;
  • עומק העץ חסום ב-d⋅∣x∣cd\cdot|x|^c;
  • מספר הצמתים חסום ב-1+α+α2+⋯+αd∣x∣c=O ⁣(α d∣x∣c+1)=O ⁣(2 (lg⁡α)⋅d⋅∣x∣c  +  lg⁡α).\displaystyle 1+\alpha+\alpha^2+\dots+\alpha^{d|x|^c}=O\!\left(\alpha^{\,d|x|^c+1}\right)=O\!\left(2^{\,(\lg\alpha)\cdot d\cdot|x|^c\;+\;\lg\alpha}\right).

הבנייה. נבנה מכונה דטרמיניסטית M^\widehat M באופן הבא. על קלט xx:

  1. M^\widehat M תעבור בסריקת DFS על כל הריצות האפשריות של MM על xx. 1.1 אם קיים מסלול מקבל, כלומר קיימת ריצה אפשרית שבסופה MM במצב מקבל — M^\widehat M מקבלת.
  2. אחרת, M^\widehat M דוחה.

איך מיישמים את ה-DFS. בכל רגע M^\widehat M מחזיקה על סרט העבודה את הקונפיגורציה הנוכחית ואת מחסנית המסלול מהשורש אליה: לכל רמה במסלול נשמרת השלישייה t∈Q×Γ×{L,R}t\in Q\times\Gamma\times\{L,R\} שנבחרה שם, כלומר איזה ענף כבר נוסה. אורך המסלול חסום בעומק העץ, ולכן המחסנית מחזיקה לכל היותר d⋅∣x∣cd\cdot|x|^c רשומות, כל אחת בגודל O(∣⟨M⟩∣)O(|\langle M\rangle|).

נכונות. MM מכריעה את AA באופן אי-דטרמיניסטי, כלומר: x∈Ax\in A אם ורק אם קיימת ריצה אפשרית מקבלת של MM על xx; וכן, בכל ריצה אפשרית MM עוצרת, ולכן העץ סופי ו-M^\widehat M תמיד מסיימת את הסריקה. אם x∈Ax\in A, קיימת ריצה מקבלת; היא מסלול בעץ, וה-DFS סורק את כל המסלולים ולכן יגיע אליה, ו-M^\widehat M תקבל. אם x∉Ax\notin A, אין ריצה מקבלת; שום עלה בעץ אינו מקבל, שלב 1.1 לא יופעל לעולם, ו-M^\widehat M תדחה בשלב 2. לכן M^\widehat M מכריעה את AA.

ניתוח זמן ריצה. נפרק לשניים:

  • מחיר של צומת בודד. כדי לחשב את הבנים של קונפיגורציה, M^\widehat M צריכה לאתר את הרשומות הרלוונטיות בטבלת המעברים של MM ולכתוב את הקונפיגורציה החדשה. טבלת המעברים היא חלק מ-⟨M⟩\langle M\rangle, וסריקה שלה עולה לכל היותר סדר גודל של ∣⟨M⟩∣2|\langle M\rangle|^2. זהו קבוע — הוא תלוי ב-MM בלבד, לא ב-xx.
  • מספר הצמתים. חסום ב-O ⁣(2(lg⁡α)d∣x∣c+lg⁡α)O\!\left(2^{(\lg\alpha)d|x|^c+\lg\alpha}\right) כפי שחישבנו.

בסך הכול, עם d′=(lg⁡α)⋅dd'=(\lg\alpha)\cdot d ועם בליעת הקבועים ∣⟨M⟩∣2|\langle M\rangle|^2 ו-2lg⁡α2^{\lg\alpha},

timeM^(x)=O ⁣(2 d′⋅∣x∣c).\mathrm{time}_{\widehat M}(x)=O\!\left(2^{\,d'\cdot|x|^{c}}\right).

לבסוף, d′⋅∣x∣c≤∣x∣c+1d'\cdot|x|^c\le|x|^{c+1} לכל ∣x∣|x| גדול מספיק, ולכן timeM^(x)=O ⁣(2∣x∣c+1)\mathrm{time}_{\widehat M}(x)=O\!\left(2^{|x|^{c+1}}\right), כלומר A∈DTime ⁣(2nc+1)⊆EXPA\in\mathrm{DTime}\!\left(2^{n^{c+1}}\right)\subseteq\mathrm{EXP}. ■\blacksquare

איפה בדיוק "נשרף" הזמן, ולמה זה בלתי נמנע בגישה הזו. לא בעומק העץ — הוא פולינומי — אלא ברוחב: מספר הענפים מוכפל ב-α\alpha בכל רמה, ולכן העץ גדל כמו αh\alpha^{h}, כאשר hh הוא עומק העץ. כל אחד מהגורמים הוא תמים בפני עצמו; המכפלה שלהם היא האקספוננט.

(ב) NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} דרך מכונת הווידוא

הסיכום מסמן בחץ כחול שהסעיף הזה נפתר בשיעור, ומתמצת את הפתרון בשלוש שורות: בניית מכונה שעוברת על כל העדים האפשריים; המכונה הזו רצה בזמן אקספוננציאלי; ולכן אותה הוכחה בדיוק מראה גם NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP}.

הפתרון — ההוכחה המלאה נמצאת בשיעור 8, משפט 1, ולא נחזור עליה כאן. בקצרה: תהא A∈NPA\in\mathrm{NP} עם מוודא דטרמיניסטי MM שזמן ריצתו חסום בפולינום pp, ועם פולינום qq החוסם את אורך העד. נגדיר מכונה דטרמיניסטית MAM_A שעל קלט xx מחשבת את q(∣x∣)q(|x|) ועוברת בסדר לקסיקוגרפי על כל w∈{0,1}q(∣x∣)w\in\{0,1\}^{q(|x|)}, מריצה את MM על (x,w)(x,w), ומקבלת אם MM קיבלה; בסוף הלולאה היא דוחה. הנקודה הקריטית: מוחקים את סרט העבודה לפני כל איטרציה, ולכן כל האיטרציות משתמשות באותם תאים והמקום אינו מצטבר. בסך הכול spaceMA(x)=O ⁣(q(∣x∣)+p(∣x∣+q(∣x∣)))\mathrm{space}_{M_A}(x)=O\!\left(q(|x|)+p(|x|+q(|x|))\right), שהוא פולינום.

התוספת שהשיעור הזה עושה. נסתכל על אותה מכונה במשקפי זמן. מספר האיטרציות הוא 2q(∣x∣)2^{q(|x|)}, וכל איטרציה עולה p(∣x∣+q(∣x∣))p(|x|+q(|x|)), ולכן

timeMA(x)=O ⁣(2q(∣x∣)⋅p(∣x∣+q(∣x∣)))=O ⁣(2∣x∣k)\mathrm{time}_{M_A}(x)=O\!\left(2^{q(|x|)}\cdot p\big(|x|+q(|x|)\big)\right)=O\!\left(2^{|x|^{k}}\right)

עבור kk מתאים, שכן פולינום נבלע בקלות במעריך. לכן אותה בנייה מוכיחה גם A∈EXPA\in\mathrm{EXP} — וזהו פתרון חלופי מלא לסעיף (א), שאינו נזקק לעץ הריצות כלל.

הערה: בהקלטת השיעור העוקב המרצה חוזר במפורש על הקשר הזה: כשנשאל למה מכונה שעוברת על כל העדים מזכירה משהו, הוא עונה "כשהראיתי ש-NP\mathrm{NP} מוכלת ב-PSPACE\mathrm{PSPACE} אמרתי שאני יכול לעבור על כל העדים... כל איטרציה נעשית באותו מקום של האיטרציה הקודמת" ([01:02:35]–[01:03:39], הקלטת שיעור 24). המכניזם זהה; רק המשאב שסופרים משתנה.

תרגיל 4 (מבחן 2, שאלה 1א): 3SAT≤p4NAE\mathrm{3SAT}\le_p\mathrm{4NAE}

הנוסח. טענה: 3SAT≤p4NAE\mathrm{3SAT}\le_p\mathrm{4NAE}. אלגוריתם: בהינתן קידוד של נוסחה φ\varphi מצורת 3CNF נוסיף לכל אחד מהסגרי φ\varphi משתנה חדש xx (אותו משתנה לכל ההסגרים) ונחזיר את הנוסחה המתקבלת בצירוף השמה הנותנת ל-xx את הערך False.

התשובה: האלגוריתם כפי שנוסח אינו רדוקציה — אף שהטענה עצמה נכונה.

ההפרכה. אם הקלט הוא נוסחה φ\varphi מצורת 3CNF, האלגוריתם מחזיר זוג: נוסחה φ^\widehat\varphi מצורת 4CNF והשמה. אבל קלט חוקי של 4NAE\mathrm{4NAE} הוא נוסחת 4CNF בלבד; זוג של נוסחה והשמה אינו מופע של הבעיה. רדוקציה חייבת לשלוח מחרוזות למופעים של בעיית היעד, ולכן האלגוריתם הזה אינו מהווה רדוקציה בזמן פולינומי מ-3SAT\mathrm{3SAT} ל-4NAE\mathrm{4NAE}.

מדוע בכלל נולד הרעיון להחזיר גם השמה, ולמה אין בו צורך. מי שכתב את האלגוריתם רצה "לכפות" על הפותר את הערך x=Falsex=\text{False}, כי בלי זה לא ברור איך לחלץ השמה מספקת ל-φ\varphi. אבל את הכפייה הזו מקבלים בחינם מהתכונה הסימטרית של ספיקוּת NAE:

התכונה החשובה לגבי ספיקוּת באופן NAE: אם φ\varphi נוסחה ו-VV השמה עבור משתני φ\varphi המספקת אותה באופן NAE, אזי ההשמה V^\widehat V, ההפכית ל-VV בכל ערך, אף היא מספקת את φ\varphi באופן NAE (משפט 6).

הרדוקציה המתוקנת ופתרונה המלא. האלגוריתם: בהינתן φ=⋀i=1m(ℓi,1∨ℓi,2∨ℓi,3)\varphi=\bigwedge_{i=1}^{m}(\ell_{i,1}\vee\ell_{i,2}\vee\ell_{i,3}) מצורת 3CNF, נוסיף משתנה חדש יחיד xx לכל ההסגרים ונחזיר רק את הנוסחה

φ^=⋀i=1m(ℓi,1∨ℓi,2∨ℓi,3∨x).\widehat\varphi=\bigwedge_{i=1}^{m}\left(\ell_{i,1}\vee\ell_{i,2}\vee\ell_{i,3}\vee x\right).

זמן ריצה. עוברים על ההסגרים ומוסיפים ליטרל אחד לכל הסגר; סך הכול O(∣⟨φ⟩∣)O(|\langle\varphi\rangle|), ובוודאי פולינומי.

כיוון ראשון. נניח φ∈3SAT\varphi\in\mathrm{3SAT}, ותהא VV השמה המספקת אותה. נרחיב אותה ל-V^\widehat V על ידי V^(x)=False\widehat V(x)=\text{False}. בכל הסגר של φ^\widehat\varphi יש ליטרל אמת (כי VV סיפקה את ההסגר המקורי) וגם ליטרל שקר (המשתנה xx עצמו), ולכן ערכי הליטרלים בהסגר אינם כולם שווים. מכאן φ^∈4NAE\widehat\varphi\in\mathrm{4NAE}.

כיוון שני. נניח φ^∈4NAE\widehat\varphi\in\mathrm{4NAE}, ותהא UU השמה המספקת אותה באופן NAE. אם U(x)=TrueU(x)=\text{True}, נחליף את UU בהשמה ההפכית U^\widehat U — לפי משפט 6 גם היא מספקת את φ^\widehat\varphi באופן NAE, ובה U^(x)=False\widehat U(x)=\text{False}. לכן אפשר להניח בלי הגבלת הכלליות U(x)=FalseU(x)=\text{False}. יהי ii הסגר. אילו כל שלושת הליטרלים ℓi,1,ℓi,2,ℓi,3\ell_{i,1},\ell_{i,2},\ell_{i,3} היו מקבלים False תחת UU, אז כל ארבעת הליטרלים בהסגר היו שווים ל-False — בסתירה לספיקוּת NAE. לכן לפחות אחד מהם אמת, כלומר UU מסופקת את ההסגר המקורי. הדבר נכון לכל הסגר, ולכן UU מצומצמת למשתני φ\varphi מספקת את φ\varphi, ומכאן φ∈3SAT\varphi\in\mathrm{3SAT}. ■\blacksquare

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

תרגיל 5 (מבחן 2, שאלה 1ד): MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS} בעזרת פונקציית הזהות

הנוסח. טענה: MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS}. אלגוריתם: לכל קלט xx החזר את xx.

התשובה: הפונקציה אינה רדוקציה. נתבונן בגרף G=(V,E)G=(V,E) בעל שני קודקודים וללא קשתות, ובקבוע k=1k=1. אז:

  • ⟨G,1⟩∉MAX-IS\langle G,1\rangle\notin\mathrm{MAX}\text{-}\mathrm{IS} — יש בגרף קבוצה בלתי תלויה בגודל 2 (שני הקודקודים גם יחד), ולכן הגודל המקסימלי הוא 2 ולא 1;
  • ⟨G,1⟩∈IS\langle G,1\rangle\in\mathrm{IS} — יש בגרף קבוצה בלתי תלויה בגודל 1 (כל אחד מהקודקודים לחוד).

פונקציית הזהות שולחת את ⟨G,1⟩\langle G,1\rangle לעצמו, כלומר שולחת מופע שאינו ב-MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} למופע שכן ב-IS\mathrm{IS}. זו הפרה ישירה של הדרישה x∈A  ⟺  f(x)∈Bx\in A\iff f(x)\in B. לכן הפונקציה אינה רדוקציה בזמן פולינומי מ-MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} ל-IS\mathrm{IS}. ■\blacksquare

מה נשבר כאן מבחינה מושגית. IS\mathrm{IS} שואלת "האם יש קבוצה בגודל לפחות kk" (ולמעשה: בגודל kk בדיוק, אבל אפשר תמיד להוריד קודקודים ולהישאר בלתי תלויים). MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} שואלת "האם המקסימום שווה בדיוק kk". שתי שאלות שונות על אותו אובייקט, ולכן אותה מחרוזת אינה יכולה לשמש כמופע לשתיהן.

תרגיל 6 (מבחן 2, שאלה 1ה): IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS} בעזרת פונקציית הזהות

הנוסח. טענה: IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS}. אלגוריתם: לכל קלט xx החזר את xx.

התשובה: אותה טענה ואותו נימוק מהתרגיל הקודם, רק בכיוון ההפוך. עם אותו זוג ⟨G,1⟩\langle G,1\rangle (GG שני קודקודים ללא קשתות): ⟨G,1⟩∈IS\langle G,1\rangle\in\mathrm{IS} אך ⟨G,1⟩∉MAX-IS\langle G,1\rangle\notin\mathrm{MAX}\text{-}\mathrm{IS}, ולכן פונקציית הזהות שולחת מופע חיובי למופע שלילי, ואינה מתארת רדוקציה בזמן פולינומי מ-IS\mathrm{IS} ל-MAX-IS\mathrm{MAX}\text{-}\mathrm{IS}. ■\blacksquare

הדיון המושגי שנספח לשני הסעיפים

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

האם בכלל מתקיים IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS}? כן, וללא כל תנאי. IS∈NP\mathrm{IS}\in\mathrm{NP} (שיעור 7, משפט 2), ו-MAX-IS\mathrm{MAX}\text{-}\mathrm{IS} היא NP-קשה (שיעור 22). לפי הגדרת NP-קשיות, כל שפה ב-NP\mathrm{NP} נתנת לרדוקציה אליה, ובפרט IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS}. שימו לב שהרדוקציה הזו קיימת מכוח משפט, ואיננו צריכים לכתוב אותה במפורש.

והאם מתקיים MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS}? כאן התשובה מותנית: לפי מה שהוכח בשיעור 22 (ומנוסח כאן כמשפט 7),

MAX-IS≤pIS⟺NP=coNP.\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS}\quad\Longleftrightarrow\quad\mathrm{NP}=\mathrm{coNP}.

כלומר: הכיוון האחד חינם, והכיוון השני שקול לשאלה פתוחה. זו אסימטריה חשובה בין ≤p\le_p לבין "שקילות", והיא בדיוק סוג הדבר שנשאל במבחן.

תרגיל 7 (מבחן 2, שאלה 1ו): SAT≤pIS\mathrm{SAT}\le_p\mathrm{IS}

הנוסח. טענה: SAT≤pIS\mathrm{SAT}\le_p\mathrm{IS}. אלגוריתם: בהינתן נוסחה φ\varphi מצורת CNF עם mm הסגרים נחזיר את המחרוזת ⟨G,m⟩\langle G,m\rangle כאשר G=(V,E)G=(V,E) גרף לא מכוון המוגדר כך:

  • קבוצת הקודקודים: לכל הסגר של φ\varphi יוגדר בגרף אוסף של קודקודים שמתאימים לכל ההשמות עבור משתני ההסגר המספקות את ההסגר.
  • קבוצת הקשתות: כל שני קודקודים המתאימים להשמות של אותו הסגר יחוברו בקשת. בנוסף יחוברו בקשת כל שני קודקודים שמתאימים להשמות של הסגרים שונים אשר סותרות זו את זו (כלומר, השמה אחת נותנת למשתנה מסוים ערך True והאחרת נותנת לו ערך False).

הדוגמה שמצורפת לשאלה: עבור (x1‾∨x3)∧(x1∨x2‾∨x3)(\overline{x_1}\vee x_3)\wedge(x_1\vee\overline{x_2}\vee x_3) יש 3 השמות למשתנים x1,x3x_1,x_3 המספקות את ההסגר הראשון, ו-7 השמות למשתנים x1,x2,x3x_1,x_2,x_3 המספקות את ההסגר השני, ולכן יהיו בגרף 10 קודקודים.

ודאו את הדוגמה בעצמכם, זה שווה דקה. להסגר הראשון שני משתנים, כלומר 22=42^2=4 השמות; היחידה שאינה מספקת אותו היא x1=True,x3=Falsex_1=\text{True},x_3=\text{False}, ולכן נשארות 3. להסגר השני שלושה משתנים, כלומר 23=82^3=8 השמות; היחידה שאינה מספקת אותו היא x1=False,x2=True,x3=Falsex_1=\text{False},x_2=\text{True},x_3=\text{False}, ולכן נשארות 7. סך הכול 10.

התשובה: האלגוריתם אינו רדוקציה בזמן פולינומי — הוא כלל אינו רץ בזמן פולינומי.

ההפרכה. נתבונן בנוסחה בעלת הסגר יחיד:

φ=x1∨x2∨⋯∨xn.\varphi=x_1\vee x_2\vee\dots\vee x_n.

אורך הקידוד שלה הוא ∣⟨φ⟩∣=O(n)|\langle\varphi\rangle|=O(n). מספר ההשמות למשתני ההסגר הוא 2n2^n, ומהן רק אחת אינה מספקת את ההסגר (זו שנותנת False לכל המשתנים). לכן האלגוריתם בונה 2n−12^n-1 קודקודים, ובפרט כותב על סרט הפלט מחרוזת באורך אקספוננציאלי ב-nn. מכאן שזמן הריצה של האלגוריתם בהכרח אינו פולינומי ב-∣⟨φ⟩∣|\langle\varphi\rangle|. ■\blacksquare

איפה הרעיון נכשל, ואיך הרדוקציה הנכונה עוקפת את זה. הרעיון "קודקוד לכל השמה מספקת של ההסגר" נכון סמנטית — הוא באמת מקודד נכון את הקשר בין ספיקוּת לקבוצה בלתי תלויה — אבל מספר ההשמות המספקות של הסגר ברוחב ww הוא 2w−12^w-1, ורוחב הסגר בנוסחת CNF כללית אינו חסום בקבוע. הרדוקציה התקינה, שנראתה בשיעור 22, בונה קודקוד לכל מופע ליטרל בהסגר ולא לכל השמה: מספר הקודקודים הוא אז ∑i=1m∣Ci∣≤∣⟨φ⟩∣\sum_{i=1}^{m}|C_i|\le|\langle\varphi\rangle|, כלומר לינארי. אותו רעיון בדיוק על הקשתות (קשת בתוך הסגר, קשת בין ליטרלים סותרים), אבל בגודל פולינומי.

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


הערות מהשיעור

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

  • [00:01:35]–[00:03:09], הקלטת שיעור 24 — הטכניקה שפותחת כל שאלת "מחלקה מוזרה". שלב 1: לזהות מהי ההגדרה המוכרת הקרובה ביותר למה שכתוב. שלב 2: לכתוב את שתי ההגדרות אחת מול השנייה ולחפש ברמת התווים איפה הן נבדלות. שלב 3: להחליט אם אפשר לגשר על ההבדל. שלב 4: לכתוב. לדבריו, "השלב שנופלים עליו הוא דווקא הראשון" — הזיהוי, לא הטכניקה.

  • [00:05:45], הקלטת שיעור 24 — "לכתוב בסבלנות ולהיצמד לתבנית". התבנית שהוא דורש: מצטטים את ההגדרה כדי לקבל את המשתנים ("הגדרה שמבטיחה קיום — מציינת מכונה"), ואז "נתבונן ב-MM", "נתבונן בקבוע", "יהי xx", "נניח x∈Ax\in A"… הוא מדגיש שהמטרה אינה פורמליות לשמה אלא בהירות מחשבתית: "לכם הרבה יותר קל לראות מה כתבתם ומה ההקשר של מה שכתבתם".

  • [00:26:21] ו-[00:32:54], הקלטת שיעור 24 — מעבר מ"לכל" ל"קיים". אפשר להסיק "קיים" מ"לכל" רק כשהקבוצה שעליה רצים אינה ריקה. הדוגמה הנגדית שלו: "כל מספר שהריבוע שלו שלילי מתחלק בשלוש" — טענה נכונה, ולא נובע ממנה שקיים מספר כזה. ההעדפה שלו במבחן: לא להסתמך על המעבר, אלא פשוט להציג איבר קונקרטי מהקבוצה.

  • [00:53:30]–[00:54:35], הקלטת שיעור 24 — שימוש נכון במשפט ההיררכיה. על תשובה בסגנון "ממשפט ההיררכיה קיימת שפה שאינה ב-NP\mathrm{NP}": "הייתי מת על זה, אבל אני לא יודע אם זה היה מקבל את כל הנקודות — כי איך השתמשת במשפט ההיררכיה?" זו לא תשובה שגויה אלא תשובה חסרה. הניסוח שמקבל נקודות מלאות מפרט את הפונקציות ואת שלושת התנאים, בדיוק כפי שנעשה בתרגיל 1 כאן.

  • [00:55:06], הקלטת שיעור 24 — כמה להוכיח. "אני רוצה לכתוב את כל מה שאני חייב, אבל אני משתדל לא לכתוב יותר ממה שאני חייב." להוכיח יותר מהנדרש אינו שגוי מתמטית (וסטודנט שהעיר זאת קיבל אישור מפורש), אבל הוא מגדיל את שטח הפנים לטעויות.

  • [01:24:59]–[01:29:44], הקלטת שיעור 24 — למה "מספר קבוע של אפשרויות" אינו אקספוננציאלי. ההסבר על מספר הבחירות האי-דטרמיניסטיות: "נסמן ב-α\alpha את ∣Q∣⋅∣Γ∣⋅2|Q|\cdot|\Gamma|\cdot 2… כל בחירה כזו אני יכול לתאר ב-lg⁡α\lg\alpha ביטים". זהו בדיוק החישוב שמאחורי משפט 5 ותרגיל 3(א) כאן. השאלה שצריך תמיד לשאול היא "מעריכי כפונקציה של מה".


פערים בין הסיכום להקלטה

  • מקור: שיוך ההקלטות. הפער: ההקלטה שנמסרה כמקור ראשי (sjTAzTgMpD0, "שיעור 22", 11 ביוני) אינה עוסקת באף אחד מתרגילי הסיכום הזה: כולה פתרון מטלה 2 — המחלקות C1C_1–C5C_5 המוגדרות מול NP\mathrm{NP} — שהוא בדיוק תוכן הסיכום של שיעור 24 (עמוד 1 שלו נושא את הכותרת "פתרון מטלה 2"). ההקלטה השנייה (2Ck_-XFD52E, 15 ביוני) היא פתרון מטלה 3, שהוא תוכן הסיכום של שיעור 25. ההכרעה: שתיהן סומנו coverage: none עם הערה מפורשת, והקובץ נכתב מהסיכום. ההקלטה של המפגש שבו נפתרה מטלה 1 (ככל הנראה 8 ביוני) אינה קיימת בפלייליסט — בין 4 ביוני ל-11 ביוני אין וידאו.

  • מקור: ההקלטה של 11 ביוני, [00:59:55]. הפער: המרצה מפנה במפורש לחומר של הסיכום הזה — "לא כל מה שנראה מעריכי הוא מעריכי; ראינו את זה גם שיעור שעבר עם ה-nn בחזקת 22 בחזקת cc" — כלומר תרגיל 1 כאן נפתר במפגש הקודם. ההכרעה: האזכור שימש כאישור לשיוך התוכן, וצוטט בגוף הקובץ.

  • מקור: הסיכום, עמוד 1. הפער: בשורת הסיום של הכיוון השני נכתב A∈⋃d≥1DTime(2d)=PA\in\bigcup_{d\ge1}\mathrm{DTime}(2^{d})=\mathrm{P}. ההכרעה: שגיאת כתיב מתמטית; הנוסח הנכון הוא ⋃d≥1DTime(nd)=P\bigcup_{d\ge1}\mathrm{DTime}(n^{d})=\mathrm{P}, וכך נכתב כאן, עם הערה בגוף הפתרון.

  • מקור: הסיכום, עמודים 1–2. הפער: התרגיל מונה שבע מחלקות, אך הסיכום מטפל רק בשלוש מהזהויות (P=⋃DTime(n2c)\mathrm{P}=\bigcup\mathrm{DTime}(n^{2^c}), EXP=⋃DTime(nnc)\mathrm{EXP}=\bigcup\mathrm{DTime}(n^{n^c}), ו-P⊊DTime(2n6)\mathrm{P}\subsetneq\mathrm{DTime}(2^{n^6})); המחלקות ⋃cDTime(ccn)\bigcup_{c}\mathrm{DTime}(c^{cn}) ו-⋃cDTime(cnc)\bigcup_{c}\mathrm{DTime}(c^{n^c}) אינן מוזכרות כלל, וגם לא הסידור המלא. ההכרעה: השלמתי את שתי המחלקות החסרות ואת כל ההכלות-ממש (שלבים ג–ו בתרגיל 1), באותה טכניקה שהסיכום משתמש בה; שלבים אלה הם תוספת שלי ואינם קריאה של הסיכום.

  • מקור: הסיכום, עמוד 5. הפער: בחישוב גודל עץ הריצות מופיע המעריך ∣x∣2|x|^2 בשני מקומות ו-∣x∣c|x|^c במקום שלישי, באותו חישוב. ההכרעה: החסם על זמן הריצה הוא d⋅∣x∣cd\cdot|x|^c, ולכן המעריך הנכון הוא cc בכל המקומות; תוקן.

  • מקור: הסיכום, עמוד 5. הפער: אי-שוויונות בשורות בעברית נכתבים עם סימן שנראה הפוך לקורא שמאל-ימין (למשל "עומק העץ ≥d∣x∣c\ge d|x|^c"). ההכרעה: זהו שיקוף של סימן ההשוואה בשורת טקסט מימין לשמאל; המשמעות היא "עומק העץ חסום ב-d∣x∣cd|x|^c", וכך נכתב.

  • מקור: הסיכום, עמוד 1. הפער: בשימוש במשפט ההיררכיה בזמן מצוין עבור 2n6/22^{n^6/2} רק שהיא "סופר-לינארית", בלי תנאי הישימוּת בזמן. ההכרעה: התנאי נדרש והוא מתקיים; הוסף במפורש, ומסומן כהשלמה.

  • מקור: הסיכום, עמודים 3–4. הפער: שאלה 3 מופיעה עם סעיפים (א) ו-(ג) בלבד; סעיף (ב) חסר לחלוטין. ההכרעה: לא שוחזר — אין בסיס לנחש את נוסחו. נרשם ב-open_questions.

  • מקור: הסיכום, עמוד 7, סעיף (ד). הפער: הגרף שצויר מראה שני קודקודים מחוברים בקשת, בעוד שהנימוק הכתוב לצדו — "יש קבוצה בלתי תלויה בגודל 2" — נכון רק לגרף חסר קשתות. בגרף עם קשת ו-k=1k=1 שני המופעים חיוביים ואין הפרכה. ההכרעה: הנימוק הכתוב הוא הקובע; הפתרון כאן משתמש בשני קודקודים ללא קשת. הפער נרשם גם ב-open_questions.

  • מקור: הסיכום, עמוד 7, סעיף (א). הפער: מילה אחת בשורת המסקנה אינה קריאה בוודאות. ההכרעה: המשמעות ברורה מההקשר ומהאלגוריתם המצוטט — הפלט הוא זוג של נוסחה והשמה, שאינו קלט חוקי של 4NAE\mathrm{4NAE} — וכך נוסח.

  • מקור: הסיכום, עמוד 7, שורת הסיום. הפער: נכתב "לפי מה שהראינו בשיעור שעבר, MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS} אם ורק אם NP=coNP\mathrm{NP}=\mathrm{coNP}", בלי חזרה על הטיעון. ההכרעה: הטיעון שוחזר בקצרה כמשפט 7 מתוך שיעור 22, שם הוא הוכח במלואו; לא הועתקה ההוכחה המלאה.

  • מקור: הסיכום, עמוד 5, ההערה הכחולה. ההכרעה: ההערה ("פתרון בשיעור — בניית מכונה שעוברת על כל העדים האפשריים; מכונה זו רצה בזמן אקספוננציאלי; ולכן אותה הוכחה בדיוק מראה NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP}") שולבה בגוף תרגיל 3(ב) כתוצאה עצמאית, כי היא ההוספה היחידה של השיעור מעל שיעור 8.


סיכום ונקודות למבחן

מה שחייבים לדעת בעל פה

  1. הזהויות שמתמוטטות. ⋃c≥1DTime(n2c)=P\bigcup_{c\ge1}\mathrm{DTime}(n^{2^c})=\mathrm{P}; ⋃c≥1DTime(nnc)=⋃c≥1DTime(cnc)=EXP\bigcup_{c\ge1}\mathrm{DTime}(n^{n^c})=\bigcup_{c\ge1}\mathrm{DTime}(c^{n^c})=\mathrm{EXP}; ⋃c≥1DTime(ccn)\bigcup_{c\ge1}\mathrm{DTime}(c^{cn}) היא הזמן האקספוננציאלי הלינארי, שיושבת ממש בין P\mathrm{P} ל-DTime(2n6)\mathrm{DTime}(2^{n^6}).
  2. הריקוד של משפט ההיררכיה בשלושה צעדים: לחסום את המחלקה הקטנה במחלקה עדינה אחת; לבחור ff ישימה בזמן וסופר-לינארית עם g=o(f)g=o(f) ועם DTime(f2)\mathrm{DTime}(f^2) בתוך המחלקה הגדולה; להסיק. תמיד לבדוק את שלושת התנאים בכתב.
  3. spaceM(x)≤timeM(x)\mathrm{space}_M(x)\le\mathrm{time}_M(x) — המשפט הקטן שפותר את כל תרגיל 2.
  4. TISP(f,f)=DTime(f)\mathrm{TISP}(f,f)=\mathrm{DTime}(f), ולכן ⋃cTISP(nc,nc)=P\bigcup_c\mathrm{TISP}(n^c,n^c)=\mathrm{P}.
  5. מכונה אחת, שני חסמים: המכונה שעוברת על כל העדים מוכיחה גם NP⊆PSPACE\mathrm{NP}\subseteq\mathrm{PSPACE} (מוחקים בין איטרציות) וגם NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP} (סופרים איטרציות).
  6. עץ הריצות: α=∣Q∣⋅∣Γ∣⋅2\alpha=|Q|\cdot|\Gamma|\cdot2 בנים לכל צומת, עומק כזמן הריצה, גודל O(αT+1)O(\alpha^{T+1}).
  7. NAE סימטרית: ההשמה המשלימה מספקת באופן NAE כל נוסחה שההשמה המקורית סיפקה באופן NAE.
  8. IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS} תמיד; MAX-IS≤pIS\mathrm{MAX}\text{-}\mathrm{IS}\le_p\mathrm{IS} אם ורק אם NP=coNP\mathrm{NP}=\mathrm{coNP}.

המלכודות הסטנדרטיות

  • "נראה מעריכי" ≠\ne "מעריכי". n2cn^{2^c} הוא פולינום; ccnc^{cn} אינו ב-P\mathrm{P}. תמיד לשאול: מעריכי כפונקציה של אורך הקלט?
  • "ממשפט ההיררכיה נובע" אינו טיעון. צריך לכתוב את ff, את gg, ואת שלושת התנאים.
  • שוויון בין מחלקות הוא טענת "וגם". כששואלים "האם הטענה נכונה, שגויה או שקולה לשאלה פתוחה", מפרקים לשתי הכלות ועונים על כל אחת בנפרד — לרוב אחת ידועה והשנייה פתוחה.
  • רדוקציה נבדקת בשלושה מקומות: (1) האם הפלט הוא מופע חוקי של בעיית היעד; (2) האם הכיוון נשמר בשני הכיוונים של האם-ורק-אם; (3) האם זמן הריצה — כולל אורך הפלט — פולינומי. שלושת התרגילים האחרונים כאן נשברים בדיוק בשלוש הנקודות האלה, אחת בכל אחד.
  • הפרכת אלגוריתם אינה הפרכת טענה. בכל שלוש הטענות שהופרכו כאן, הטענה עצמה נכונה. אם השאלה מבקשת רק לבדוק את האלגוריתם — לענות על מה שנשאל, ולציין בשורה אחת שהטענה עצמה נכונה.
  • מ"לכל" ל"קיים" רק כשהקבוצה אינה ריקה, ועדיף פשוט להציג איבר.

מה המרצה אמר על המבחן עצמו

הדברים הבאים נאמרו בהקלטת המפגש של 15 ביוני ([01:09:23]–[01:13:33]), והם נוגעים לכל ארבעת שיעורי החזרה:

  • סדר העדיפויות ברור. "לעבור על החומר זה הכי חשוב מהכול" — תרגילי בית, ותרגילים שנפתרו בכיתה. רק אם נשאר זמן, מבחנים משנים קודמות.
  • למה. שאלות אמנם חוזרות, אבל "אם 80% מהמבחן הוא על שאלות שראינו בקורס ויש עוד שאלה של 20 נקודות שהופיעה פעם במבחן קודם — האם שווה לפתור עכשיו 20 מבחנים על חשבון החומר?" ובנוסף: בסמסטרים קודמים לימדו לפעמים חומר אחר, ואפשר להיתקע על בעיה בלי לדעת שהיא בכלל לא בחומר. "אם אתם עושים אוברפיטינג למשהו, תעשו אוברפיטינג לחומר ולא לבחינות קודמות."
  • מה נחשב "ברמת תרגיל". "למעט שניים-שלושה משפטים — משפט ההיררכיה, משפט קוק-לוין ואולי עוד אחד — כל מה שהוכחנו בשיעור הוא ברמת תרגיל מבחינתכם." כלומר כל הוכחה שנראתה בכיתה היא הוכחה שאתם אמורים לדעת לשחזר.

רשימת בדיקה — מה צריך לדעת לעשות אחרי השיעור הזה

  • לקבוע, בהינתן משפחת מחלקות מהצורה ⋃cDTime(h(n,c))\bigcup_c\mathrm{DTime}(h(n,c)), למה היא שווה, על ידי חישוב סדר גודל אחד והפעלת משפט המונוטוניות.
  • להוכיח הכלה ממש בין שתי מחלקות גסות באמצעות משפט ההיררכיה בזמן, כולל בחירת ff ואימות שלושת התנאים.
  • להוכיח TISP(f,f)=DTime(f)\mathrm{TISP}(f,f)=\mathrm{DTime}(f) ולהסיק ממנה טענות על איחודים.
  • להוכיח NP⊆EXP\mathrm{NP}\subseteq\mathrm{EXP} בשתי הדרכים — עץ ריצות של מכונה אי-דטרמיניסטית, ומעבר על כל העדים — ולדעת איזו הגדרה כל דרך דורשת.
  • בהינתן אלגוריתם שמוצג כרדוקציה, לבדוק את שלוש הנקודות (טיפוס הפלט, שני כיווני האם-ורק-אם, זמן ריצה ואורך פלט) ולהציג מופע נגדי קונקרטי כשהוא נכשל.
  • לתקן את הרדוקציה 3SAT≤p4NAE\mathrm{3SAT}\le_p\mathrm{4NAE} ולהוכיח אותה במלואה, כולל השימוש בהשמה המשלימה.
  • להסביר מדוע IS≤pMAX-IS\mathrm{IS}\le_p\mathrm{MAX}\text{-}\mathrm{IS} מתקיים תמיד ואילו הכיוון ההפוך שקול ל-NP=coNP\mathrm{NP}=\mathrm{coNP}.

שאלות שנשארו פתוחות

  • לשיעור זה אין הקלטה: שתי ההקלטות שנמסרו שייכות לשיעורים 24 ו-25, והמפגש שבו נפתרו התרגילים האלה (ככל הנראה ה-8 ביוני) חסר מהפלייליסט; הקובץ נשען על הסיכום בלבד.
  • עמוד 4 בסיכום עובר משאלה 3 סעיף (א) לסעיף (ג); סעיף (ב) של אותה שאלה אינו מופיע בסיכום כלל ולא שוחזר.
  • עמוד 7 בסיכום: הגרף שצויר לסעיף (ד) מראה קשת בין שני הקודקודים, אך הנימוק הכתוב לצדו ('יש קבוצה בלתי תלויה בגודל 2') מחייב גרף חסר קשתות; הלכתי אחרי הנימוק.
  • עמוד 7 בסיכום: מילה אחת בשורת המסקנה של סעיף (א) אינה קריאה בוודאות; המשמעות ('הפלט הוא זוג ולא נוסחה, ולכן אינו קלט חוקי של 4NAE') ברורה מההקשר.
  • החומר שעמוד 7 נשען עליו (MAX-IS היא coNP-קשה, ומכאן השקילות ל-NP=coNP) נפתר בהקלטה AGUI69L7aDA השייכת לשיעור 22; היא לא נמסרה לקובץ זה, וההפניה אליה היא דרך שיעור 22.