3משפטי היררכיה במקום ובזמן

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

ביטחון: high2 הקלטות7 עמודי סיכוםspace-hierarchytime-hierarchydiagonalizationconstructibilityuniversal-turing-machineexp

נשען על: שיעור 1, שיעור 2

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

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

סיבוכיות שיעור 3 משפטי היררכייה במקום ובזמן.pdf

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

בקצרה

  • זהו השיעור הראשון בקורס שבו מוכיחים תוצאה שלילית ברמת הסיבוכיות: לא רק ש"אפשר לעשות משהו בתקציב נתון", אלא שאי אפשר לעשות משהו בתקציב נתון. תוצאות כאלה קשות בהרבה מתוצאות חיוביות ולכן יש מעט מהן.
  • משפט ההיררכיה במקום: אם g=o(f)g=o(f), אם ff ישימה במקום (space-constructible) ואם ff סופר־לינארית, אז DSpace(g)⊊DSpace(f)\mathrm{DSpace}(g)\subsetneq\mathrm{DSpace}(f). כלומר תוספת משמעותית של מקום נותנת ממש יותר כוח חישובי.
  • משפט ההיררכיה בזמן: באותם תנאים, אבל עם ff ישימה בזמן (time-constructible), מקבלים רק DTime(g)⊊DTime(f2)\mathrm{DTime}(g)\subsetneq\mathrm{DTime}(f^2). הריבוע הזה אינו קישוט — הוא נובע נקודתית מהמעבר ממכונה רב־סרטית למכונה סטנדרטית, שבמקום עולה קבוע כפלי ובזמן עולה ריבוע.
  • ההוכחה היא לכסון בסגנון חישוביות (השפה של המכונות שדוחות את הקידוד של עצמן), אבל עם רכיב סיבוכיותי שמפצל את עולם המכונות: מי שמשתמשת במעט מקום נופלת במלכודת הלכסון, ומי שמשתמשת בהרבה מקום בורחת ממנה.
  • שני התנאים הטכניים אינם קישוט: הישימות דרושה כדי שהמכונה שבונים תוכל בכלל לכתוב את המונים בתוך התקציב, והסופר־לינאריות דרושה כדי לבלוע את ∣⟨M⟩∣|\langle M\rangle| ואת lg⁡f\lg f בתוך ff בחשבון הזמן והמקום.
  • מסקנה מרכזית: P⊊EXP\mathrm P\subsetneq\mathrm{EXP}. ומכיוון ש-P⊆PSPACE⊆EXP\mathrm P\subseteq\mathrm{PSPACE}\subseteq\mathrm{EXP}, לפחות אחת משתי ההכלות האלה היא הכלה ממש — ואף אחד לא יודע איזו. שתי השאלות פתוחות זה עשרות שנים.
  • מלכודת שחוזרת: הכלה נשמרת תחת איחוד, הכלה ממש לא. לכן אי אפשר להפעיל את משפט ההיררכיה ישירות על מחלקות גסות כמו P\mathrm P ו-EXP\mathrm{EXP}; חייבים לעבור דרך שתי מחלקות עדינות באמצע.

רקע ותלויות

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

מהשיעורים 1–2: המחלקות

P=⋃c≥1DTime(nc),PSPACE=⋃c≥1DSpace(nc),EXP=⋃c≥1DTime ⁣(2nc).\mathrm P=\bigcup_{c\ge 1}\mathrm{DTime}(n^c),\qquad \mathrm{PSPACE}=\bigcup_{c\ge 1}\mathrm{DSpace}(n^c),\qquad \mathrm{EXP}=\bigcup_{c\ge 1}\mathrm{DTime}\!\left(2^{n^c}\right).

DTime(f)\mathrm{DTime}(f) ו-DSpace(f)\mathrm{DSpace}(f) הן מחלקות עדינות — לכל פונקציה יש מחלקה משלה. P\mathrm P, PSPACE\mathrm{PSPACE} ו-EXP\mathrm{EXP} הן מחלקות גסות: הן איחוד אינסופי, והן כבר לא מבחינות בין n2n^2 ל-n10n^{10}. ההבחנה הזו תהיה קריטית בסוף השיעור (ראו שיעור 2).

מהשיעור 2: מונוטוניות במשאב

טענה. לכל f,g:N→Nf,g:\mathbb N\to\mathbb N: אם g=O(f)g=O(f) אז DTime(g)⊆DTime(f)\mathrm{DTime}(g)\subseteq\mathrm{DTime}(f) וגם DSpace(g)⊆DSpace(f)\mathrm{DSpace}(g)\subseteq\mathrm{DSpace}(f).

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

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

מהשיעור 2: מקום חוסם זמן

טענה. DSpace(f)⊆⋃d≥1DTime ⁣(2d⋅f)\mathrm{DSpace}(f)\subseteq\bigcup_{d\ge 1}\mathrm{DTime}\!\left(2^{d\cdot f}\right).

ההוכחה שלה נשענה על ספירת קונפיגורציות, והשורה שנצטרך כאן היא לא התוצאה הסופית אלא השורה שלפניה: אם MM עוצרת על קלט xx אז

timeM(x) ≤ 2 lg⁡∣QM∣  +  lg⁡∣ΓM∣⋅spaceM(x)  +  lg⁡spaceM(x).\mathrm{time}_M(x)\ \le\ 2^{\,\lg|Q_M|\;+\;\lg|\Gamma_M|\cdot \mathrm{space}_M(x)\;+\;\lg \mathrm{space}_M(x)}.

הביטוי הזה הוא בדיוק מספר הקונפיגורציות האפשריות: ∣QM∣|Q_M| בחירות של מצב, ∣ΓM∣spaceM(x)|\Gamma_M|^{\mathrm{space}_M(x)} תוכני סרט, ו-spaceM(x)\mathrm{space}_M(x) מיקומי ראש. אם המכונה עושה יותר צעדים מזה — קונפיגורציה חוזרת על עצמה והמכונה לעולם לא תעצור.

מהשיעור 1: המכונה האוניברסלית והמעבר בין מודלים

שני מדדים של המכונה האוניברסלית MUM_U על קלט ⟨M,x⟩\langle M,x\rangle יופיעו כאן במפורש:

spaceMU(⟨M,x⟩)=O ⁣(∣⟨M,x⟩∣+lg⁡∣ΓM∣⋅spaceM(x)),timeMU(⟨M,x⟩)=O ⁣(∣⟨M⟩∣⋅timeM(x)).\mathrm{space}_{M_U}(\langle M,x\rangle)=O\!\left(|\langle M,x\rangle|+\lg|\Gamma_M|\cdot \mathrm{space}_M(x)\right), \qquad \mathrm{time}_{M_U}(\langle M,x\rangle)=O\!\left(|\langle M\rangle|\cdot \mathrm{time}_M(x)\right).

ההסבר לפקטור lg⁡∣ΓM∣\lg|\Gamma_M|: האוניברסלית עובדת מעל קידוד בינרי, ולכן כל תא של MM עולה לה lg⁡∣ΓM∣\lg|\Gamma_M| תאים. שימו לב להבדל בין שני המדדים — במקום משלמים lg⁡∣ΓM∣\lg|\Gamma_M|, בזמן משלמים ∣⟨M⟩∣|\langle M\rangle|. כל ההבדל בין שני משפטי ההיררכיה יצמח מהנקודה הזאת.

וכן, ההמרה בין מודלים:

טענה. לכל מכונה רב־סרטית MM קיימת מכונה סטנדרטית (חד־סרטית) M^\hat M השקולה לה סמנטית, כך ש-spaceM^(x)=O(spaceM(x))\mathrm{space}_{\hat M}(x)=O(\mathrm{space}_M(x)) אבל timeM^(x)=O ⁣(timeM(x)2)\mathrm{time}_{\hat M}(x)=O\!\left(\mathrm{time}_M(x)^2\right).

זו הנקודה — ורק היא — שמכניסה את הריבוע למשפט ההיררכיה בזמן.


הגדרות

הגדרה 1: ישימות במקום (space-constructible)

תהי f:N→Nf:\mathbb N\to\mathbb N. נאמר ש-ff ישימה במקום אם קיימת מכונת טיורינג MM מעל אלפבית קלט {0}\{0\} (אלפבית של אות אחת) המקיימת, לכל n∈Nn\in\mathbb N:

  1. M(0n)=0f(n)M(0^n)=0^{f(n)};
  2. spaceM(0n)=O(f(n))\mathrm{space}_M(0^n)=O(f(n)).

אינטואיציה. התנאי הראשון לבדו אומר רק ש-ff חשיבה: נותנים למכונה את המספר nn (מקודד באונרית — אורך המחרוזת הוא המספר) והיא מחזירה את f(n)f(n) באותו קידוד. התנאי השני מוסיף את הדרישה הסיבוכיותית: המקום שדרוש כדי לחשב את ff אינו גדול משמעותית מגודל הפלט עצמו. אפשר לקרוא את זה כך — אפשר לבנות את ff בתוך המקום של עצמה. שימו לב ש-O(⋅)O(\cdot) ולא שוויון: מותר לצרוך קצת יותר מקום מהפלט, עד כדי קבוע כפלי.

הערה על סימונים: בכתב יד קל להתבלבל בין הספרה 00 בתוך 0n0^n לבין הסימון O(⋅)O(\cdot). שאלת סטודנט בהקלטה [00:22:10] הייתה בדיוק זו — ב-M(0n)M(0^n) מדובר בספרה אפס, כלומר מחרוזת של אפסים; אין משמעות ל"OO בחזקת nn".

מופע. f(n)=n2f(n)=n^2 ישימה במקום: קל לבנות מכונה שכותבת n2n^2 אפסים תוך שימוש ב-O(n2)O(n^2) תאים.

אי־מופע (הבהרת הגבול). פונקציה שאינה חשיבה כלל — למשל f(n)=f(n)= מספר המכונות בגודל nn שעוצרות על הקלט הריק — בוודאות אינה ישימה במקום, כי אפילו התנאי הראשון נכשל. בקורס הזה כמעט לא ניתקל בכאלה: אנחנו כבר לא בעולם של R\mathbb R ולא בעולם של פונקציות לא חשיבות.

הגדרה 2: ישימות בזמן (time-constructible)

באופן דומה לחלוטין, רק שהתנאי השני מוחלף ב-timeM(0n)=O(f(n))\mathrm{time}_M(0^n)=O(f(n)).

משפט עזר (ללא הוכחה, מותר להשתמש)

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

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

הגדרה 3: סופר־לינאריות

ff נקראת סופר־לינארית אם f(n)≥nf(n)\ge n לכל n∈Nn\in\mathbb N.

אינטואיציה. זו הדרישה שהתקציב יספיק לפחות כדי לקרוא את הקלט. היא תשמש אותנו פעמיים בחשבון, שתיהן בצורה "בלע את ∣⟨M⟩∣|\langle M\rangle| בתוך f(∣⟨M⟩∣)f(|\langle M\rangle|)".

הגדרה 4: השפה SfS_f — האלכסון

תהי f:N→Nf:\mathbb N\to\mathbb N. נגדיר

Sf={ ⟨M⟩ | M rejects ⟨M⟩ ∧ spaceM(⟨M⟩)≤f(∣⟨M⟩∣)lg⁡∣ΓM∣ }.S_f=\left\{\ \langle M\rangle\ \middle|\ M \text{ rejects } \langle M\rangle \ \wedge\ \mathrm{space}_M(\langle M\rangle)\le \frac{f(|\langle M\rangle|)}{\lg|\Gamma_M|}\ \right\}.

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

הערה: בהרצה הראשונה המרצה אמר במפורש "הנחתּי את השפה הזאת — אל תשאלו איך הגעתי אליה, שאלו רק אם ההגדרה ברורה" [00:36:14]. בהרצה המקבילה כן ניתן ההסבר המלא, והוא מובא כאן בשלמותו, כי הוא הדבר החשוב ביותר שאין בסיכום.

מאיפה התנאי הראשון. אם משמיטים לגמרי את תנאי המקום, נשארים עם השפה {⟨M⟩∣M rejects ⟨M⟩}\{\langle M\rangle\mid M \text{ rejects } \langle M\rangle\}. זו בדיוק שפת הלכסון מחישוביות, והיא אינה כריעה: אילו הייתה מכונה M′M' שמכריעה אותה, נשאל מה היא מחזירה על ⟨M′⟩\langle M'\rangle. אם היא מקבלת — אז ⟨M′⟩∈\langle M'\rangle\in השפה, אבל השייכות דורשת שהיא תדחה, סתירה. אם היא דוחה — אז לפי ההגדרה ⟨M′⟩\langle M'\rangle כן בשפה, ולכן היא הייתה צריכה לקבל, סתירה. יש קלט אחד — הקידוד של עצמה — שעליו כל מכונה טועה.

מה עושה התנאי השני. תנאי המקום מפצל את עולם המכונות לשניים:

  • מכונה שמשתמשת ב-O(g)O(g) מקום: מכיוון ש-gg קטנה בסדר גודל מ-ff, תנאי המקום מתקיים אצלה אוטומטית (עבור קידודים ארוכים מספיק). ולכן היא נשארת לכודה בדיוק באותה סתירה — היא לא יכולה להכריע את SfS_f.
  • מכונה שמשתמשת ביותר מ-f(∣⟨M⟩∣)/lg⁡∣ΓM∣f(|\langle M\rangle|)/\lg|\Gamma_M| מקום: אצלה תנאי המקום נכשל, ולכן היא יכולה לדחות את הקידוד של עצמה בלי להיכנס לסתירה — היא פשוט אינה שייכת ל-SfS_f, ולא בגלל תנאי הלכסון אלא בגלל תנאי המקום. מכונות כאלה הן היחידות שיש להן סיכוי להכריע את SfS_f.

זו התשובה לשאלה המתבקשת ששאל סטודנט [00:09:30]: "אם השפה הזו לא כריעה, איך היא בכלל יכולה להיות ב-DSpace(f)\mathrm{DSpace}(f)?" — התשובה היא שהיא כן כריעה; תנאי המקום הוא שהופך אותה לכריעה, ולא סתם כריעה, אלא כריעה בדיוק על ידי מכונות שמעל הסף.

מאיפה החלוקה ב-lg⁡∣ΓM∣\lg|\Gamma_M|. זהו הפרט הסיבוכיותי היחיד בהגדרה. כשנכריע את SfS_f נריץ מכונה אוניברסלית, והמקום שהיא דורשת הוא O(spaceM(x)⋅lg⁡∣ΓM∣)O(\mathrm{space}_M(x)\cdot\lg|\Gamma_M|). אם נחסום את spaceM\mathrm{space}_M ב-f/lg⁡∣ΓM∣f/\lg|\Gamma_M|, אז ה-lg⁡∣ΓM∣\lg|\Gamma_M| מצטמצם ונשארים עם O(f)O(f) — חסם שאינו תלוי במכונה שמריצים. בלי החלוקה הזו היה נשאר קבוע שתלוי בקלט, ומחלקת DSpace\mathrm{DSpace} אינה סובלת קבוע כזה. אותו צמצום בדיוק יקרה גם בחשבון הזמן, כי גם שם הפקטור הדומיננטי הוא 2lg⁡∣ΓM∣⋅spaceM2^{\lg|\Gamma_M|\cdot \mathrm{space}_M}.


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

משפט 1 (חימום): PSPACE⊆EXP\mathrm{PSPACE}\subseteq\mathrm{EXP}

הוכחה. תהי A∈PSPACEA\in\mathrm{PSPACE}.

  1. לפי הגדרת PSPACE\mathrm{PSPACE} כאיחוד, קיים c≥1c\ge 1 כך ש-A∈DSpace(nc)A\in\mathrm{DSpace}(n^c). (הצעד הראשון תמיד: לקלף את האיחוד החוצה.)
  2. מהטענה שהוכחנו בשיעור 2, DSpace(f)⊆⋃d≥1DTime(2d⋅f)\mathrm{DSpace}(f)\subseteq\bigcup_{d\ge1}\mathrm{DTime}(2^{d\cdot f}), ולכן A∈⋃d≥1DTime ⁣(2d⋅nc)A\in\bigcup_{d\ge 1}\mathrm{DTime}\!\left(2^{d\cdot n^c}\right).
  3. שוב מקלפים את האיחוד: קיים d≥1d\ge 1 כך ש-A∈DTime ⁣(2d⋅nc)A\in\mathrm{DTime}\!\left(2^{d\cdot n^c}\right).
  4. וכאן נתקעים לרגע — הצורה 2d⋅nc2^{d\cdot n^c} אינה מהצורה 2nc′2^{n^{c'}} שממנה בנויה EXP\mathrm{EXP}.

הנקודה שהמרצה עצר עליה: קבוע כפלי בתוך החזקה אינו זניח. קבוע כפלי מחוץ לפונקציה תמיד נבלע ב-O(⋅)O(\cdot) ובקבוע של המחלקה, אבל 22n2^{2n} ו-2n2^{n} אינם מאותו סדר גודל בכלל — היחס ביניהם הוא 2n2^n. אי אפשר "להעיף" את dd.

מה כן אפשר? להשתמש בכך ש-EXP\mathrm{EXP} הוא איחוד על כל החזקות, ולכן מותר לנו לקחת חזקה גדולה יותר. לכל n≥dn\ge d מתקיים d⋅nc≤n⋅nc=nc+1d\cdot n^c\le n\cdot n^c=n^{c+1}, ולכן

2d⋅nc=O ⁣(2nc+1).2^{d\cdot 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

למה בדיוק c+1c+1? מפני ש-dd קבוע ו-nn לא. הגדלת החזקה של nn באחד מספיקה כדי לבלוע כל קבוע כפלי, עבור nn גדולים מספיק. אם נחזור לדוגמה: 22n2^{2n} גדול בהרבה מ-2n2^{n}, אבל קטן בהרבה מ-2n22^{n^2}. (גם c⋅dc\cdot d בחזקה היה עובד — הוא ≥c\ge c כי d≥1d\ge1 — אבל c+1c+1 פשוט יותר.)

משפט 2 (גרסת החלומות — לא נכון שיודעים להוכיח)

תהיינה f,g:N→Nf,g:\mathbb N\to\mathbb N. אם g=o(f)g=o(f) אז DSpace(g)⊊DSpace(f)\mathrm{DSpace}(g)\subsetneq\mathrm{DSpace}(f).

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

שימו לב למה קופצים כאן מ-OO גדול ל-oo קטן: OO גדול נותן רק את התוצאה החיובית (DSpace(g)⊆DSpace(f)\mathrm{DSpace}(g)\subseteq\mathrm{DSpace}(f)). oo קטן אומר שהתקציב גדל בסדר גודל, וזה מה שנדרש כדי לקוות לתוצאה שלילית.

משפט 3: משפט ההיררכיה במקום

תהיינה f,g:N→Nf,g:\mathbb N\to\mathbb N. נניח כי

  1. g=o(f)g=o(f);
  2. ff ישימה במקום;
  3. f(n)≥nf(n)\ge n לכל n∈Nn\in\mathbb N (כלומר ff סופר־לינארית).

אז DSpace(g)⊊DSpace(f)\mathrm{DSpace}(g)\subsetneq\mathrm{DSpace}(f).

מבנה ההוכחה. "AA מוכלת ממש ב-BB" פירושו "A⊆BA\subseteq B וגם B⊈AB\not\subseteq A". לכן צריך להוכיח שני דברים נפרדים:

  • (א) DSpace(g)⊆DSpace(f)\mathrm{DSpace}(g)\subseteq\mathrm{DSpace}(f);
  • (ב) DSpace(f)⊈DSpace(g)\mathrm{DSpace}(f)\not\subseteq\mathrm{DSpace}(g), כלומר קיימת שפה A∈DSpace(f)A\in\mathrm{DSpace}(f) עם A∉DSpace(g)A\notin\mathrm{DSpace}(g).

חלק (ב) הוא טענת קיום, ולכן נציג שפה קונקרטית — את SfS_f — ונוכיח עליה שני דברים בלתי תלויים: שהיא ב-DSpace(f)\mathrm{DSpace}(f), ושהיא לא ב-DSpace(g)\mathrm{DSpace}(g).


חלק (א): ההכלה

g=o(f)g=o(f) גורר g=O(f)g=O(f) (אור קטן תמיד גורר אור גדול). לפי הטענה מהשיעור 2, DSpace(g)⊆DSpace(f)\mathrm{DSpace}(g)\subseteq\mathrm{DSpace}(f). □\square

זהו — החלק הזה נגמר בשורה אחת, וכל שאר ההוכחה עוסקת בחלק (ב).


חלק (ב1): Sf∈DSpace(f)S_f\in\mathrm{DSpace}(f)

לפי ההגדרה, צריך להציג מכונה וקבוע, ולהראות שהמכונה מכריעה את SfS_f ושהיא עושה זאת במקום שאינו עולה על הקבוע כפול ff.

בניית המכונה MfM_f. MfM_f תהיה מכונה רב־סרטית, מבוססת על המכונה האוניברסלית MUM_U, בתוספת שני סרטים: סרט מונה מקום וסרט מונה זמן. שימו לב ש-MfM_f אינה האוניברסלית — היא מחזיקה את האוניברסלית "בבטן", וכן מחזיקה בבטן גם מכונה שמחשבת את ff (זה חוקי: ff ישימה במקום ובפרט חשיבה, והיא ידועה לנו כבר בזמן הבנייה, כי היא נתונה בניסוח המשפט).

על קלט ⟨M⟩\langle M\rangle שהוא קידוד של מכונה, MfM_f פועלת כך:

  1. אתחול מונה המקום. MfM_f כותבת על סרט מונה המקום f(∣⟨M⟩∣)lg⁡∣ΓM∣\dfrac{f(|\langle M\rangle|)}{\lg|\Gamma_M|} אפסים. את המונה הזה חושבים כמספר באונרית.
  2. אתחול מונה הזמן. MfM_f כותבת על סרט מונה הזמן 3f(∣⟨M⟩∣)3f(|\langle M\rangle|) אפסים, ומשמאלם 11. את המונה הזה חושבים כמספר בבינארית — כלומר זהו הייצוג הבינארי של 23f(∣⟨M⟩∣)2^{3f(|\langle M\rangle|)}.
  3. סימולציה. MfM_f מסמלצת את ריצת MUM_U על הקלט ⟨M,M⟩\langle M,M\rangle, כלומר מריצה את MM על הקידוד של עצמה, עם שתי תוספות:
    • בכל צעד ש-MUM_U מסמלצת בריצה של MM על ⟨M⟩\langle M\rangle — MfM_f מורידה 11 ממונה הזמן (בבינארית).
    • בכל פעם ש-MM כותבת בתא שעדיין לא כתבה בו — MfM_f מוחקת אפס אחד ממונה המקום.
    • אם אחד המונים היה אמור לרדת מתחת לאפס — MfM_f דוחה מיד ועוצרת את הסימולציה.
  4. סיום. אם הסימולציה הסתיימה: אם MM דחתה את ⟨M⟩\langle M\rangle אז MfM_f מקבלת; אם MM קיבלה את ⟨M⟩\langle M\rangle אז MfM_f דוחה.

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

  • מדוע מונה הזמן בבינארית ומונה המקום באונרית? אילו כתבנו את 23f2^{3f} באונרית היינו צריכים 23f(n)2^{3f(n)} תאים — הרבה מעבר לתקציב. בבינארית זה 3f(n)+13f(n)+1 תאים בלבד. במונה המקום המספר עצמו הוא כבר בסדר גודל ff, ולכן אונרי או בינארי אינו קריטי שם, והאונרי נוח יותר לספירה.
  • איך יודעים אם MM כתבה בתא חדש? מסמנים תאים שכבר נכתב בהם, על ידי שינוי קל של אלפבית הסרט — טכניקה שראינו בחישוביות. אם MM כותבת שוב בתא מסומן, לא מורידים מהמונה.

ניתוח סמנטי: MfM_f מכריעה את SfS_f.

כיוון ראשון: אם ⟨M⟩∈Sf\langle M\rangle\in S_f אז MfM_f מקבלת. מהשייכות נובעים שני דברים: MM דוחה את ⟨M⟩\langle M\rangle (ובפרט עוצרת עליו), וגם spaceM(⟨M⟩)≤f(∣⟨M⟩∣)/lg⁡∣ΓM∣\mathrm{space}_M(\langle M\rangle)\le f(|\langle M\rangle|)/\lg|\Gamma_M|.

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

לגבי מונה הזמן: מכיוון ש-MM עוצרת על ⟨M⟩\langle M\rangle, נשתמש בחסם ספירת הקונפיגורציות מהשיעור 1:

timeM(⟨M⟩) ≤ 2 lg⁡∣QM∣  +  lg⁡∣ΓM∣⋅spaceM(⟨M⟩)  +  lg⁡spaceM(⟨M⟩).\mathrm{time}_M(\langle M\rangle)\ \le\ 2^{\,\lg|Q_M|\;+\;\lg|\Gamma_M|\cdot \mathrm{space}_M(\langle M\rangle)\;+\;\lg \mathrm{space}_M(\langle M\rangle)}.

נחסום כל אחד משלושת המחוברים בנפרד:

  • נסמן ב-NN את מספר האפשרויות שהקידוד מתאר. אז lg⁡∣QM∣≤lg⁡N≤∣⟨M⟩∣\lg|Q_M|\le \lg N\le|\langle M\rangle| — מספר המצבים אינו עולה על NN, ולוגריתם של מספר אינו עולה על אורך הקידוד שלו. ואז, מהסופר־לינאריות, ∣⟨M⟩∣≤f(∣⟨M⟩∣)|\langle M\rangle|\le f(|\langle M\rangle|).
  • lg⁡∣ΓM∣⋅spaceM(⟨M⟩) ≤ lg⁡∣ΓM∣⋅f(∣⟨M⟩∣)lg⁡∣ΓM∣=f(∣⟨M⟩∣)\lg|\Gamma_M|\cdot \mathrm{space}_M(\langle M\rangle)\ \le\ \lg|\Gamma_M|\cdot\dfrac{f(|\langle M\rangle|)}{\lg|\Gamma_M|}=f(|\langle M\rangle|). כאן מצטמצם ה-lg⁡∣ΓM∣\lg|\Gamma_M| — זו כל הסיבה שהוא הוכנס להגדרת השפה מלכתחילה.
  • lg⁡spaceM(⟨M⟩)≤spaceM(⟨M⟩)≤f(∣⟨M⟩∣)\lg \mathrm{space}_M(\langle M\rangle)\le \mathrm{space}_M(\langle M\rangle)\le f(|\langle M\rangle|) — לוגריתם של מספר אינו עולה על המספר, והמקום כבר חסום ב-ff (שהרי lg⁡∣ΓM∣≥1\lg|\Gamma_M|\ge1).

בסך הכול

timeM(⟨M⟩) ≤ 2 f(∣⟨M⟩∣)+f(∣⟨M⟩∣)+f(∣⟨M⟩∣) = 23f(∣⟨M⟩∣),\mathrm{time}_M(\langle M\rangle)\ \le\ 2^{\,f(|\langle M\rangle|)+f(|\langle M\rangle|)+f(|\langle M\rangle|)}\ =\ 2^{3f(|\langle M\rangle|)},

שזה בדיוק המספר שרשום במונה הזמן. לכן גם מונה הזמן לא ירד מתחת לאפס, הסימולציה מסתיימת, MfM_f מגיעה לשלב 4, מגלה ש-MM דחתה את ⟨M⟩\langle M\rangle — ומקבלת.

כיוון שני: אם ⟨M⟩∉Sf\langle M\rangle\notin S_f אז MfM_f דוחה. שלילת השייכות אומרת: MM אינה דוחה את ⟨M⟩\langle M\rangle, או שהמקום שלה עולה על החסם. נפצל:

  • מקרה 1: spaceM(⟨M⟩)>f(∣⟨M⟩∣)lg⁡∣ΓM∣\mathrm{space}_M(\langle M\rangle)>\dfrac{f(|\langle M\rangle|)}{\lg|\Gamma_M|}. אז במהלך הסימולציה מונה המקום ירד מתחת לאפס, ולפי שלב 3 MfM_f דוחה.
  • מקרה 2: המקום כן חסום, ולכן בהכרח MM אינה דוחה את ⟨M⟩\langle M\rangle. שימו לב — "אינה דוחה" אינו אותו דבר כמו "מקבלת"; ייתכן גם שהיא לא עוצרת. לכן נפצל שוב:
    • מקרה 2.1: MM אינה עוצרת על ⟨M⟩\langle M\rangle. לפי החסם שלמעלה בקונטרפוזיטיב: אם המקום חסום ב-f/lg⁡∣ΓM∣f/\lg|\Gamma_M| ומספר הצעדים עולה על 23f(∣⟨M⟩∣)2^{3f(|\langle M\rangle|)}, אז חייבת לחזור קונפיגורציה, ולכן המכונה בלולאה אינסופית. במקרה שלנו המכונה אכן לא עוצרת, ולכן היא בהכרח תעבור את 23f(∣⟨M⟩∣)2^{3f(|\langle M\rangle|)} צעדים, מונה הזמן ירד מתחת לאפס, ו-MfM_f דוחה.
    • מקרה 2.2: MM עוצרת ואינה דוחה, כלומר מקבלת. אז המונים לא נגמרים (כמו בחשבון הכיוון הראשון), הסימולציה מסתיימת, MfM_f מגיעה לשלב 4, מגלה ש-MM קיבלה — ודוחה.

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

בשני הכיוונים יחד: MfM_f מכריעה את SfS_f.

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

  • קיים α>0\alpha>0 כך שלכל מכונה MM ניתן לחשב את f(∣⟨M⟩∣)lg⁡∣ΓM∣\dfrac{f(|\langle M\rangle|)}{\lg|\Gamma_M|} במקום שאינו עולה על α⋅f(∣⟨M⟩∣)\alpha\cdot f(|\langle M\rangle|). זה נובע מכך ש-ff ישימה במקום (כאן, ורק כאן, נכנס התנאי השני של המשפט): את lg⁡∣ΓM∣\lg|\Gamma_M| אפשר לקרוא מיידית מהקידוד — זה פשוט אורך הקידוד של תו בודד — והחילוק הוא פונקציה אלמנטרית, ולכן זול.
  • קיים β>0\beta>0 כך שלכל MM ניתן לחשב את 3f(∣⟨M⟩∣)3f(|\langle M\rangle|) במקום שאינו עולה על 3β⋅f(∣⟨M⟩∣)3\beta\cdot f(|\langle M\rangle|). שוב מהישימות במקום.
  • קיים γ>0\gamma>0 כך שלכל MM, המקום שהסימולציה (המבוקרת!) של האוניברסלית דורשת מקיים
spaceMU(⟨M,M⟩) ≤ γ(∣⟨M,M⟩∣+lg⁡∣ΓM∣⋅min⁡{spaceM(⟨M⟩), f(∣⟨M⟩∣)lg⁡∣ΓM∣}).\mathrm{space}_{M_U}(\langle M,M\rangle)\ \le\ \gamma\left(|\langle M,M\rangle|+\lg|\Gamma_M|\cdot\min\left\{\mathrm{space}_M(\langle M\rangle),\ \frac{f(|\langle M\rangle|)}{\lg|\Gamma_M|}\right\}\right).

ה-min⁡\min מופיע מפני שאנחנו קוטעים את האוניברסלית ברגע שמונה המקום נגמר — היא לעולם לא תעבור את הסף, גם אם MM עצמה הייתה זוללת יותר. מכאן, כשבוחרים את האיבר הנוח מתוך ה-min⁡\min:

≤ γ(2∣⟨M⟩∣+f(∣⟨M⟩∣)) ≤ γ(2f(∣⟨M⟩∣)+f(∣⟨M⟩∣)) = 3γ f(∣⟨M⟩∣),\le\ \gamma\left(2|\langle M\rangle|+f(|\langle M\rangle|)\right) \ \le\ \gamma\left(2f(|\langle M\rangle|)+f(|\langle M\rangle|)\right) \ =\ 3\gamma\, f(|\langle M\rangle|),

כאשר במעבר האמצעי השתמשנו שוב בסופר־לינאריות (∣⟨M⟩∣≤f(∣⟨M⟩∣)|\langle M\rangle|\le f(|\langle M\rangle|)).

בסך הכול, לכל מכונה MM:

spaceMf(⟨M⟩) ≤ (α+3β+3γ)⋅f(∣⟨M⟩∣).\mathrm{space}_{M_f}(\langle M\rangle)\ \le\ (\alpha+3\beta+3\gamma)\cdot f(|\langle M\rangle|).

המרה למכונה סטנדרטית. דקות אחת אחרונה: MfM_f רב־סרטית, וההגדרה של DSpace\mathrm{DSpace} מדברת על מכונה סטנדרטית. לפי משפט השקילות בין המודלים קיימת מכונה חד־סרטית M^f\hat M_f, שקולה סמנטית ל-MfM_f, וקיים c^>0\hat c>0 כך שלכל MM:

spaceM^f(⟨M⟩)≤c^⋅spaceMf(⟨M⟩).\mathrm{space}_{\hat M_f}(\langle M\rangle)\le \hat c\cdot \mathrm{space}_{M_f}(\langle M\rangle).

נגדיר c=c^ (α+3β+3γ)c=\hat c\,(\alpha+3\beta+3\gamma). אז M^f\hat M_f מכריעה את SfS_f (כי היא שקולה סמנטית ל-MfM_f), ולכל MM:

spaceM^f(⟨M⟩) ≤ c^ (α+3β+3γ) f(∣⟨M⟩∣) = c⋅f(∣⟨M⟩∣).\mathrm{space}_{\hat M_f}(\langle M\rangle)\ \le\ \hat c\,(\alpha+3\beta+3\gamma)\,f(|\langle M\rangle|)\ =\ c\cdot f(|\langle M\rangle|).

לכן Sf∈DSpace(f)S_f\in\mathrm{DSpace}(f). □\square

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


חלק (ב2): Sf∉DSpace(g)S_f\notin\mathrm{DSpace}(g)

זו תוצאה שלילית, ולכן — הוכחה בשלילה. (המרצה הדגיש שהוא בדרך כלל לא אוהב הוכחות בשלילה, אבל כשרוצים להראות שמשהו לא קורה, ההוכחה בשלילה שם for a reason.)

נניח בשלילה ש-Sf∈DSpace(g)S_f\in\mathrm{DSpace}(g). אז לפי ההגדרה קיימת מכונה MgM_g וקיים קבוע c>0c>0 כך ש:

  • MgM_g מכריעה את SfS_f;
  • לכל מכונה MM: spaceMg(⟨M⟩)≤c⋅g(∣⟨M⟩∣)\mathrm{space}_{M_g}(\langle M\rangle)\le c\cdot g(|\langle M\rangle|).

שימו לב מה יש לנו עכשיו ביד: את MgM_g ואת cc. שניהם קבועים מבחינת ההוכחה מרגע זה ואילך. זו נקודה שתשמש אותנו מיד.

כאן — ורק כאן — נכנס g=o(f)g=o(f). מהגדרת oo קטן,

lim⁡n→∞g(n)f(n)=0.\lim_{n\to\infty}\frac{g(n)}{f(n)}=0.

מהגדרת הגבול, לכל ε>0\varepsilon>0 קיים n0n_0 כך שלכל n≥n0n\ge n_0 מתקיים g(n)/f(n)<εg(n)/f(n)<\varepsilon. נבחר

ε=1c⋅lg⁡∣ΓMg∣.\varepsilon=\frac{1}{c\cdot\lg|\Gamma_{M_g}|}.

הבחירה חוקית מפני ש-cc ו-MgM_g כבר ידועים לנו בנקודה הזו — הם קבועים, לא משתנים שתלויים ב-nn. נקבל: קיים n0∈Nn_0\in\mathbb N כך שלכל n≥n0n\ge n_0,

g(n)f(n)<1c⋅lg⁡∣ΓMg∣.\frac{g(n)}{f(n)}<\frac{1}{c\cdot\lg|\Gamma_{M_g}|}.

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

נגדיר מכונה M^g\hat M_g, זהה ל-MgM_g לחלוטין, אלא שהוספנו לה n0n_0 מצבי סרק — מצבים שלעולם לא נגיע אליהם. אז:

  • M^g\hat M_g פועלת בדיוק כמו MgM_g על כל קלט (לא שינינו שום דבר במצבים הקיימים ולא בפונקציית המעברים המהותית), ובפרט היא מכריעה את SfS_f;
  • ∣⟨M^g⟩∣≥n0|\langle \hat M_g\rangle|\ge n_0 — כי טבלת המעברים גדלה, והקידוד איתה;
  • הכי חשוב: ΓMg=ΓM^g\Gamma_{M_g}=\Gamma_{\hat M_g} — לא נגענו באלפבית. זו הסיבה שניפחנו דווקא במצבים ולא בתווים.

עכשיו נריץ את M^g\hat M_g על הקידוד של עצמה. שני מקרים.

מקרה 1: M^g\hat M_g מקבלת את ⟨M^g⟩\langle\hat M_g\rangle. מכיוון ש-M^g\hat M_g מכריעה את SfS_f, מהקבלה נובע ⟨M^g⟩∈Sf\langle\hat M_g\rangle\in S_f. אבל ההגדרה של SfS_f דורשת, בין השאר, שהמכונה תדחה את הקידוד של עצמה. סתירה.

מקרה 2: M^g\hat M_g דוחה את ⟨M^g⟩\langle\hat M_g\rangle. מהסמנטיקה, ⟨M^g⟩∉Sf\langle\hat M_g\rangle\notin S_f. תנאי השייכות ל-SfS_f הוא "וגם" של שני תנאים; אנחנו יודעים שהתנאי הראשון (דוחה את עצמה) כן מתקיים, ולכן בהכרח התנאי השני נכשל:

spaceM^g(⟨M^g⟩) > f(∣⟨M^g⟩∣)lg⁡∣ΓM^g∣.(∗)\mathrm{space}_{\hat M_g}(\langle\hat M_g\rangle)\ >\ \frac{f(|\langle\hat M_g\rangle|)}{\lg|\Gamma_{\hat M_g}|}. \tag{$*$}

מצד שני נחשב את אותו גודל מלמעלה. ראשית, מכיוון ש-M^g\hat M_g פועלת בדיוק כמו MgM_g (הקלט לא משתנה, רק המכונה שמריצה אותו):

spaceM^g(⟨M^g⟩)=spaceMg(⟨M^g⟩)≤c⋅g(∣⟨M^g⟩∣).\mathrm{space}_{\hat M_g}(\langle\hat M_g\rangle)=\mathrm{space}_{M_g}(\langle\hat M_g\rangle)\le c\cdot g(|\langle\hat M_g\rangle|).

שנית, מכיוון ש-∣⟨M^g⟩∣≥n0|\langle\hat M_g\rangle|\ge n_0 — וזו בדיוק הסיבה שניפחנו — מותר להציב באי־שוויון הגבול:

g(∣⟨M^g⟩∣)f(∣⟨M^g⟩∣)<1c⋅lg⁡∣ΓMg∣⟹g(∣⟨M^g⟩∣)<f(∣⟨M^g⟩∣)c⋅lg⁡∣ΓMg∣=f(∣⟨M^g⟩∣)c⋅lg⁡∣ΓM^g∣,\frac{g(|\langle\hat M_g\rangle|)}{f(|\langle\hat M_g\rangle|)}<\frac{1}{c\cdot\lg|\Gamma_{M_g}|} \quad\Longrightarrow\quad g(|\langle\hat M_g\rangle|)<\frac{f(|\langle\hat M_g\rangle|)}{c\cdot\lg|\Gamma_{M_g}|} =\frac{f(|\langle\hat M_g\rangle|)}{c\cdot\lg|\Gamma_{\hat M_g}|},

כאשר המעבר האחרון הוא רק החלפת ΓMg\Gamma_{M_g} ב-ΓM^g\Gamma_{\hat M_g} — מותרת כי הם אותו אלפבית בדיוק. נכפיל ב-cc:

spaceM^g(⟨M^g⟩) ≤ c⋅g(∣⟨M^g⟩∣) < f(∣⟨M^g⟩∣)lg⁡∣ΓM^g∣.\mathrm{space}_{\hat M_g}(\langle\hat M_g\rangle)\ \le\ c\cdot g(|\langle\hat M_g\rangle|)\ <\ \frac{f(|\langle\hat M_g\rangle|)}{\lg|\Gamma_{\hat M_g}|}.

יחד עם (∗)(*) קיבלנו

f(∣⟨M^g⟩∣)lg⁡∣ΓM^g∣ < spaceM^g(⟨M^g⟩) < f(∣⟨M^g⟩∣)lg⁡∣ΓM^g∣,\frac{f(|\langle\hat M_g\rangle|)}{\lg|\Gamma_{\hat M_g}|}\ <\ \mathrm{space}_{\hat M_g}(\langle\hat M_g\rangle)\ <\ \frac{f(|\langle\hat M_g\rangle|)}{\lg|\Gamma_{\hat M_g}|},

כלומר גודל גדול ממש מעצמו. סתירה.

בשני המקרים הגענו לסתירה, ולכן ההנחה בשלילה בטלה: Sf∉DSpace(g)S_f\notin\mathrm{DSpace}(g). □\square

יחד עם חלק (ב1), Sf∈DSpace(f)∖DSpace(g)S_f\in\mathrm{DSpace}(f)\setminus\mathrm{DSpace}(g), ועם חלק (א) — DSpace(g)⊊DSpace(f)\mathrm{DSpace}(g)\subsetneq\mathrm{DSpace}(f). ■\blacksquare

סיכום הרעיון בשורה אחת: כל מכונה שחסומה במקום O(g)O(g) מקיימת אוטומטית (אחרי ניפוח) את תנאי המקום של SfS_f, ולכן נשארת לכודה בסתירת הלכסון הטהורה — היא לא יכולה לא לקבל ולא לדחות את הקידוד של עצמה. מכונות שמעל הסף בורחות, ולכן SfS_f כן כריעה — רק לא בתקציב gg.


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

תהיינה f,g:N→Nf,g:\mathbb N\to\mathbb N. נניח כי

  1. g=o(f)g=o(f);
  2. ff ישימה בזמן;
  3. ff סופר־לינארית.

אז DTime(g)⊊DTime ⁣(f 2)\mathrm{DTime}(g)\subsetneq\mathrm{DTime}\!\left(f^{\,2}\right).

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

מאיפה צומח הריבוע?

מהמעבר מהמכונה הרב־סרטית למכונה הסטנדרטית. בהוכחה במקום, המכונה MfM_f שבנינו הייתה רב־סרטית, וההמרה למכונה חד־סרטית עלתה לנו רק בקבוע כפלי במקום — ולכן נשארנו ב-DSpace(f)\mathrm{DSpace}(f). בזמן, ההמרה עולה ריבוע.

ולמה ההמרה עולה ריבוע? כי המכונה החד־סרטית צריכה לרוץ קדימה ואחורה על פני כל האזור שבו יושבים "הסרטים" הרב־סרטיים המדומים, ולכן כל צעד מדומה עולה כמו רוחב האזור, כלומר כמו המקום. וכיוון שאין לנו שום מידע על המקום, החסם הטוב ביותר שאפשר לתת למקום הוא הזמן עצמו — ומכפלת זמן במקום נותנת O(t2)O(t^2).

הפער השני: אי אפשר לנפח מצבים

בהוכחה במקום, השלב הקריטי היה ניפוח הקידוד בלי לשנות את האלפבית, כי המכנה בהגדרת השפה היה lg⁡∣ΓM∣\lg|\Gamma_M|. בזמן, המדד של האוניברסלית הוא

timeMU(⟨M,x⟩)=O ⁣(∣⟨M⟩∣⋅timeM(x)),\mathrm{time}_{M_U}(\langle M,x\rangle)=O\!\left(|\langle M\rangle|\cdot\mathrm{time}_M(x)\right),

כלומר על כל צעד מסומלץ משלמים לא lg⁡∣ΓM∣\lg|\Gamma_M| אלא את כל אורך הקידוד ∣⟨M⟩∣|\langle M\rangle|. לכן, כדי שהצמצום יעבוד, השפה המקבילה חייבת להיראות כך:

timeM(⟨M⟩) ≤ f(∣⟨M⟩∣)∣⟨M⟩∣.\mathrm{time}_M(\langle M\rangle)\ \le\ \frac{f(|\langle M\rangle|)}{|\langle M\rangle|}.

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

הפתרון (כפי שנאמר בהרצה כדי לתת כיוון לתרגיל הבית): מגדירים את השפה על קלטים מהצורה ⟨M⟩#k\langle M\rangle\#^k — קידוד של מכונה עם ריפוד מלאכותי של סולמיות. עכשיו אפשר להאריך את הקלט כרצוננו, ובכך להגדיל את nn ולהיכנס לתחום שבו הגבול תופס, בלי להגדיל את ∣⟨M⟩∣|\langle M\rangle| שיושב במכנה. ההגדרה המדויקת של השפה המרופדת תינתן בתרגיל.


משפט 5 (מסקנה): P⊊EXP\mathrm P\subsetneq\mathrm{EXP}

המלכודת שצריך לעקוף. משפט ההיררכיה מדבר על מחלקות עדינות (DTime\mathrm{DTime} של פונקציה בודדת). P\mathrm P ו-EXP\mathrm{EXP} הן מחלקות גסות — איחודים אינסופיים. אי אפשר להפעיל עליהן את המשפט, והפיתוי לעשות זאת "איבר־איבר" שגוי:

הכלה נשמרת תחת איחוד. הכלה ממש — לא.

נגד־דוגמה: A1={1}A_1=\{1\}, A2={2}A_2=\{2\}, C={1,2}C=\{1,2\}. אז A1⊊CA_1\subsetneq C וגם A2⊊CA_2\subsetneq C, אבל A1∪A2=CA_1\cup A_2=C ואינו מוכל ממש ב-CC.

בשפה של המשפטים: מהמשפט קל לקבל "לכל cc קיימת שפה A∈EXPA\in\mathrm{EXP} שאינה ב-DTime(nc)\mathrm{DTime}(n^c)", אבל מה שצריך זה "קיימת שפה A∈EXPA\in\mathrm{EXP} שלכל cc אינה ב-DTime(nc)\mathrm{DTime}(n^c)". שני המשפטים אינם שקולים — השני גורר את הראשון, לא להפך.

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

הוכחה.

שלב 1 — ההכלה P⊆EXP\mathrm P\subseteq\mathrm{EXP}. כבר יש: הראינו P⊆PSPACE\mathrm P\subseteq\mathrm{PSPACE} (שיעור 2) ו-PSPACE⊆EXP\mathrm{PSPACE}\subseteq\mathrm{EXP} (משפט 1 לעיל).

שלב 2 — מעבר למחלקה עדינה מלמטה. יהי c≥1c\ge 1. אז nc=O(2n)n^c=O(2^n) (למעשה אפילו o(2n)o(2^n), אבל OO מספיק כאן), ולכן DTime(nc)⊆DTime(2n)\mathrm{DTime}(n^c)\subseteq\mathrm{DTime}(2^n). זה נכון לכל cc, והכלה רגילה כן נשמרת תחת איחוד, ולכן

P=⋃c≥1DTime(nc) ⊆ DTime(2n).\mathrm P=\bigcup_{c\ge1}\mathrm{DTime}(n^c)\ \subseteq\ \mathrm{DTime}(2^n).

שלב 3 — הפעלת משפט ההיררכיה בזמן. נסמן

g(n)=2n,f(n)=22n.g(n)=2^n,\qquad f(n)=2^{2n}.

נבדוק את שלושת התנאים:

  1. g=o(f)g=o(f): אכן, 2n22n=2−n→n→∞0\dfrac{2^n}{2^{2n}}=2^{-n}\xrightarrow[n\to\infty]{}0.
  2. ff אלמנטרית ולכן ישימה בזמן.
  3. ff סופר־לינארית: 22n≥n2^{2n}\ge n לכל nn.

לכן ממשפט ההיררכיה בזמן,

DTime(2n) ⊊ DTime ⁣(f2)=DTime ⁣((22n)2)=DTime ⁣(24n).\mathrm{DTime}(2^n)\ \subsetneq\ \mathrm{DTime}\!\left(f^2\right)=\mathrm{DTime}\!\left(\left(2^{2n}\right)^2\right)=\mathrm{DTime}\!\left(2^{4n}\right).

שלב 4 — מעבר למחלקה גסה מלמעלה. 24n=O ⁣(2n2)2^{4n}=O\!\left(2^{n^2}\right) (כי 4n≤n24n\le n^2 לכל n≥4n\ge4), ולכן

DTime ⁣(24n)⊆DTime ⁣(2n2)⊆EXP.\mathrm{DTime}\!\left(2^{4n}\right)\subseteq\mathrm{DTime}\!\left(2^{n^2}\right)\subseteq\mathrm{EXP}.

הצעד האחרון הוא פשוט "לקלף את האיחוד" בכיוון ההפוך: 2n22^{n^2} הוא מהצורה 2nc2^{n^c} עם c=2c=2.

שלב 5 — הרכבה.

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

בשרשרת הכלות שבה לפחות חוליה אחת היא הכלה ממש, ההרכבה כולה היא הכלה ממש. לכן P⊊EXP\mathrm P\subsetneq\mathrm{EXP}. ■\blacksquare

משפט 6 (מסקנה מהמסקנה): אחת משתי ההכלות היא ממש — ולא יודעים איזו

אנחנו יודעים:

P⊆PSPACE⊆EXP,P⊊EXP.\mathrm P\subseteq\mathrm{PSPACE}\subseteq\mathrm{EXP},\qquad \mathrm P\subsetneq\mathrm{EXP}.

אילו שתי ההכלות היו שוויונות, היה נובע P=EXP\mathrm P=\mathrm{EXP} — בסתירה למשפט 5. לכן לפחות אחת מבין P⊆PSPACE\mathrm P\subseteq\mathrm{PSPACE} ו-PSPACE⊆EXP\mathrm{PSPACE}\subseteq\mathrm{EXP} היא הכלה ממש.

אבל אף אחד לא יודע איזו. שתי השאלות — האם P=PSPACE\mathrm P=\mathrm{PSPACE} והאם PSPACE=EXP\mathrm{PSPACE}=\mathrm{EXP} — הן בעיות פתוחות. המשפטים האלה ידועים כבר עשרות שנים ולא הצליחו להתקדם. זו טעימה ראשונה מהאופי של התחום: יודעים משהו חלקי, ולא יודעים לחדד אותו.

הערה מהשיעור [02:16:59]: לשאלת סטודנט — לא, מחשבי־על ולא מחשבים קוונטיים לא "יפתרו" את זה. זו שאלה מתמטית על גבולות של מודל חישוב, לא שאלה של כוח חישוב.


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

דוגמה 1: מעקב מספרי אחר המונים של MfM_f

ניקח f(n)=n2f(n)=n^2 (סופר־לינארית וישימה במקום — פולינום). תהי MM מכונה שהקידוד שלה באורך ∣⟨M⟩∣=100|\langle M\rangle|=100 ואלפבית הסרט שלה בגודל ∣ΓM∣=4|\Gamma_M|=4, כלומר lg⁡∣ΓM∣=2\lg|\Gamma_M|=2.

  • מונה המקום מאותחל ל-f(100)2=10,0002=5,000\dfrac{f(100)}{2}=\dfrac{10{,}000}{2}=5{,}000 אפסים.
  • מונה הזמן מאותחל ל-3f(100)=30,0003f(100)=30{,}000 אפסים ומשמאלם 11 — כלומר הייצוג הבינארי של 230,0002^{30{,}000}, ב-30,00130{,}001 תאים בלבד. (באונרית זה היה דורש 230,0002^{30{,}000} תאים — בלתי אפשרי.)
  • אם MM על ⟨M⟩\langle M\rangle כותבת ב-4,0004{,}000 תאים שונים ועוצרת אחרי 10910^9 צעדים: שני המונים שורדים (4,000≤5,0004{,}000\le 5{,}000 ו-109≪230,00010^9\ll 2^{30{,}000}), ולכן MfM_f תסמלץ עד הסוף ותהפוך את התשובה.
  • אם MM כותבת ב-6,0006{,}000 תאים: מונה המקום נגמר, MfM_f דוחה — וזה נכון, כי 6,000>5,0006{,}000>5{,}000 ולכן ⟨M⟩∉Sf\langle M\rangle\notin S_f.
  • אם MM נכנסת ללולאה אינסופית תוך שימוש ב-3,0003{,}000 תאים בלבד: מספר הקונפיגורציות שלה חסום ב-23f(100)2^{3f(100)}, ולכן היא חייבת לחזור על קונפיגורציה. מונה הזמן יגיע ל-00 ו-MfM_f תדחה. אכן ⟨M⟩∉Sf\langle M\rangle\notin S_f, כי מכונה שאינה עוצרת אינה "דוחה".

דוגמה 2: התרגיל שהמרצה נתן לכיתה — לבחור ff ו-gg נכונות

המרצה ביקש מהכיתה למצוא f,gf,g שיוכיחו P⊊EXP\mathrm P\subsetneq\mathrm{EXP}. הכיתה הציעה שלושה ניסיונות, ושניים מהם נכשלו — ההסבר לכישלון חשוב יותר מהתשובה.

  • ניסיון א׳: f(n)=n2f(n)=n^2, g(n)=ng(n)=n. תקין מתמטית: g=o(f)g=o(f), ff ישימה בזמן וסופר־לינארית, ולכן DTime(n)⊊DTime(n4)\mathrm{DTime}(n)\subsetneq\mathrm{DTime}(n^4). אבל חסר תועלת — שתי המחלקות יושבות עמוק בתוך P\mathrm P ואינן אומרות דבר על EXP\mathrm{EXP}.
  • ניסיון ב׳: f(n)=2nf(n)=2^n, g(n)=ng(n)=n. מקבלים DTime(n)⊊DTime(22n)\mathrm{DTime}(n)\subsetneq\mathrm{DTime}(2^{2n}). שוב תקין ושוב חסר תועלת: DTime(n)\mathrm{DTime}(n) אינו מכיל את כל P\mathrm P, ולכן לא הוכחנו כלום על P\mathrm P.
  • ניסיון ג׳ (הכיוון הנכון): g(n)=2ng(n)=2^n. קודם מראים ש-P⊆DTime(2n)\mathrm P\subseteq\mathrm{DTime}(2^n) — כי לכל cc, nc=O(2n)n^c=O(2^n), והכלה נשמרת תחת איחוד. עכשיו DTime(2n)\mathrm{DTime}(2^n) היא מחלקה עדינה שמכילה את כל P\mathrm P, ואפשר להפעיל עליה את המשפט.

תרגיל־בזק שנשאל בכיתה: האם מותר לקחת f(n)=2n+1f(n)=2^{n+1}? לא. g(n)f(n)=2n2n+1=12\dfrac{g(n)}{f(n)}=\dfrac{2^n}{2^{n+1}}=\dfrac12, שאינו שואף ל-00. לכן g≠o(f)g\ne o(f) והמשפט אינו חל. צריך פער בסדר גודל, לא פער בקבוע — וזו בדיוק הנקודה שקבוע כפלי בחזקה כן משנה סדר גודל, אבל קבוע כפלי מחוץ לחזקה לא.

דוגמה 3: היכן הטיעון "איבר־איבר" נשבר

ההוכחה השגויה: "לכל c≥1c\ge 1 מתקיים nc=o(2nc)n^c=o(2^{n^c}), ולכן DTime(nc)⊊DTime(2nc)\mathrm{DTime}(n^c)\subsetneq\mathrm{DTime}(2^{n^c}); מכיוון שזה נכון לכל cc, גם האיחודים מקיימים P⊊EXP\mathrm P\subsetneq\mathrm{EXP}."

מה בדיוק שגוי: מה שהוכחנו הוא "לכל cc קיימת Ac∈EXPA_c\in\mathrm{EXP} שאינה ב-DTime(nc)\mathrm{DTime}(n^c)". ה-AcA_c הזו תלויה ב-cc. ייתכן ש-A1∈DTime(n2)A_1\in\mathrm{DTime}(n^2), ש-A2∈DTime(n3)A_2\in\mathrm{DTime}(n^3), וכן הלאה — ואז כל אחת מהן בכל זאת נמצאת ב-P\mathrm P, ולא הוכחנו כלום. מה שצריך הוא שפה אחת שבורחת מכל המחלקות בבת אחת, וזה בדיוק מה שהמעבר דרך DTime(2n)\mathrm{DTime}(2^n) נותן: שפה אחת שאינה ב-DTime(2n)⊇P\mathrm{DTime}(2^n)\supseteq\mathrm P.

זו הנקודה שהודגמה בכיתה עם {1}⊊{1,2}\{1\}\subsetneq\{1,2\} ו-{2}⊊{1,2}\{2\}\subsetneq\{1,2\} אבל {1}∪{2}={1,2}\{1\}\cup\{2\}=\{1,2\}.

דוגמה 4: יישום ישיר של משפט ההיררכיה במקום

DSpace(n) ⊊ DSpace(n2).\mathrm{DSpace}(n)\ \subsetneq\ \mathrm{DSpace}(n^2).

בדיקת התנאים: g(n)=ng(n)=n, f(n)=n2f(n)=n^2; nn2=1n→0\dfrac{n}{n^2}=\dfrac1n\to0 ולכן g=o(f)g=o(f); ff פולינום ולכן ישימה במקום; f(n)=n2≥nf(n)=n^2\ge n ולכן סופר־לינארית. שלושת התנאים מתקיימים, המשפט חל. שימו לב שבמקום אין ריבוע — התוצאה היא DSpace(f)\mathrm{DSpace}(f) ולא DSpace(f2)\mathrm{DSpace}(f^2). אילו הייתה זו שאלת זמן, היינו מקבלים רק DTime(n)⊊DTime(n4)\mathrm{DTime}(n)\subsetneq\mathrm{DTime}(n^4).

תרגיל בית שניתן בכיתה

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


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

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

  • [00:31:45] מה זה "מוכל ממש". A⊊BA\subsetneq B פירושו A⊆BA\subseteq B וגם B⊈AB\not\subseteq A. שימו לב ש"מוכל ממש" לא אומר "הרבה יותר גדול" — הוא אומר רק "יותר". שאלת סטודנטית שהובילה להבהרה הזו.

  • [01:15:51] איך קוראים הוכחה בסדר הגודל הזה — טכניקת ה-expand/collapse. בסופו של דבר ההוכחה מצטמצמת ל: "נתבונן ב-M^f\hat M_f ובקבוע cc; היא מכריעה את SfS_f במקום ≤c⋅f\le c\cdot f; לכן Sf∈DSpace(f)S_f\in\mathrm{DSpace}(f)." זה המבנה, והוא סטנדרטי לגמרי. אחר כך פותחים בנפרד את "למה היא מכריעה" ואת "למה זה המקום". נכנסים ויוצאים מהרמות כמה פעמים — מפרקים ומרכיבים. זו ההוכחה הארוכה הראשונה מתוך שתיים בקורס.

  • [01:44:47] מה לעשות כשנתקעים. אל תיתקעו על מעבר שלא הבנתם ותעצרו. הניחו שהמעבר נכון, המשיכו הלאה, וסמנו נקודה. בפעם הראשונה יהיו חמש־שש נקודות כאלה; בפעם השנייה שלוש; ובסוף מגיעים לשעת קבלה עם "את המעבר הזה ואת המעבר הזה לא הבנתי" — במקום "לא הבנתי כלום". זו תחושה אחרת לגמרי, ופחות תסכול.

  • [01:19:37] מתי כן להוכיח בשלילה. המרצה: "אני לא אוהב שמכניסים הוכחה בשלילה לכל מקום סתם. אבל כשאני רוצה להוכיח שמשהו לא קורה — זו הוכחה בשלילה par excellence." חלק (ב2) הוא בדיוק המקרה הזה.

  • [01:55:26] מה נדרש למבחן. לשחזר את כל ההוכחה מאפס — לא. להכיר את ההוכחה ולהגיב לשינויים בה ("אם אשנה את הרכיב הזה, איך ההוכחה משתנה?") — כן, בהחלט. זו הצהרה מפורשת: צריך להכיר את ההוכחה הזאת למבחן.

  • [00:36:14] אל תחפשו מאיפה השפה SfS_f צצה. בהרצה הראשונה השפה "הונחתה" בכוונה, והמרצה ביקש לשאול רק "האם ההגדרה ברורה" ולא "מאיפה היא באה". ההערה שכן ניתנה: הדבר מריח חישוביות — המכונה שדוחה את הקידוד של עצמה היא בדיוק "הקלקול" שהכנסנו תמיד בלכסון; רכיב המקום הוא מה שקושר את זה לשייכות ל-DSpace(f)\mathrm{DSpace}(f). ההסבר המלא (למה השפה הזאת ולמה החלוקה ב-lg⁡∣ΓM∣\lg|\Gamma_M|) ניתן בהרצה המקבילה ומופיע כאן בסעיף ההגדרות.

  • [01:02:27] מלכודת בחשבון המקום. כשמחשבים כמה מקום מונה תופס — לא מספיק לספור את המקום שהמונה תופס בסוף; צריך לספור גם את המקום שנדרש כדי לחשב את הערך שנכתב. זו בדיוק הסיבה לתנאי הישימות במקום, ולכן זו נקודה שקל מאוד להחמיץ.

  • [01:38:12] למה דווקא מצבי סרק. שאלת סטודנטית: אפשר להוסיף תווים לאלפבית כדי לנפח את הקידוד? לא — זה משנה את ΓM\Gamma_M, ואז המכנה lg⁡∣ΓM∣\lg|\Gamma_M| בהגדרת השפה זז יחד איתו, וכל הטריק קורס. מצבי סרק מגדילים את טבלת המעברים ולכן את אורך הקידוד, אבל אינם נוגעים באלפבית.

  • [01:23:22] למה מותר לבחור ε=1clg⁡∣ΓMg∣\varepsilon=\frac{1}{c\lg|\Gamma_{M_g}|}. כי בנקודה שבה אנחנו בהוכחה, cc ו-MgM_g כבר ידועים לנו — הם התקבלו מההנחה בשלילה. זהו שימוש נכון בסדר של המשתנים: כל פעם שמקבלים משתנה חדש מותר להשתמש בו הלאה.


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

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

  • מקור: ההקלטה השנייה. הפער: ההסבר האינטואיטיבי המלא — למה בכלל SfS_f היא השפה הנכונה, איך התנאי השני מפצל את עולם המכונות, ומאיפה בדיוק צומחת החלוקה ב-lg⁡∣ΓM∣\lg|\Gamma_M| (מהמדדים של המכונה האוניברסלית) — אינו מופיע בסיכום כלל, וגם בהקלטה הראשונה הוא הוזכר בשתי מילים בלבד. ההכרעה: שוחזר במלואו והוכנס לסעיף ההגדרות (הגדרה 4), כי בלעדיו ההוכחה נראית שרירותית.

  • מקור: ההקלטה השנייה. הפער: ההסבר על ההבדל בהוכחת משפט ההיררכיה בזמן — שהחלוקה שם היא ב-∣⟨M⟩∣|\langle M\rangle| ולא ב-lg⁡∣ΓM∣\lg|\Gamma_M|, ושלכן טריק מצבי הסרק נכשל ויש לרפד את הקלט בסולמיות — אינו בסיכום. ההכרעה: הוכנס כתת־סעיף במשפט 4, כי זהו בדיוק תרגיל הבית שניתן.

  • מקור: ההקלטה הראשונה. הפער: הפירוק המלא של הכיוון "⟨M⟩∉Sf⇒Mf\langle M\rangle\notin S_f\Rightarrow M_f דוחה" לשלושה מקרים, ובפרט המקרה שבו MM אינה עוצרת (ולכן "אינה דוחה" אך גם "אינה מקבלת"), נעשה רק בהקלטה השנייה; ההקלטה הראשונה קיצרה אותו, והסיכום מציג רק את הכיוון ההפוך. ההכרעה: הובא הפירוט המלא, כולל השימוש בקונטרפוזיטיב של חסם ספירת הקונפיגורציות.

  • מקור: הסיכום, עמוד 6. הפער: בשרשרת המסקנה נרשם DTime(2n)⊊DTime(24n)\mathrm{DTime}(2^n)\subsetneq\mathrm{DTime}(2^{4n}) ולידו הערה בכחול שמחליפה את 4n4n ב-n2n^2, כך שקשה לקרוא האם החוליה היא 24n2^{4n} או 2n22^{n^2}. ההכרעה: מתמטית שתי החוליות נכונות ושתיהן נחוצות — 24n2^{4n} הוא מה שמשפט ההיררכיה נותן (f2f^2 עבור f=22nf=2^{2n}), ו-2n22^{n^2} הוא הצעד הנוסף שמכניס אותנו ל-EXP\mathrm{EXP}. הוצגו שתיהן בנפרד. ההקלטה [02:09:24] מאשרת בדיוק את הסדר הזה.

  • מקור: התמלול האוטומטי. הפער: הכתוביות משבשות באופן שיטתי את הפונקציות: 2 בn עבור 2n2^n, f של n ש 2n עבור f(n)=22nf(n)=2^{2n}, לogג גם הm עבור lg⁡∣ΓM∣\lg|\Gamma_M|, סף/עסף עבור SfS_f, דdספיס עבור DSpace\mathrm{DSpace}. ההכרעה: כל החסמים אומתו מול הסיכום בכתב יד, לא מול הכתוביות; הסיכום הוא הקובע בכל חוסר התאמה נומרי.

  • מקור: הסיכום, עמוד 1 ועמוד 2. הפער: שתי הערות שוליים בכחול אינן קריאות במלואן — האחת ליד תנאי (2) של ההגדרה "ישימה במקום" (משהו בנוסח "המקום שצריך לחשב אותה לא גדול משמעותית מהפלט; הערת OO — מותר גם קצת יותר מקום מהפלט"), והשנייה ליד סימן ה-≤\le בהגדרת SfS_f (משהו בנוסח "אולי כדאי לתת למכונה קצת יותר; מותר גם שוויון"). ההכרעה: התוכן המהותי של שתיהן שוחזר מההקלטה [00:21:39] ומופיע בגוף; המילה־במילה לא שוחזרה ואינה נדרשת.

  • מקור: הסיכום, עמוד 7. הפער: העמוד כמעט ריק — רק כותרת בכחול (שאותיותיה מטושטשות) ושתי שורות: P⊆PSPACE⊆EXP\mathrm P\subseteq\mathrm{PSPACE}\subseteq\mathrm{EXP}, P⊊EXP\mathrm P\subsetneq\mathrm{EXP}, והערה "אחת משתי ההכלות היא הכלה ממש. לא יודעים איזו". ההכרעה: התוכן ברור ומאושר משתי ההקלטות; נוסח כמשפט 6 עם הצדקה מלאה.

  • מקור: ההקלטה הראשונה [01:04:09] וההקלטה השנייה [00:49:15]. הפער: שמות הקבועים בחשבון המקום שונים בין המסירות (α,β,γ\alpha,\beta,\gamma מול C1,C2,C3C_1,C_2,C_3), וגם הסידור שונה מעט. ההכרעה: אומצה מערכת הסימונים של הסיכום (α+3β+3γ\alpha+3\beta+3\gamma, ואז c^\hat c להמרה ו-c=c^(α+3β+3γ)c=\hat c(\alpha+3\beta+3\gamma)), כדי שהקורא יוכל לעקוב מול הדפים.

  • מקור: הסיכום. הפער: הסיכום אינו כולל את נגד־הדוגמה {1},{2},{1,2}\{1\},\{2\},\{1,2\} להתנהגות "הכלה ממש" תחת איחוד, ואינו כולל את ההסבר מדוע חייבים לעבור דרך מחלקות עדינות. ההכרעה: הוכנס מההקלטות (שתיהן הביאו אותו), כי זו המלכודת המרכזית ביישום המשפט.


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

מה חייבים לזכור בעל־פה

  1. הגדרת ישימות במקום/בזמן: קיימת MM מעל {0}\{0\} עם M(0n)=0f(n)M(0^n)=0^{f(n)} וגם spaceM(0n)=O(f(n))\mathrm{space}_M(0^n)=O(f(n)) (או time\mathrm{time}).
  2. משפט ההיררכיה במקום: g=o(f)g=o(f), ff ישימה במקום, ff סופר־לינארית ⇒\Rightarrow DSpace(g)⊊DSpace(f)\mathrm{DSpace}(g)\subsetneq\mathrm{DSpace}(f).
  3. משפט ההיררכיה בזמן: אותם תנאים עם ישימות בזמן ⇒\Rightarrow DTime(g)⊊DTime(f 2)\mathrm{DTime}(g)\subsetneq\mathrm{DTime}(f^{\,2}). הריבוע רק בזמן.
  4. השפה: Sf={⟨M⟩∣M rejects ⟨M⟩ ∧ spaceM(⟨M⟩)≤f(∣⟨M⟩∣)/lg⁡∣ΓM∣}S_f=\{\langle M\rangle\mid M \text{ rejects } \langle M\rangle\ \wedge\ \mathrm{space}_M(\langle M\rangle)\le f(|\langle M\rangle|)/\lg|\Gamma_M|\}.
  5. חסם הקונפיגורציות: timeM(x)≤2lg⁡∣QM∣+lg⁡∣ΓM∣⋅spaceM(x)+lg⁡spaceM(x)\mathrm{time}_M(x)\le 2^{\lg|Q_M|+\lg|\Gamma_M|\cdot\mathrm{space}_M(x)+\lg\mathrm{space}_M(x)}, ובתנאי השפה זה מצטמצם ל-23f(∣⟨M⟩∣)2^{3f(|\langle M\rangle|)}.
  6. המסקנות: PSPACE⊆EXP\mathrm{PSPACE}\subseteq\mathrm{EXP}; P⊊EXP\mathrm P\subsetneq\mathrm{EXP}; ולכן אחת מ-P⊆PSPACE\mathrm P\subseteq\mathrm{PSPACE}, PSPACE⊆EXP\mathrm{PSPACE}\subseteq\mathrm{EXP} היא ממש — לא ידוע איזו.

היכן כל תנאי נכנס — טבלת שליטה

התנאיהיכן בדיוק הוא משמש
ff ישימה במקוםרק בחשבון המקום: כדי ש-MfM_f תוכל לחשב ולכתוב את שני המונים בתוך O(f)O(f) מקום (הקבועים α,β\alpha,\beta).
f(n)≥nf(n)\ge n (סופר־לינארית)פעמיים: לבלוע את lg⁡∥QM∥≤∥⟨M⟩∥\lg\|Q_M\|\le\|\langle M\rangle\| בחשבון הזמן, ולבלוע את 2∥⟨M⟩∥2\|\langle M\rangle\| בחשבון המקום של הסימולציה.
g=o(f)g=o(f)רק בחלק (ב2): כדי לבחור ε=1clg⁡∥ΓMg∥\varepsilon=\frac{1}{c\lg\|\Gamma_{M_g}\|} ולקבל את n0n_0 שממנו והלאה אי־השוויון תופס.
lg⁡∥ΓM∥\lg\|\Gamma_M\| במכנהכדי שהפקטור של האוניברסלית יצטמצם והחסם יהיה O(f)O(f) בלתי תלוי ב-MM.
מצבי סרק (ולא תווים)כדי להגדיל את ∥⟨Mg⟩∥\|\langle M_g\rangle\| מעל n0n_0 בלי לשנות את Γ\Gamma שיושב במכנה.

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

  • קבוע כפלי בחזקה אינו זניח. 22n≠Θ(2n)2^{2n}\ne\Theta(2^n). אי אפשר "להעיף" אותו כמו קבוע כפלי רגיל; מגדילים את החזקה של nn באחד ובולעים אותו.
  • הכלה ממש אינה נשמרת תחת איחוד. לעולם אל תפעילו את משפט ההיררכיה איבר־איבר על מחלקה גסה. עברו דרך שתי מחלקות עדינות באמצע.
  • "אינה דוחה" ≠\ne "מקבלת". בפיצול המקרים חייבים לטפל גם באפשרות שהמכונה אינה עוצרת.
  • oo קטן ולא OO גדול. f(n)=2n+1f(n)=2^{n+1} מול g(n)=2ng(n)=2^n נכשל, כי היחס שואף ל-12\frac12 ולא ל-00.
  • המרת מודל. במקום — קבוע כפלי; בזמן — ריבוע. זו הסיבה היחידה ל-f2f^2 במשפט ההיררכיה בזמן.
  • גם המקום לחישוב נספר, לא רק המקום שהתוצאה תופסת.

צ׳ק־ליסט: מה סטודנט צריך לדעת לעשות אחרי השיעור

  • לנסח את שני משפטי ההיררכיה במדויק, כולל כל שלושת התנאים ובלי לבלבל בין ff ל-f2f^2.
  • להגדיר את SfS_f מהזיכרון ולהסביר את התפקיד של כל אחד משני התנאים בהגדרה.
  • לשחזר את בניית MfM_f (ארבעת השלבים, שני המונים, אונרי מול בינארי) ולהסביר מדוע כל שלב שם.
  • לבצע את חשבון הזמן →23f\to 2^{3f} ואת חשבון המקום →(α+3β+3γ)f\to(\alpha+3\beta+3\gamma)f, צעד־צעד, בלי לדלג.
  • להסביר היכן בדיוק נכנס כל אחד משלושת התנאים של המשפט (ראו הטבלה).
  • להסביר מדוע מנפחים במצבי סרק ולא באלפבית, ומדוע הטריק הזה נשבר בגרסת הזמן.
  • להוכיח PSPACE⊆EXP\mathrm{PSPACE}\subseteq\mathrm{EXP} ואת P⊊EXP\mathrm P\subsetneq\mathrm{EXP} מהתחלה ועד הסוף, כולל השלב שעוקף את בעיית האיחוד.
  • להגיב לשינוי בהוכחה: אם משנים רכיב בהגדרת SfS_f או בבניית MfM_f — לזהות איזה שלב בהוכחה נשבר.

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

  • עמוד 1 ועמוד 2 בסיכום: שתי הערות שוליים בכחול קריאות רק בחלקן; התוכן שוחזר מן ההקלטות, הניסוח לא.
  • עמוד 6 בסיכום: בשרשרת המסקנות יש הערה בכחול המחליפה 2^{4n} ב-2^{n²}; שתי החוליות נחוצות ונכונות והובאו בנפרד.
  • שמות הקבועים שונים בין שתי המסירות (α,β,γ מול C₁,C₂,C₃); אומצה מוסכמת הסיכום.