4מכונות טיורינג אי-דטרמיניסטיות

מחליפים את פונקציית המעברים בפונקציה לקבוצת החזקה, מגדירים ריצה אפשרית והכרעה אי-דטרמיניסטית (מקבלים אם קיימת ריצה מקבלת, ובלבד שכל הריצות עוצרות), מודדים זמן ומקום כמקסימום על פני הריצות, ומקבלים את המחלקות NTime, NSpace, NP ואת השאלה P מול NP.

ביטחון: high2 הקלטות5 עמודי סיכוםnondeterminismturing-machinesntimenspacenpcomplexity-classes

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

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

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

סיבוכיות שיעור 4 מטאד.pdf

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

בקצרה

  • מוסיפים למודל שינוי תחבירי אחד בלבד: פונקציית המעברים מחזירה כעת קבוצה של שלשות במקום שלשה יחידה, כלומר δ:Q×Γ→P(Q×Γ×{L,R})\delta:Q\times\Gamma\to P(Q\times\Gamma\times\{L,R\}). כל שאר רכיבי המכונה נשארים כשהיו.
  • השינוי התחבירי הקטן הזה הורס את המושג המרכזי של המודל הקודם: אין יותר "הריצה של MM על xx", יש אוסף הריצות האפשריות של MM על xx. כל הסמנטיקה של השיעור נובעת מכך.
  • תנאי ההכרעה אינו סימטרי, וזו הנקודה שהכי כדאי לזכור: MM מכריעה את AA באופן אי-דטרמיניסטי אם (א) בכל ריצה אפשרית ועל כל קלט היא עוצרת, (ב) אם x∈Ax\in A אז קיימת ריצה מקבלת, (ג) אם x∉Ax\notin A אז בכל ריצה היא דוחה. קבלה היא טענת קיום; דחייה ועצירה הן טענות "לכל".
  • מדדי היעילות הם מקסימום על פני הריצות: timeM(x)\mathrm{time}_M(x) נמדד בריצה אפשרית ארוכה ביותר, ו-spaceM(x)\mathrm{space}_M(x) בריצה אפשרית שכותבת בהכי הרבה תאים — ולא בהכרח באותה ריצה.
  • כל הטענות מהמודל הדטרמיניסטי עוברות כמות שהן, וההוכחות משתנות רק ב"מעטפת": קודם "תהא ריצה אפשרית", מוכיחים לגביה, ואז לוקחים מקסימום. המהות של כל הטיעונים — ספירת קונפיגורציות, "בכל צעד כותבים לכל היותר בתא חדש אחד" — לא זזה.
  • מקבלים את המחלקות NTime(f)\mathrm{NTime}(f), NSpace(f)\mathrm{NSpace}(f) ומעליהן NP\mathrm{NP}, NEXP\mathrm{NEXP}, NPSPACENPSPACE, NEXPSPACENEXPSPACE, ואת ההכלה הקלה P⊆NPP\subseteq \mathrm{NP} — שנובעת מכך שכל מכונה דטרמיניסטית היא מכונה אי-דטרמיניסטית שכל הקבוצות שלה יחידונים.
  • המודל אינו מגדיל את כוח החישוב (מבחינת חישוביות הוא שקול למכונת טיורינג רגילה), אבל הוא עשוי לשנות מהותית את היעילות — וכאן נולדת שאלת PP מול NP\mathrm{NP}.
  • אם אתם צריכים רק דבר אחד מהשיעור הזה: המילים "באופן אי-דטרמיניסטי" אינן קישוט. הן מסמנות שיש עוד כמת שצריך לטפל בו בכל הוכחה.

רקע ותלויות

השיעור נשען על שיעורים 1–3, ובעיקר על ההגדרות. נחזור על מה שנשתמש בו ממש.

מהשיעור 1: מכונת טיורינג דטרמיניסטית

מכונת טיורינג (חד-סרטית, סטנדרטית) היא

M=(Q,qstart,F,Σ,Γ,δ),δ:Q×Γ⟶Q×Γ×{L,R},M=(Q,q_{start},F,\Sigma,\Gamma,\delta),\qquad \delta:Q\times\Gamma\longrightarrow Q\times\Gamma\times\{L,R\},

כאשר QQ קבוצת המצבים הסופית, qstart∈Qq_{start}\in Q המצב ההתחלתי, F⊆QF\subseteq Q קבוצת המצבים הסופיים (במכונת הכרעה F={qaccept,qreject}F=\{q_{accept},q_{reject}\}), Σ\Sigma א"ב הקלט, Γ⊇Σ\Gamma\supseteq\Sigma א"ב העבודה הכולל את התו הריק BB.

תיקון לסיכום. בעמוד 1 בסיכום נכתב M=(Q,F,Σ,Γ,δ)M=(Q,F,\Sigma,\Gamma,\delta) — חמישייה שאין בה מצב התחלתי. בלי qstartq_{start} אי אפשר בכלל לדבר על "הריצה של MM על xx", ולכן הוספנו אותו. זו אותה השמטה שכבר תוקנה בשיעור 1 (ראו שיעור 1). בהקלטה המקבילה המרצה מנה את הרכיבים ככה: מצב התחלתי, מצב מקבל, מצב דוחה, א"ב, ופונקציית המעברים — כלומר בדיוק אותה הגדרה, בפירוק אחר של FF [ב׳ 00:26:23].

מהשיעור 1: מדדי הזמן והמקום

לכל מכונה MM וקלט x∈ΣM∗x\in\Sigma_M^*:

  • timeM(x)\mathrm{time}_M(x) — מספר ההפעלות של פונקציית המעברים בריצת MM על xx;
  • spaceM(x)\mathrm{space}_M(x) — מספר התאים השונים שבהם MM כותבת במהלך הריצה.

שתי ההגדרות האלה מניחות שיש ריצה אחת. בדיוק זו ההנחה שתישבר היום.

מהשיעור 2: המחלקות ושתי טענות שנשתמש בהן

DTime(f)={A∣∃M ∃c>0: M decides A ∧ ∀x: timeM(x)≤c⋅f(∣x∣)},\mathrm{DTime}(f)=\big\{A \mid \exists M\ \exists c>0:\ M \text{ decides } A\ \wedge\ \forall x:\ \mathrm{time}_M(x)\le c\cdot f(|x|)\big\},

ובאותו אופן DSpace(f)\mathrm{DSpace}(f) עם space\mathrm{space}. מעליהן המחלקות הגסות P=⋃c≥1DTime(nc)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).

שתי התוצאות שנשכפל היום:

טענה (מקום חסום בזמן). לכל MM ולכל xx: spaceM(x)≤timeM(x)\mathrm{space}_M(x)\le \mathrm{time}_M(x). הנימוק: בכל צעד המכונה כותבת בתא אחד לכל היותר, ותא חדש נספר פעם אחת.

טענה (זמן חסום אקספוננציאלית במקום). לכל MM קיים c>0c>0 כך שאם MM עוצרת על xx אז timeM(x)≤2 c⋅spaceM(x)\mathrm{time}_M(x)\le 2^{\,c\cdot\mathrm{space}_M(x)}, עם c=lg⁡∣Q∣+lg⁡∣Γ∣+1c=\lg|Q|+\lg|\Gamma|+1.

ההוכחה של השנייה עברה דרך ספירת קונפיגורציות: מספר הקונפיגורציות של MM שמשתמשות ב-ss תאים הוא ∣Q∣⋅∣Γ∣s⋅s≤2(lg⁡∣Q∣+lg⁡∣Γ∣+1)⋅s|Q|\cdot|\Gamma|^{s}\cdot s\le 2^{(\lg|Q|+\lg|\Gamma|+1)\cdot s}, ומכונה שעושה יותר צעדים מזה חוזרת על קונפיגורציה ולכן אינה עוצרת. החישוב הזה לא ישתנה היום — רק העטיפה סביבו (ראו שיעור 2).

מהשיעור 3: משפטי ההיררכיה

DSpace(g)⊊DSpace(f)\mathrm{DSpace}(g)\subsetneq\mathrm{DSpace}(f) כאשר g=o(f)g=o(f) ו-ff ישימה במקום וסופר-לינארית; ובזמן, באותם תנאים, DTime(g)⊊DTime(f2)\mathrm{DTime}(g)\subsetneq\mathrm{DTime}(f^2). נשתמש בהם בתרגיל החימום שנפתח בו את סעיף הדוגמאות (ראו שיעור 3).

למה בכלל מודל כזה

השאלה הזאת לא מופיעה בסיכום, אך היא נאמרה במפורש בהקלטה המקבילה [ב׳ 00:24:19]: המחלקה PP נתפסת כ"מה שאפשר לפתור ביעילות", ויש המון בעיות חשובות שלא יודעים להראות עליהן שהן ב-PP. מסתבר שברגע שמרשים למודל להיות אי-דטרמיניסטי, הרבה מאוד מהן פתאום נפתרות בזמן פולינומי. המודל האי-דטרמיניסטי הוא מודל תיאורטי לחלוטין — אף אחד לא בונה מכונה כזאת — אבל הוא בדיוק הכלי שמאפשר לנסח את השאלה "האם הבעיות האלה קשות באמת".


הגדרות

הגדרה 1: מכונת טיורינג אי-דטרמיניסטית

מכונת טיורינג אי-דטרמיניסטית היא בדיוק כמו מכונת טיורינג, פרט לפונקציית המעברים:

δ:Q×Γ⟶P(Q×Γ×{L,R}),\delta:Q\times\Gamma\longrightarrow P\big(Q\times\Gamma\times\{L,R\}\big),

כאשר P(⋅)P(\cdot) היא קבוצת החזקה. כלומר לכל q∈Qq\in Q ולכל α∈Γ\alpha\in\Gamma: בחישוב דטרמיניסטי δ(q,α)\delta(q,\alpha) הוא שלשה אחת, ובחישוב אי-דטרמיניסטי δ(q,α)\delta(q,\alpha) הוא קבוצה של שלשות.

אינטואיציה. במצב qq כשהראש קורא α\alpha, המכונה מסתכלת בקבוצה δ(q,α)\delta(q,\alpha) ו"בוחרת" ממנה שלשה אחת ופועלת לפיה. איך היא בוחרת? אין תשובה — זה לא חלק מהמודל, ואין פה שום מנגנון פיזיקלי [ב׳ 00:28:25]. המודל רק אומר שכל בחירה כזו היא מהלך לגיטימי.

דוגמה. δ(q1,1)={(q1,1,R),(q2,1,R)}\delta(q_1,1)=\{(q_1,1,R),(q_2,1,R)\} — שתי אפשרויות: להישאר ב-q1q_1 או לעבור ל-q2q_2, בשני המקרים לכתוב 11 ולזוז ימינה.

אי-דוגמה. δ(q1,1)=∅\delta(q_1,1)=\varnothing היא לגיטימית לגמרי בהגדרה (הקבוצה הריקה היא איבר של קבוצת החזקה), אבל היא לא מתארת "מעבר לדחייה" — היא מתארת מצב שאין ממנו המשך. בקורס הזה נעבוד עם הקונבנציה של הסיכום: תא ריק בטבלה או חץ חסר בסרטוט פירושם מעבר ל-qrejectq_{reject} [א׳ 00:15:12], [א׳ 00:41:28].

קונבנציית כתיבה. בטבלת המעברים כותבים בתאים qrejectq_{reject} או qacceptq_{accept} בקיצור, במקום השלשה המלאה {(qreject,α,R)}\{(q_{reject},\alpha,R)\}. גם כשכותבים בתא שלשה יחידה בלי סוגריים מסולסלים — זו עדיין קבוצה בת איבר אחד [א׳ 00:14:42].

הגדרה 2: "לא דטרמיניסטי" מול "אי-דטרמיניסטי"

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

  • חישוב דטרמיניסטי: תוצאת הריצה של האלגוריתם/המכונה היא פונקציה של הקלט בלבד. (המרצה עמד על הניסוח "פונקציה של הקלט" ולא "תלויה בקלט" — זה הניסוח המתמטי [א׳ 00:08:49].) שימו לב שמדובר ב"תוצאת ריצה" ולא ב"פלט", כי ייתכן שאין פלט — המכונה עלולה לא לעצור.
  • not deterministic (בעברית: לא דטרמיניסטי) — כל מודל שבו תוצאת החישוב עשויה להיות תלויה בגורמים נוספים מעבר לקלט.
  • non deterministic (בעברית: אי-דטרמיניסטי) — המודל הספציפי שבו בכל צעד בחישוב יכולות להיות מספר אפשרויות למעבר הבא.

דוגמה שמפרידה בין השניים. אלגוריתם אקראי, שזורק מטבע כדי לקבל החלטות, הוא לא דטרמיניסטי — הפלט תלוי גם בתוצאות המטבע — אבל הוא אינו אי-דטרמיניסטי. נלמד מודלים כאלה בהמשך הקורס [א׳ 00:10:57]. כלומר: אי-דטרמיניסטי גורר לא דטרמיניסטי, לא להפך.

הגדרה 3: ריצה אפשרית

בהינתן מכונה אי-דטרמיניסטית MM וקלט x∈ΣM∗x\in\Sigma_M^*, ריצה אפשרית של MM על xx היא סדרה של שלשות מתוך QM×ΓM×{L,R}Q_M\times\Gamma_M\times\{L,R\} ה"מצייתת" לפונקציית המעברים: כל שלשה בסדרה שייכת לקבוצה שפונקציית המעברים מחזירה בצעד המתאים.

באופן מדויק: אם לפני הצעד ה-ii המכונה נמצאת במצב qq (המצב שברכיב הראשון של השלשה ה-(i−1)(i-1), ובצעד הראשון qstartq_{start}) והראש קורא את התו α\alpha שנמצא כרגע בתא שמתחתיו, אז השלשה ה-ii חייבת להיות איבר של δ(q,α)\delta(q,\alpha). הסדרה עשויה להיות סופית — ואז היא מסתיימת במצב סופי — או אינסופית.

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

מינוח נוסף (מההקלטה המקבילה). סדרת הבחירות שהמכונה עושה במהלך הריצה נקראת תסריט ריצה, וכל תסריט ריצה מתאר ריצה אפשרית אחת [ב׳ 00:31:07]. זה שם נוח לחשוב איתו: הקלט קובע מה המכונה רואה, והתסריט קובע מה היא בוחרת.

ההבדל הסמנטי המרכזי. במודל הדטרמיניסטי, בהינתן MM ו-xx, יכולתי לדבר על הריצה של MM על xx — ביידוע. עכשיו אני יכול לדבר רק על אוסף הריצות האפשריות של MM על xx. זה כל ההבדל, וממנו נובע כל השאר [א׳ 00:25:29].

נקודה עדינה. חלק מהריצות האפשריות עוצרות וחלק לא — על אותו קלט עצמו. נראה את זה מיד בדוגמה 1.

הגדרה 4: הכרעה באופן אי-דטרמיניסטי

תהא AA שפה ותהא MM מכונה אי-דטרמיניסטית מעל אותו א"ב, ΣM=ΣA\Sigma_M=\Sigma_A. נאמר כי MM מכריעה את AA באופן אי-דטרמיניסטי כאשר:

  1. לכל x∈ΣM∗x\in\Sigma_M^* ובכל ריצה אפשרית של MM על xx — MM עוצרת;
  2. לכל x∈ΣM∗x\in\Sigma_M^*: אם x∈Ax\in A אז קיימת ריצה אפשרית של MM על xx המסתיימת במצב מקבל;
  3. לכל x∈ΣM∗x\in\Sigma_M^*: אם x∉Ax\notin A אז בכל ריצה אפשרית של MM על xx — MM דוחה.

ניסוח שקול. בהינתן תנאי 1, אפשר לאחד את 2 ו-3 לכדי

x∈A  ⟺  ∃ ρ a possible run of M on x ending in qaccept.x\in A \iff \exists\,\rho\ \text{a possible run of } M \text{ on } x \text{ ending in } q_{accept}.

הכיוון ⇒\Rightarrow הוא תנאי 2; הכיוון ⇐\Leftarrow הוא הקונטרהפוזיציה של תנאי 3 (אם קיימת ריצה מקבלת, אז לא נכון שכל הריצות דוחות, ולכן x∈Ax\in A) [א׳ 00:32:39], [ב׳ 00:43:09]. בסיכום ובהוכחות נעדיף את הפיצול לשני תנאים, כי ההוכחה ממילא מתפצלת לשני כיוונים.

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

אי-דוגמה חשובה. מכונה שעל קלט אחד יש לה ריצה מקבלת וגם ריצה דוחה עדיין יכולה להכריע שפה — ואפילו נראה כזו מיד. מה שאסור זה ריצה שאינה עוצרת. המרצה הדגיש: "קיימת עליו גם ריצה שתסתיים במצב דוחה, אבל לא אכפת לי — זו ההגדרה, ואין מה להתווכח עם הגדרה" [א׳ 00:45:46].

מגבלת המודל. במודל האי-דטרמיניסטי נעסוק רק במכונות הכרעה. יש הגדרה גם למכונת חישוב אי-דטרמיניסטית, אבל היא מסובכת יותר ולא נעסוק בה [א׳ 00:24:53], [ב׳ 00:44:13].

הדגשה שהמרצה חזר עליה. תמיד לכתוב "מכריעה באופן אי-דטרמיניסטי", גם אם זה נשמע מיותר (מכונה אי-דטרמיניסטית ממילא לא יכולה להכריע אחרת). זה מזכיר לכם שיש בהגדרה תנאי נוסף שצריך לטפל בו [א׳ 00:27:02].

הגדרה 5: מדדי יעילות במודל האי-דטרמיניסטי

תהא MM מכונה אי-דטרמיניסטית ויהי x∈ΣM∗x\in\Sigma_M^*. נגדיר:

  • timeM(x)\mathrm{time}_M(x) — מספר ההפעלות של פונקציית המעברים בריצה אפשרית ארוכה ביותר של MM על xx;
  • spaceM(x)\mathrm{space}_M(x) — מספר התאים השונים שבהם MM כותבת בריצה אפשרית שבה MM כותבת בהכי הרבה תאים.

למה לא ביידוע. בשתי ההגדרות כתוב "ריצה אפשרית ארוכה ביותר" ולא "הריצה הארוכה ביותר" — ייתכנו כמה ריצות שונות שכולן ארוכות ביותר [א׳ 00:58:30]. המדד עצמו, כמובן, מוגדר היטב: הוא המקסימום.

שתי מלכודות.

  1. אם על xx יש ריצה שעוצרת ויש ריצה שאינה עוצרת, אז timeM(x)=∞\mathrm{time}_M(x)=\infty, כי המקסימום נלקח על פני כל הריצות [א׳ 01:00:03].
  2. המקסימום בזמן והמקסימום במקום אינם בהכרח מושגים באותה ריצה. ייתכנו ריצה ארוכה שכותבת במעט תאים וריצה קצרה שכותבת בהרבה. אסור להניח שמדובר באותה ריצה [א׳ 01:22:01], [ב׳ 00:53:53].

למה מקסימום ולא ממוצע או מינימום. התשובה הכנה שניתנה בכיתה: כי כך הוגדר, ואנחנו עובדים לפי ההגדרה. הרציונל שמאחורי ההגדרה הוא התפיסה הרווחת במדעי המחשב של worst case [א׳ 01:00:34].

הגדרה 6: המחלקות NTime(f)\mathrm{NTime}(f) ו-NSpace(f)\mathrm{NSpace}(f)

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

NTime(f)={A  ∣  ∃M ∃c>0: M decides A nondeterministically ∧ ∀x∈ΣM∗: timeM(x)≤c⋅f(∣x∣)}\mathrm{NTime}(f)=\Big\{A \;\Big|\; \exists M\ \exists c>0:\ M \text{ decides } A \text{ nondeterministically}\ \wedge\ \forall x\in\Sigma_M^*:\ \mathrm{time}_M(x)\le c\cdot f(|x|)\Big\} NSpace(f)={A  ∣  ∃M ∃c>0: M decides A nondeterministically ∧ ∀x∈ΣM∗: spaceM(x)≤c⋅f(∣x∣)}\mathrm{NSpace}(f)=\Big\{A \;\Big|\; \exists M\ \exists c>0:\ M \text{ decides } A \text{ nondeterministically}\ \wedge\ \forall x\in\Sigma_M^*:\ \mathrm{space}_M(x)\le c\cdot f(|x|)\Big\}

ה-NN הוא קיצור ל-Non deterministic, בדיוק כמו שה-DD ב-DTime\mathrm{DTime} הוא Deterministic [ב׳ 01:09:14].

איפה בדיוק ההבדל מההגדרה הדטרמיניסטית. ההגדרה נראית זהה, וזה בסדר — אבל שני דברים משתנים ושניהם מוסתרים [א׳ 01:17:24]:

  1. "מכריעה את AA" הוחלף ב"מכריעה את AA באופן אי-דטרמיניסטי", כלומר שלושת התנאים של הגדרה 4 ולא ההכרעה הדטרמיניסטית;
  2. timeM(x)\mathrm{time}_M(x) ו-spaceM(x)\mathrm{space}_M(x) מחביאים מקסימום על פני ריצות אפשריות. זה כבר לא מדד של ריצה אחת.

דוגמה. A={x∈{0,1}∗∣∃y: x=0y1}∈NTime(n)A=\{x\in\{0,1\}^*\mid \exists y:\ x=0y1\}\in\mathrm{NTime}(n) — נוכיח בהמשך שהמכונה מדוגמה 2 מכריעה אותה באופן אי-דטרמיניסטי, וכל ריצה שלה אורכה ≤∣x∣+1\le|x|+1, כלומר c=2c=2 ו-f(n)=nf(n)=n מתאימים.

הגדרה 7: המחלקות הגסות האי-דטרמיניסטיות

NP=⋃c≥1NTime(nc),NEXP=⋃c≥1NTime ⁣(2nc),\mathrm{NP}=\bigcup_{c\ge1}\mathrm{NTime}(n^c),\qquad \mathrm{NEXP}=\bigcup_{c\ge1}\mathrm{NTime}\!\left(2^{n^c}\right), NPSPACE=⋃c≥1NSpace(nc),NEXPSPACE=⋃c≥1NSpace ⁣(2nc).NPSPACE=\bigcup_{c\ge1}\mathrm{NSpace}(n^c),\qquad NEXPSPACE=\bigcup_{c\ge1}\mathrm{NSpace}\!\left(2^{n^c}\right).

כמו במודל הדטרמיניסטי, שייכות לאיחוד היא טענת קיום: A∈NPA\in \mathrm{NP} פירושו שקיים c≥1c\ge1 שעבורו A∈NTime(nc)A\in\mathrm{NTime}(n^c), וכשמוכיחים שייכות ל-NP\mathrm{NP} צריך "לקלף" קודם את הקיים הזה.


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

משפט 1: המכונה מדוגמה 1 אינה מכריעה אף שפה

תהא MM המכונה מדוגמה 1 (הטבלה המלאה מופיעה בסעיף הדוגמאות; הרכיב הקריטי הוא δ(q2,B)={qaccept,(q2,B,R)}\delta(q_2,B)=\{q_{accept},(q_2,B,R)\}). אז אין שפה AA ש-MM מכריעה באופן אי-דטרמיניסטי.

הוכחה. די להראות שתנאי 1 בהגדרה 4 נכשל, כלומר:

∃ x∈ΣM∗ ∃ ρ a possible run of M on x that never halts.\exists\, x\in\Sigma_M^*\ \exists\,\rho\ \text{a possible run of } M \text{ on } x\ \text{that never halts}.

ניקח x=0001x=0001. נתבונן בסדרה האינסופית

(q1,0,R),(q1,0,R),(q1,0,R),(q2,1,R),(q2,B,R),(q2,B,R),(q2,B,R),…(q_1,0,R),(q_1,0,R),(q_1,0,R),(q_2,1,R),(q_2,B,R),(q_2,B,R),(q_2,B,R),\dots

נבדוק שזו אכן ריצה אפשרית: השלשה הראשונה שייכת ל-δ(qstart,0)={(q1,0,R)}\delta(q_{start},0)=\{(q_1,0,R)\}; שתי הבאות שייכות ל-δ(q1,0)={(q1,0,R)}\delta(q_1,0)=\{(q_1,0,R)\}; הרביעית שייכת ל-δ(q1,1)={(q1,1,R),(q2,1,R)}\delta(q_1,1)=\{(q_1,1,R),(q_2,1,R)\}; ומכאן ואילך הראש נמצא מימין לקלט וקורא BB, והמכונה במצב q2q_2, ולכן כל שלשה שייכת ל-δ(q2,B)={qaccept,(q2,B,R)}\delta(q_2,B)=\{q_{accept},(q_2,B,R)\}. אחרי כל צעד כזה הראש זז ימינה וקורא שוב BB והמצב נשאר q2q_2, ולכן אפשר להמשיך כך לנצח.

מצאנו קלט שעליו קיימת ריצה אפשרית שאינה עוצרת, ולכן תנאי 1 אינו מתקיים עבור אף שפה AA. ■\blacksquare

הערה: שימו לב לניסוח המדויק, שהמרצה התעכב עליו בכיתה [א׳ 00:34:13]: קודם מציגים את הקלט ורק אחר כך את הריצה. "קיימת ריצה על קלט" בלי להציג את הקלט הוא ניסוח חסר משמעות, כי ריצה מוגדרת רק ביחס לקלט מסוים.

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

משפט 2: המכונה המתוקנת מכריעה את A={0y1}A=\{0y1\}

תהא MM המכונה שמתקבלת מדוגמה 1 על ידי מחיקת המעבר (q2,B,R)(q_2,B,R), כלומר δ(q2,B)={qaccept}\delta(q_2,B)=\{q_{accept}\}. נסמן

A={x∈{0,1}∗ ∣ ∃ y∈{0,1}∗: x=0y1}A=\Big\{x\in\{0,1\}^*\ \Big|\ \exists\,y\in\{0,1\}^*:\ x=0y1\Big\}

— שפת כל המחרוזות מעל {0,1}\{0,1\} שמתחילות ב-00 ומסתיימות ב-11. אז MM מכריעה את AA באופן אי-דטרמיניסטי.

הוכחה. נבדוק את שלושת התנאים של הגדרה 4.

תנאי 1 (עצירה בכל ריצה אפשרית). יהי x∈ΣM∗x\in\Sigma_M^* ותהא ρ\rho ריצה אפשרית של MM על xx. נבחין בשתי עובדות על המכונה:

  • בכל אחת משלשות המעבר של MM הכיוון הוא RR, כלומר בכל צעד הראש זז ימינה;
  • כאשר הראש קורא BB, בכל אחד משלושת המצבים qstart,q1,q2q_{start},q_1,q_2 המכונה עוברת למצב סופי: δ(qstart,B)={qreject}\delta(q_{start},B)=\{q_{reject}\}, δ(q1,B)={qreject}\delta(q_1,B)=\{q_{reject}\}, δ(q2,B)={qaccept}\delta(q_2,B)=\{q_{accept}\}.

מכיוון שהראש מתחיל בתא הראשון של הקלט וזז ימינה בכל צעד, אחרי ∣x∣|x| צעדים לכל היותר הוא נמצא בתא הראשון שמימין לקלט וקורא BB (אם לא עצר קודם), ובצעד שאחריו המכונה נכנסת למצב סופי. לכן ρ\rho עוצרת אחרי לכל היותר ∣x∣+1|x|+1 צעדים. מכיוון ש-ρ\rho הייתה ריצה אפשרית שרירותית, בכל ריצה אפשרית MM עוצרת.

תיקון: בסיכום נכתב "לא יותר מ-∣x∣|x| צעדים", וגם בהרצאה נאמר "בדיוק אורך של xx צעדים" [א׳ 00:40:57]. זו טעות של אחד: הצעד שבו הראש קורא את התו הריק ועובר למצב סופי הוא הפעלה נוספת של δ\delta. הסיכום עצמו מדגים זאת — הריצה שלו על x=0001x=0001 (אפשרות 1) מונה ארבע שלשות ואז qrejectq_{reject}, כלומר חמש הפעלות של δ\delta עבור ∣x∣=4|x|=4. החסם הנכון הוא ∣x∣+1|x|+1. הוא כמובן אינו משנה דבר במסקנות.

תנאי 2 (x∈A⇒x\in A\Rightarrow קיימת ריצה מקבלת). נניח x∈Ax\in A. אז קיים y∈{0,1}∗y\in\{0,1\}^* כך ש-x=0y1x=0y1. נסמן y=a1a2⋯any=a_1a_2\cdots a_n כאשר a1,…,an∈{0,1}a_1,\dots,a_n\in\{0,1\} (ייתכן n=0n=0, ואז x=01x=01). נתבונן בסדרת השלשות

(q1,0,R), (q1,a1,R), (q1,a2,R), …, (q1,an,R), (q2,1,R), qaccept.(q_1,0,R),\ (q_1,a_1,R),\ (q_1,a_2,R),\ \dots,\ (q_1,a_n,R),\ (q_2,1,R),\ q_{accept}.

נוודא שזו ריצה אפשרית:

  • הצעד הראשון: המכונה ב-qstartq_{start} והראש קורא את התו הראשון של xx, שהוא 00; ואכן (q1,0,R)∈δ(qstart,0)(q_1,0,R)\in\delta(q_{start},0).
  • הצעדים 2,…,n+12,\dots,n+1: המכונה ב-q1q_1 והראש קורא את aia_i. אם ai=0a_i=0 אז (q1,0,R)∈δ(q1,0)(q_1,0,R)\in\delta(q_1,0); ואם ai=1a_i=1 אז (q1,1,R)∈δ(q1,1)(q_1,1,R)\in\delta(q_1,1), כי δ(q1,1)\delta(q_1,1) מכילה שתי שלשות ואנחנו בוחרים את זו שנשארת ב-q1q_1. כאן, ורק כאן, אנחנו מנצלים את האי-דטרמיניזם.
  • הצעד n+2n+2: המכונה ב-q1q_1 והראש קורא את התו האחרון של xx, שהוא 11; בוחרים את השלשה השנייה, (q2,1,R)∈δ(q1,1)(q_2,1,R)\in\delta(q_1,1).
  • הצעד האחרון: המכונה ב-q2q_2 והראש נמצא מימין לקלט וקורא BB; ואכן qaccept∈δ(q2,B)q_{accept}\in\delta(q_2,B).

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

תנאי 3 (x∉A⇒x\notin A\Rightarrow כל ריצה דוחה). נניח x∉Ax\notin A. אז xx אינו מתחיל ב-00 או xx אינו מסתיים ב-11. נפצל לשני מקרים (לא בהכרח זרים — די בכך שהם מכסים).

מקרה 1: xx אינו מתחיל ב-00. תהא ρ\rho ריצה אפשרית של MM על xx. בצעד הראשון המכונה נמצאת ב-qstartq_{start} והראש קורא את התו הראשון, שהוא 11 או BB (אם x=εx=\varepsilon). בשני המקרים δ(qstart,⋅)={qreject}\delta(q_{start},\cdot)=\{q_{reject}\}, ולכן כבר בצעד הראשון MM דוחה את xx.

מקרה 2: xx אינו מסתיים ב-11. תהא ρ\rho ריצה אפשרית של MM על xx (המקרה x=εx=\varepsilon כבר טופל, ולכן נניח ∣x∣≥1|x|\ge1).

  • אם ρ\rho אינה מגיעה אל q2q_2: מכיוון שבכל צעד הראש זז ימינה, בסופו של דבר הראש קורא BB כשהמכונה נמצאת ב-qstartq_{start} או ב-q1q_1, ובשני המצבים המעבר על BB הוא ל-qrejectq_{reject}. לכן ρ\rho מסתיימת במצב דוחה.
  • אם ρ\rho מגיעה אל q2q_2: המעבר היחיד שנכנס ל-q2q_2 הוא (q2,1,R)∈δ(q1,1)(q_2,1,R)\in\delta(q_1,1), ולכן בצעד הקודם הראש קרא 11. מכיוון שהנחנו ש-xx אינו מסתיים ב-11, אותו 11 אינו התו האחרון של xx, ולכן בצעד הבא הראש אינו קורא BB אלא תו קלט — 00 או 11. מהטבלה, δ(q2,0)=δ(q2,1)={qreject}\delta(q_2,0)=\delta(q_2,1)=\{q_{reject}\}, ולכן ρ\rho מסתיימת במצב דוחה.

בשני המקרים כל ריצה אפשרית של MM על xx דוחה. משלושת התנאים נובע ש-MM מכריעה את AA באופן אי-דטרמיניסטי. ■\blacksquare

הערה על מבנה ההוכחה [א׳ 00:48:00], [א׳ 00:53:44]. שני דברים שהמרצה עמד עליהם:

  1. אל תקצרו במקרה 1 בטענה "יש רק ריצה אפשרית אחת ולכן סיימנו". זה נכון אבל זו הליכה על חבל דק: ההגדרה דורשת "לכל ריצה", ולכן פותחים ב"תהא ריצה אפשרית" ומוכיחים לגביה. המבנה הוא מה ששומר עליכם מטעויות.
  2. אל תניחו בשלילה כשאין צורך. סטודנט הציע להניח x∉Ax\notin A ובשלילה שקיימת ריצה מקבלת; המרצה השיב שאם רוצים ללכת בכיוון הזה, פשוט מוכיחים ישירות את הגרירה "קיימת ריצה מקבלת ⇒x∈A\Rightarrow x\in A" (הניסוח עם "אם ורק אם"), בלי לעטוף אותה בשלילה. שתי הדרכים שקולות לוגית ולגיטימיות לגמרי; בחרו את זו שנוח יותר להוכיח [א׳ 00:46:16].

משפט 3: מקום חסום בזמן במודל האי-דטרמיניסטי

לכל מכונה אי-דטרמיניסטית MM ולכל x∈ΣM∗x\in\Sigma_M^* מתקיים

spaceM(x) ≤ timeM(x).\mathrm{space}_M(x)\ \le\ \mathrm{time}_M(x).

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

תהא ρ\rho ריצה אפשרית כלשהי של MM על xx. נסמן

  • tt — מספר הצעדים ש-MM מבצעת בריצה ρ\rho על xx;
  • ss — מספר התאים השונים ש-MM כותבת בהם בריצה ρ\rho על xx.

(היינו חייבים סימונים חדשים דווקא משום שאי אפשר להשתמש ב-timeM\mathrm{time}_M וב-spaceM\mathrm{space}_M — אלה מדדים של המכונה, לא של ריצה בודדת.)

  1. s≤ts\le t. בכל צעד בריצה ρ\rho המכונה כותבת בתא אחד לכל היותר, ולכן מספר התאים השונים שנכתבו בהם אינו עולה על מספר הצעדים. זו בדיוק ההבחנה מהמודל הדטרמיניסטי, ללא שינוי.
  2. t≤timeM(x)t\le \mathrm{time}_M(x). לפי הגדרה 5, timeM(x)\mathrm{time}_M(x) הוא המקסימום של מספר הצעדים על פני כל הריצות האפשריות, ו-ρ\rho היא אחת מהן.

משני אלה, s≤timeM(x)s\le\mathrm{time}_M(x).

הראינו זאת עבור ריצה אפשרית שרירותית ρ\rho, כלומר: בכל ריצה אפשרית של MM על xx, מספר התאים השונים שנכתבו בהם חסום על ידי timeM(x)\mathrm{time}_M(x) — שהוא ביטוי שאינו תלוי ב-ρ\rho. בפרט זה נכון גם עבור ריצה אפשרית שבה MM כותבת בהכי הרבה תאים, ומספר התאים בריצה זו הוא בדיוק spaceM(x)\mathrm{space}_M(x). לכן spaceM(x)≤timeM(x)\mathrm{space}_M(x)\le\mathrm{time}_M(x). ■\blacksquare

מה בדיוק השתנה מהמודל הדטרמיניסטי. רק המעטפת [ב׳ 01:03:32]. הליבה — "בכל צעד כותבים בתא אחד לכל היותר" — זהה מילה במילה. מה שנוסף הוא שלפני הליבה כותבים "תהא ריצה אפשרית" ונותנים סימנים למדדים של הריצה הספציפית, ואחרי הליבה לוקחים מקסימום על אי-שוויון שהאגף הימני שלו כבר לא תלוי בריצה. זה התבנית של כל ההוכחות בשיעור הזה.

משפט 4: זמן חסום אקספוננציאלית במקום

לכל מכונה אי-דטרמיניסטית MM קיים קבוע c>0c>0 כך שלכל x∈ΣM∗x\in\Sigma_M^*:

if M halts on x in every possible run, then timeM(x) ≤ 2 c⋅spaceM(x).\text{if } M \text{ halts on } x \text{ in every possible run, then } \quad \mathrm{time}_M(x)\ \le\ 2^{\,c\cdot\mathrm{space}_M(x)}.

הקבוע הוא c=lg⁡∣Q∣+lg⁡∣Γ∣+1c=\lg|Q|+\lg|\Gamma|+1, כמו במודל הדטרמיניסטי.

איפה ההבדלים מהטענה המקבילה בשיעור 2 [א׳ 01:03:45]. שלושה, אחד גלוי ושניים סמויים:

  1. גלוי: ההנחה היא "MM עוצרת בכל ריצה אפשרית" ולא "MM עוצרת על xx". זו הנחה חזקה יותר, והיא הכרחית — ראו את ההערה בסוף ההוכחה.
  2. סמוי: timeM(x)\mathrm{time}_M(x) הוא מקסימום.
  3. סמוי: spaceM(x)\mathrm{space}_M(x) הוא מקסימום — ולא בהכרח באותה ריצה.

הוכחה. תהא ρ\rho ריצה אפשרית כלשהי של MM על xx. נסמן ב-tt את מספר הצעדים ש-MM מבצעת ב-ρ\rho, וב-ss את מספר התאים השונים ש-MM כותבת בהם ב-ρ\rho.

שלב א — ספירת קונפיגורציות. קונפיגורציה של MM מורכבת ממצב, מתוכן החלק הרלוונטי של הסרט וממיקום הראש. אם בריצה ρ\rho נכתב ב-ss תאים שונים, מספר הקונפיגורציות שיכולות להופיע בריצה זו הוא לכל היותר

∣Q∣⋅∣Γ∣s⋅s = 2 lg⁡∣Q∣+s⋅lg⁡∣Γ∣+lg⁡s ≤ 2 (lg⁡∣Q∣+lg⁡∣Γ∣+1)⋅s,|Q|\cdot|\Gamma|^{s}\cdot s\ =\ 2^{\,\lg|Q|+s\cdot\lg|\Gamma|+\lg s}\ \le\ 2^{\,(\lg|Q|+\lg|\Gamma|+1)\cdot s},

כאשר האי-שוויון האחרון נובע מ-lg⁡∣Q∣≤slg⁡∣Q∣\lg|Q|\le s\lg|Q| ומ-lg⁡s≤s\lg s\le s עבור s≥1s\ge1. זהו בדיוק החישוב משיעור 2, ללא שינוי כלשהו הנובע מאי-דטרמיניזם [א׳ 01:08:10].

שלב ב — אין חזרה על קונפיגורציה. נטען שבריצה ρ\rho אין שתי קונפיגורציות זהות. נניח בשלילה שיש: הקונפיגורציה CC מופיעה ב-ρ\rho בשני זמנים i<ji<j. נתבונן בסדרת הבחירות (תסריט הריצה) שהובילה מ-CC בזמן ii אל CC בזמן jj. מכיוון שהקונפיגורציה בשני הקצוות זהה, אותה סדרת בחירות עצמה חוקית שוב, ואפשר לחזור עליה שוב ושוב. מתקבלת ריצה אפשרית אינסופית של MM על xx — בסתירה להנחה ש-MM עוצרת על xx בכל ריצה אפשרית.

הערה: בהרצאה זה נאמר בקיצור, ואף תוקן תוך כדי [א׳ 01:09:13] — המרצה אמר תחילה "אני יודע ש-QQ סופית ולכן המכונה אינה חוזרת על אותה קונפיגורציה", עצר ותיקן ל"אני יודע ש-MM עוצרת בכל ריצה". הפירוט כאן. שימו לב שזו בדיוק הנקודה שבה ההנחה החזקה יותר משמשת: במודל הדטרמיניסטי חזרה על קונפיגורציה בריצה שלנו גוררת מיד שאותה ריצה לא תעצור, כי ההמשך נקבע יחידות. במודל האי-דטרמיניסטי חזרה על קונפיגורציה ב-ρ\rho אינה מונעת מ-ρ\rho עצמה לעצור — היא רק מוכיחה שקיימת ריצה אחרת שאינה עוצרת. לכן ההנחה חייבת להיות על כל הריצות.

שלב ג — חיבור. מכיוון שכל צעד ב-ρ\rho מוביל לקונפיגורציה חדשה, מספר הצעדים חסום על ידי מספר הקונפיגורציות האפשריות:

t ≤ 2 (lg⁡∣Q∣+lg⁡∣Γ∣+1)⋅s.t\ \le\ 2^{\,(\lg|Q|+\lg|\Gamma|+1)\cdot s}.

שלב ד — מעבר למדדים. מכיוון ש-ss הוא מספר התאים שנכתבו ב-ρ\rho ו-spaceM(x)\mathrm{space}_M(x) הוא המקסימום על פני כל הריצות, מתקיים s≤spaceM(x)s\le\mathrm{space}_M(x). הפונקציה u↦2cuu\mapsto 2^{cu} עולה, ולכן

t ≤ 2 (lg⁡∣Q∣+lg⁡∣Γ∣+1)⋅spaceM(x).t\ \le\ 2^{\,(\lg|Q|+\lg|\Gamma|+1)\cdot \mathrm{space}_M(x)}.

שלב ה — מקסימום. האגף הימני אינו תלוי ב-ρ\rho, והאי-שוויון הוכח עבור ריצה אפשרית שרירותית. לכן הוא נכון בפרט עבור ריצה אפשרית ארוכה ביותר, שבה מספר הצעדים הוא timeM(x)\mathrm{time}_M(x):

timeM(x) ≤ 2 (lg⁡∣Q∣+lg⁡∣Γ∣+1)⋅spaceM(x).■\mathrm{time}_M(x)\ \le\ 2^{\,(\lg|Q|+\lg|\Gamma|+1)\cdot \mathrm{space}_M(x)}. \qquad\blacksquare

מדוע דווקא הכיוון הזה הוכח בכיתה. המרצה בחר בכוונה להוכיח את האי-שוויון הקשה יותר ולהשאיר את space≤time\mathrm{space}\le\mathrm{time} כתרגיל [א׳ 01:11:19]; בהקלטה המקבילה הוכח דווקא הקל (משפט 3 כאן), ולכן שני הכיוונים מופיעים בקובץ הזה במלואם.

משפט 5: יחסים בסיסיים בין המחלקות האי-דטרמיניסטיות

תהיינה f,g:N→Nf,g:\mathbb{N}\to\mathbb{N}. אז:

  1. NTime(f)⊆NSpace(f)\mathrm{NTime}(f)\subseteq\mathrm{NSpace}(f);
  2. NSpace(f)⊆⋃d≥1NTime ⁣(2 d⋅f)\mathrm{NSpace}(f)\subseteq\bigcup_{d\ge1}\mathrm{NTime}\!\left(2^{\,d\cdot f}\right);
  3. אם f=O(g)f=O(g) אז NTime(f)⊆NTime(g)\mathrm{NTime}(f)\subseteq\mathrm{NTime}(g) וגם NSpace(f)⊆NSpace(g)\mathrm{NSpace}(f)\subseteq\mathrm{NSpace}(g).

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

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

אותה מכונה MM ואותו קבוע cc מעידים ש-A∈NSpace(f)A\in\mathrm{NSpace}(f). ■\blacksquare

הוכחה של 2. יהי A∈NSpace(f)A\in\mathrm{NSpace}(f), ותהיינה MM ו-c>0c>0 המעידות על כך. מכיוון ש-MM מכריעה את AA באופן אי-דטרמיניסטי, מתקיים תנאי 1 של הגדרה 4: לכל xx, בכל ריצה אפשרית MM עוצרת. לכן תנאי משפט 4 מתקיים, ועם הקבוע c′=lg⁡∣QM∣+lg⁡∣ΓM∣+1c'=\lg|Q_M|+\lg|\Gamma_M|+1 התלוי רק ב-MM:

timeM(x) ≤ 2 c′⋅spaceM(x) ≤ 2 c′⋅c⋅f(∣x∣) = 2 d⋅f(∣x∣),d:=max⁡{1, c′c}.\mathrm{time}_M(x)\ \le\ 2^{\,c'\cdot\mathrm{space}_M(x)}\ \le\ 2^{\,c'\cdot c\cdot f(|x|)}\ =\ 2^{\,d\cdot f(|x|)},\qquad d:=\max\{1,\ c'c\}.

האי-שוויון האמצעי מותר כי u↦2c′uu\mapsto 2^{c'u} עולה והצבנו spaceM(x)≤c⋅f(∣x∣)\mathrm{space}_M(x)\le c\cdot f(|x|). לכן MM עם הקבוע 11 מעידה ש-A∈NTime ⁣(2d⋅f)A\in\mathrm{NTime}\!\left(2^{d\cdot f}\right), ובפרט AA שייכת לאיחוד. ■\blacksquare

הוכחה של 3. f=O(g)f=O(g) פירושו שקיים c0>0c_0>0 כך שלכל nn מתקיים f(n)≤c0⋅g(n)f(n)\le c_0\cdot g(n). יהי A∈NTime(f)A\in\mathrm{NTime}(f) עם עדים M,cM,c. אז לכל xx:

timeM(x) ≤ c⋅f(∣x∣) ≤ (c⋅c0)⋅g(∣x∣),\mathrm{time}_M(x)\ \le\ c\cdot f(|x|)\ \le\ (c\cdot c_0)\cdot g(|x|),

ולכן MM עם הקבוע c⋅c0c\cdot c_0 מעידה ש-A∈NTime(g)A\in\mathrm{NTime}(g). ההוכחה למקום זהה מילה במילה עם החלפת time\mathrm{time} ב-space\mathrm{space}. ■\blacksquare

משפט 6: כל מכונה דטרמיניסטית היא מכונה אי-דטרמיניסטית, ולכן DTime(f)⊆NTime(f)\mathrm{DTime}(f)\subseteq\mathrm{NTime}(f)

לכל f:N→Nf:\mathbb{N}\to\mathbb{N} מתקיים

DTime(f)⊆NTime(f),DSpace(f)⊆NSpace(f).\mathrm{DTime}(f)\subseteq\mathrm{NTime}(f),\qquad \mathrm{DSpace}(f)\subseteq\mathrm{NSpace}(f).

הוכחה. יהי A∈DTime(f)A\in\mathrm{DTime}(f), ותהיינה M=(Q,qstart,F,Σ,Γ,δ)M=(Q,q_{start},F,\Sigma,\Gamma,\delta) ו-c>0c>0 המעידות על כך. נגדיר מכונה אי-דטרמיניסטית M′M' עם אותם Q,qstart,F,Σ,ΓQ,q_{start},F,\Sigma,\Gamma ועם

δ′(q,α)={δ(q,α)}for all q∈Q, α∈Γ.\delta'(q,\alpha)=\{\delta(q,\alpha)\}\qquad \text{for all } q\in Q,\ \alpha\in\Gamma.

כלומר כל קבוצה בתמונה של δ′\delta' היא יחידון.

יש בדיוק ריצה אפשרית אחת. באינדוקציה על מספר הצעדים: בכל צעד יש בדיוק שלשה אחת בקבוצה, ולכן אין בחירה. לכן לכל xx יש בדיוק ריצה אפשרית אחת של M′M' על xx, והיא זהה לריצת MM על xx.

M′M' מכריעה את AA באופן אי-דטרמיניסטי. נבדוק את שלושת התנאים; המפתח הוא שכאשר קבוצת הריצות האפשריות היא יחידון, "לכל ריצה" ו"קיימת ריצה" מתלכדים [א׳ 01:25:30].

  1. MM מכריעה את AA, ולכן היא עוצרת על כל קלט; הריצה היחידה של M′M' היא ריצת MM, ולכן M′M' עוצרת בכל ריצה אפשרית.
  2. אם x∈Ax\in A אז ריצת MM על xx מסתיימת ב-qacceptq_{accept}; זו ריצה אפשרית של M′M' המסתיימת במצב מקבל, ולכן קיימת ריצה מקבלת.
  3. אם x∉Ax\notin A אז ריצת MM על xx מסתיימת ב-qrejectq_{reject}; זו הריצה האפשרית היחידה של M′M', ולכן בכל ריצה אפשרית M′M' דוחה.

המדדים לא השתנו. timeM′(x)\mathrm{time}_{M'}(x) הוא מקסימום על פני קבוצה בת ריצה אחת, ולכן timeM′(x)=timeM(x)≤c⋅f(∣x∣)\mathrm{time}_{M'}(x)=\mathrm{time}_M(x)\le c\cdot f(|x|). לכן M′M' ו-cc מעידות ש-A∈NTime(f)A\in\mathrm{NTime}(f).

ההוכחה עבור המקום זהה. ■\blacksquare

מסקנה.

P ⊆ NP.P\ \subseteq\ \mathrm{NP}.

הוכחה. יהי A∈PA\in P. אז קיים c≥1c\ge1 כך ש-A∈DTime(nc)A\in\mathrm{DTime}(n^c). לפי משפט 6, A∈NTime(nc)⊆NPA\in\mathrm{NTime}(n^c)\subseteq \mathrm{NP}. ■\blacksquare

האינטואיציה בשורה אחת [א׳ 01:24:26]: כל מה שאפשר לעשות בתקציב מסוים באופן דטרמיניסטי — אותה מכונה עם אותו תקציב עושה באופן אי-דטרמיניסטי. זה מקרה פרטי, לא סימולציה.

השאלה הפתוחה. האם P=NPP=\mathrm{NP}? באופן שקול (כי כיוון אחד ידוע): האם NP⊆P\mathrm{NP}\subseteq P? כלומר, האם כל מה שאפשר להכריע בזמן פולינומי באופן אי-דטרמיניסטי אפשר להכריע בזמן פולינומי באופן דטרמיניסטי. זו ככל הנראה השאלה הפתוחה המפורסמת ביותר במדעי המחשב, ויש עליה פרס של מיליון דולר. לא יודעים להוכיח שכן ולא יודעים להוכיח שלא [א׳ 01:28:25], [ב׳ 01:21:54].

משפט 7 (ללא הוכחה): שקילות חישובית למודל הדטרמיניסטי

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

הטענה לא הוכחה בכיתה [א׳ 00:55:52]. הרעיון: מכונה דטרמיניסטית יכולה לעבור על כל הריצות האפשריות של MM על xx בסריקה לרוחב של עץ החישוב, ולהכריז "מקבלת" אם מצאה ענף מקבל. אם MM מכריעה שפה, כל ענף בעץ סופי והסתעפות העץ סופית (כי δ\delta מחזירה קבוצות סופיות), ולכן העץ כולו סופי והסריקה מסתיימת.

מה כן משתנה — היעילות. בדיוק כמו במעבר בין מכונה רב-סרטית למכונה חד-סרטית: כוח החישוב זהה, המדדים לא. כאן ההפרש עלול להיות אקספוננציאלי, וזה ליבת שאלת PP מול NP\mathrm{NP}.

טענות נוספות שעוברות כמות שהן [א׳ 01:14:03], [ב׳ 01:06:39]: מכונה רב-סרטית אי-דטרמיניסטית והקשר בין המדדים שלה למכונה חד-סרטית, מכונה אוניברסלית אי-דטרמיניסטית ומדדי היעילות שלה, ומשפטי ההיררכיה. ההוכחות זהות פרט למעטפת. המרצה המליץ עליהן כתרגול טוב בדיוק משום שהמהות מוכרת וכל מה שנדרש הוא לתרגל את המעטפת.


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

דוגמה 1: המכונה מהסיכום, ושלושת הענפים על x=0001x=0001

Γ={0,1,B}\Gamma=\{0,1,B\}, Σ={0,1}\Sigma=\{0,1\}, Q={qstart,q1,q2,qaccept,qreject}Q=\{q_{start},q_1,q_2,q_{accept},q_{reject}\}. טבלת המעברים (התאים המסומנים בסיכום בהדגשה הם השורות עם יותר משלשה אחת):

δ\delta0011BB
qstartq_{start}(q1,0,R)(q_1,0,R)qrejectq_{reject}qrejectq_{reject}
q1q_1(q1,0,R)(q_1,0,R)(q1,1,R) , (q2,1,R)(q_1,1,R)\ ,\ (q_2,1,R)qrejectq_{reject}
q2q_2qrejectq_{reject}qrejectq_{reject}qaccept , (q2,B,R)q_{accept}\ ,\ (q_2,B,R)

באותו אופן, כדיאגרמת מצבים (מצב qrejectq_{reject} וכל החצים אליו מושמטים לפי הקונבנציה):

  • qstart → 0/0,R  q1q_{start}\ \xrightarrow{\ 0/0,R\ }\ q_1
  • q1 → 0/0,R  q1q_1\ \xrightarrow{\ 0/0,R\ }\ q_1 (לולאה עצמית), q1 → 1/1,R  q1\quad q_1\ \xrightarrow{\ 1/1,R\ }\ q_1 (לולאה עצמית)
  • q1 → 1/1,R  q2q_1\ \xrightarrow{\ 1/1,R\ }\ q_2
  • q2 → B/B,R  q2q_2\ \xrightarrow{\ B/B,R\ }\ q_2 (לולאה עצמית), q2 → B/B,R  qaccept\quad q_2\ \xrightarrow{\ B/B,R\ }\ q_{accept}

שלוש ריצות אפשריות על x=0001x=0001 (כפי שהן מופיעות בסיכום):

אפשרות 1 — דוחה. (q1,0,R), (q1,0,R), (q1,0,R), (q1,1,R), qreject(q_1,0,R),\ (q_1,0,R),\ (q_1,0,R),\ (q_1,1,R),\ q_{reject} המכונה נשארת ב-q1q_1 גם כשהיא קוראת את ה-11 האחרון, ואז קוראת BB ב-q1q_1 ודוחה.

אפשרות 2 — מקבלת. (q1,0,R), (q1,0,R), (q1,0,R), (q2,1,R), (q2,B,R), qaccept(q_1,0,R),\ (q_1,0,R),\ (q_1,0,R),\ (q_2,1,R),\ (q_2,B,R),\ q_{accept} כאן, כשהמכונה קוראת את ה-11 האחרון, היא בוחרת את השלשה השנייה ועוברת ל-q2q_2; אחר כך היא קוראת BB, בוחרת להישאר צעד אחד ב-q2q_2, ובצעד הבא מקבלת.

אפשרות 3 — אינה עוצרת. (q1,0,R), (q1,0,R), (q1,0,R), (q2,1,R), (q2,B,R), (q2,B,R), (q2,B,R), …(q_1,0,R),\ (q_1,0,R),\ (q_1,0,R),\ (q_2,1,R),\ (q_2,B,R),\ (q_2,B,R),\ (q_2,B,R),\ \dots אותה התחלה, אבל המכונה בוחרת שוב ושוב להישאר ב-q2q_2 ולזוז ימינה על תווים ריקים — לנצח.

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

דוגמה 2: תיקון המכונה — מוחקים מעבר אחד

מוחקים את (q2,B,R)(q_2,B,R) מהתא δ(q2,B)\delta(q_2,B). עכשיו כל ריצה עוצרת אחרי ∣x∣+1|x|+1 צעדים לכל היותר, ולפי משפט 2 המכונה מכריעה באופן אי-דטרמיניסטי את

A={x∈{0,1}∗∣x starts with 0 and ends with 1}.A=\{x\in\{0,1\}^*\mid x \text{ starts with } 0 \text{ and ends with } 1\}.

מעקב על שני קלטים קונקרטיים:

  • x=0001x=0001: ריצת אפשרות 2 (בלי שלב ההשהיה ב-q2q_2) מסתיימת ב-qacceptq_{accept} — ואכן xx מתחיל ב-00 ומסתיים ב-11. שימו לב שגם אפשרות 1, שדוחה, עדיין קיימת; זה מותר, כי לקבלה מספיק עד אחד.
  • x=0010x=0010: כל הריצות דוחות. מי שנשאר ב-q1q_1 עד הסוף קורא BB ב-q1q_1 ונדחה. מי שעבר ל-q2q_2 עשה זאת בקריאת ה-11 שבמקום השלישי, ואז קורא 00 ב-q2q_2 ונדחה מיד. ואכן x∉Ax\notin A.

דוגמה 3: מכונה שנייה (מההקלטה המקבילה) — מחרוזות שמסתיימות ב-00

מכונה אחרת לגמרי, עם שני מצבי עבודה בלבד, Q={qstart,q1,qaccept,qreject}Q=\{q_{start},q_1,q_{accept},q_{reject}\} ו-Γ={0,1,B}\Gamma=\{0,1,B\}:

δ\delta0011BB
qstartq_{start}(qstart,0,R) , (q1,0,R)(q_{start},0,R)\ ,\ (q_1,0,R)(qstart,1,R)(q_{start},1,R)qrejectq_{reject}
q1q_1qrejectq_{reject}qrejectq_{reject}qacceptq_{accept}

שלוש ריצות על x=000x=000 [ב׳ 00:34:30]:

  1. (qstart,0,R),(qstart,0,R),(qstart,0,R),qreject(q_{start},0,R),(q_{start},0,R),(q_{start},0,R),q_{reject} — נשארת ב-qstartq_{start} לאורך כל הקלט, ואז קוראת BB ב-qstartq_{start} ונדחית.
  2. (q1,0,R),qreject(q_1,0,R),q_{reject} — עוברת ל-q1q_1 כבר בתו הראשון, ואז קוראת 00 ב-q1q_1 ונדחית.
  3. (qstart,0,R),(qstart,0,R),(q1,0,R),qaccept(q_{start},0,R),(q_{start},0,R),(q_1,0,R),q_{accept} — "מנחשת" נכון שה-00 השלישי הוא האחרון, עוברת ל-q1q_1, קוראת BB ומקבלת.

מה המכונה מכריעה. את שפת כל המחרוזות מעל {0,1}\{0,1\} שמסתיימות ב-00. הנימוק: כל ריצה זזה ימינה בכל צעד ולכן מגיעה ל-BB ועוצרת. אם xx מסתיימת ב-00, יש תסריט שבו המכונה נשארת ב-qstartq_{start} עד התו האחרון ואז עוברת ל-q1q_1 — ומ-q1q_1 היא רואה BB ומקבלת. אם xx אינה מסתיימת ב-00, אז כל ריצה או שנשארה ב-qstartq_{start} עד הסוף (וקוראת BB ב-qstartq_{start} ⟵ דוחה), או שעברה ל-q1q_1 בקריאת 00 שאינו התו האחרון (ואז התו הבא הוא תו קלט, ומ-q1q_1 כל תו קלט מוביל לדחייה).

וריאציה מקלקלת. אם מוסיפים δ(q1,B)={qaccept,(q1,B,R)}\delta(q_1,B)=\{q_{accept},(q_1,B,R)\}, המכונה שוב אינה מכריעה אף שפה, מאותה סיבה בדיוק כמו במשפט 1 — ההשוואה בין שתי המכונות היא הדרך הכי מהירה לזכור למה תנאי 1 בהגדרה 4 קיים.

תרגיל 1 (תרגיל חימום מתחילת המפגש; חומר חזרה משיעור 3): DSpace(n1/3)⊊EXP\mathrm{DSpace}(n^{1/3})\subsetneq \mathrm{EXP}

זהו תרגיל דטרמיניסטי לחלוטין, שנפתר בכיתה לפני המעבר למודל החדש [ב׳ 00:12:20]. הקושי: אגף שמאל הוא מחלקת מקום ואגף ימין מחלקת זמן, ובנוסף EXP\mathrm{EXP} הוא איחוד, וההכלה-ממש אינה נשמרת תחת איחוד.

פתרון א (מקום ⟶ זמן, ואז היררכיית הזמן).

  1. מהקשר בין זמן למקום: DSpace(n1/3)⊆⋃c≥1DTime ⁣(2c⋅n1/3)\mathrm{DSpace}(n^{1/3})\subseteq\bigcup_{c\ge1}\mathrm{DTime}\!\left(2^{c\cdot n^{1/3}}\right).
  2. להיפטר מהאיחוד: לכל c≥1c\ge1 מתקיים 2c⋅n1/3=O ⁣(2n4)2^{c\cdot n^{1/3}}=O\!\left(2^{n^4}\right) (עבור nn גדול מספיק c⋅n1/3≤n4c\cdot n^{1/3}\le n^4), ולכן כל האיחוד מוכל ב-DTime ⁣(2n4)\mathrm{DTime}\!\left(2^{n^4}\right). עכשיו יש בידינו מחלקה עדינה אחת.
  3. משפט היררכיית הזמן עם g=2n4g=2^{n^4} ו-f=22n4f=2^{2n^4}: מתקיים g=o(f)g=o(f) ו-ff ישימה בזמן וסופר-לינארית, ולכן DTime ⁣(2n4)⊊DTime ⁣(f2)=DTime ⁣(24n4)\mathrm{DTime}\!\left(2^{n^4}\right)\subsetneq\mathrm{DTime}\!\left(f^2\right)=\mathrm{DTime}\!\left(2^{4n^4}\right).
  4. לבסוף 24n4=O ⁣(2n5)2^{4n^4}=O\!\left(2^{n^5}\right), ולכן DTime ⁣(24n4)⊆DTime ⁣(2n5)⊆EXP\mathrm{DTime}\!\left(2^{4n^4}\right)\subseteq\mathrm{DTime}\!\left(2^{n^5}\right)\subseteq \mathrm{EXP} לפי הגדרת EXP\mathrm{EXP}.

בשרשרת יש הכלה-ממש אחת (שלב 3), ולכן ההכלה הכוללת היא הכלה ממש.

פתרון ב (היררכיית המקום קודם).

  1. n1/3=o(n4)n^{1/3}=o(n^4), ו-n4n^4 ישימה במקום וסופר-לינארית, ולכן ממשפט היררכיית המקום: DSpace(n1/3)⊊DSpace(n4)\mathrm{DSpace}(n^{1/3})\subsetneq\mathrm{DSpace}(n^4).
  2. DSpace(n4)⊆PSPACE\mathrm{DSpace}(n^4)\subseteq \mathrm{PSPACE} לפי הגדרה.
  3. PSPACE⊆EXP\mathrm{PSPACE}\subseteq \mathrm{EXP} — הוכח בשיעור 3.

גם כאן ההכלה-ממש מגיעה משלב אחד. הפתרון השני קצר יותר משום שהוא מפעיל את משפט ההיררכיה לפני המעבר לאיחוד, ואז אין צורך "לתקן" את האיחוד [ב׳ 00:20:41].

תרגיל 2: להוכיח את הניסוח עם "אם ורק אם"

שאלה שנשאלה בכיתה: האם אפשר להחליף את תנאים 2 ו-3 בהגדרה 4 בתנאי יחיד "x∈Ax\in A אם ורק אם קיימת ריצה אפשרית מקבלת"?

פתרון. כן, בהינתן תנאי 1. תנאי 2 הוא בדיוק הכיוון x∈A⇒∃ρx\in A\Rightarrow \exists\rho מקבלת. נותר להראות ששני הניסוחים של הכיוון השני שקולים:

  • תנאי 3 אומר: x∉A⇒x\notin A\Rightarrow כל ריצה דוחה.
  • הקונטרהפוזיציה: אם לא כל ריצה דוחה, אז x∈Ax\in A.
  • מכיוון שכל ריצה עוצרת (תנאי 1), ריצה שאינה דוחה היא ריצה מקבלת, ולכן "לא כל ריצה דוחה" שקול ל"קיימת ריצה מקבלת".
  • ולכן תנאי 3 שקול ל: ∃ρ\exists\rho מקבלת ⇒x∈A\Rightarrow x\in A, שהוא בדיוק הכיוון החסר.

שימו לב שתנאי 1 נחוץ כאן: בלעדיו ריצה שאינה דוחה יכולה להיות ריצה שאינה עוצרת, והשקילות נשברת. בהוכחות נעדיף בכל זאת את הפיצול לשני תנאים, כי ההוכחה ממילא מתפצלת [א׳ 00:32:06].

תרגיל 3: תרגילים שהמרצים המליצו עליהם

  1. להוכיח את משפט 4 (הכיוון time≤2c⋅space\mathrm{time}\le2^{c\cdot\mathrm{space}}) לבד, אחרי שראיתם את משפט 3 — או להפך. שימו לב היכן בדיוק נדרשת ההנחה "עוצרת בכל ריצה אפשרית" [ב׳ 01:06:07].
  2. לנסח ולהוכיח את השקילות בין מכונה רב-סרטית אי-דטרמיניסטית למכונה חד-סרטית אי-דטרמיניסטית, כולל מחיר המדדים.
  3. לנסח את המכונה האוניברסלית האי-דטרמיניסטית ואת מדדי היעילות שלה.

בכל השלושה המהות מוכרת משיעורים 1–2; מה שמתורגל הוא רק המעטפת: "תהא ריצה אפשרית ⟶ סימונים לריצה זו ⟶ טיעון מוכר ⟶ מקסימום" [א׳ 01:15:08].


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

חומר השיעור מוקלט בשתי מסירות מקבילות מאותו יום. הפניות מסומנות [א׳ hh:mm:ss] להקלטה ANf62oYXWnM ו-[ב׳ hh:mm:ss] להקלטה BPaQYss9Qi0.

  • "עד עכשיו לא עשינו הרבה יותר מהגדרות" [א׳ 00:01:07]. המרצה פתח בהודאה שהחומר מרגיש עמוס למרות שהוא רדוד: כל הגדרה גוררת המון פרמטרים, ולכן ההוכחות ארוכות ומסורבלות. "ניסיתי לעקוף את זה, אי אפשר." אין כאן עומק — יש כאן הרבה חלקים זזים. ההמלצה המעשית: להיצמד למבנה, כי המבנה מכריח אתכם ללכת במסלול נכון [א׳ 00:55:18].
  • תחביר לפני סמנטיקה [א׳ 00:12:00]. סטודנט הבחין שהמרצה נתן את ההגדרה של δ\delta אבל עוד לא אמר מה משמעותה. זו הייתה הבחנה נכונה ומכוונת: ההגדרה של המודל היא תחבירית בלבד; הסמנטיקה — ריצה אפשרית והכרעה — מגיעה רק אחר כך.
  • קונבנציית הסרטוט [א׳ 00:15:12], [א׳ 00:41:28]. את qrejectq_{reject} לא מסרטטים, וכל חץ שאינו מופיע פירושו מעבר ל-qrejectq_{reject}. בטבלה זה הרבה יותר קל לראות מאשר בסרטוט — ולכן כשמשהו לא ברור בדיאגרמה, חזרו לטבלה.
  • מצבים סופיים לא השתנו [א׳ 00:21:43]. שאלת סטודנט: האם, כמו במכונה רגילה, מגיעים ל-qacceptq_{accept} ופשוט עוצרים? כן. מהמצבים הסופיים לא יוצאים, וזה זהה לחלוטין למודל הקודם.
  • "אין מה להתווכח עם הגדרה" [א׳ 00:45:46], [א׳ 01:01:36]. המרצה חזר על העיקרון הזה כמה פעמים, כולל בתשובה לשאלה "למה בחרו מקסימום ולא משהו אחר": כשלומדים אפשר לשאול למה הגדירו כך; כשעובדים, עובדים לפי ההגדרה. "זו הגרסה המדעית של because I said so."
  • תיקון תוך כדי הרצאה [א׳ 01:09:13]. בהוכחת משפט 4 המרצה כתב תחילה "כיוון ש-QQ סופית, המכונה אינה חוזרת על אותה קונפיגורציה", עצר ותיקן: מה שנדרש הוא ההנחה שהמכונה עוצרת בכל ריצה אפשרית. זו לא קוסמטיקה — ראו את ההערה בהוכחת משפט 4.
  • המקסימומים אינם באותה ריצה [א׳ 01:22:01]. חזר על כך במפורש: "פה יש לי מקסימום ופה יש לי מקסימום — לא להניח שזו אותה ריצה". שימו לב שבהוכחת משפט 4 באמת לא הנחנו זאת: חסמנו את הקשר בין המדדים בתוך ריצה אחת, ורק אחר כך לקחנו מקסימום, כל אחד בנפרד.
  • שאלת סטודנט שחידדה את ההגדרה [א׳ 00:26:00]. "בחישוביות, באוטומטים אי-דטרמיניסטיים, דיברנו על 'קיימת ריצה'. גם כאן מעניין אותי 'קיימת' או אוסף הריצות?" — התשובה היא ששניהם: קיימת לקבלה, וכל הריצות לעצירה ולדחייה.
  • שאלת סטודנט על מבנה ההוכחה [א׳ 00:52:41]. במקרה 2 של משפט 2, מדוע חוזרים ואומרים "כיוון שזה לא התו האחרון"? כי זו ההנחה של המקרה, ומסתמכים עליה שוב; זו לא טענה חדשה.
  • קיצורים [א׳ 01:29:03]. המרצה סיים בהערה על כתיבת קיצורים כמו מ"ט במקום "מכונת טיורינג": מתמטית אין בזה שום פסול ולא יורדות עליו נקודות, אבל מניסיונו בבדיקת אלפי תרגילים יש קורלציה מובהקת בין כתיבה בראשי תיבות ובין טעויות. המלצה בלבד.
  • הערת שם [א׳ 01:26:48]. ל-NEXPSPACENEXPSPACE אין קיצור מקובל — סימן טוב לכך שלא נשתמש בה הרבה.
  • מוטיבציה למודל [ב׳ 00:24:50]. "יש הרבה מאוד בעיות חשובות שלא יודעים לפתור בזמן פולינומי, אבל ברגע שמאפשרים למודל להיות אי-דטרמיניסטי — פתאום כן." זו כל הסיבה שהמודל התיאורטי הזה מעניין, וממנה נולדת שאלת PP מול NP\mathrm{NP}.
  • הבטחה להמשך [ב׳ 01:08:12], [ב׳ 01:23:28]. שני המרצים ציינו שדוגמה משמעותית באמת — בעיה שהמודל האי-דטרמיניסטי פותר ביעילות והמודל הדטרמיניסטי לא יודע — תגיע בשיעור הבא. השיעור הזה כולו ברמת ההגדרות.

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

  • מקור: עמוד 1 בסיכום. הפער: ההגדרה הדטרמיניסטית נכתבה כחמישייה M=(Q,F,Σ,Γ,δ)M=(Q,F,\Sigma,\Gamma,\delta), בלי המצב ההתחלתי. ההכרעה: תוקן בגוף ל-M=(Q,qstart,F,Σ,Γ,δ)M=(Q,q_{start},F,\Sigma,\Gamma,\delta), בעקבות אותו תיקון שכבר נעשה בשיעור 1; ההקלטה המקבילה מונה במפורש את המצב ההתחלתי כרכיב [ב׳ 00:26:23].
  • מקור: עמוד 3 בסיכום והקלטה א׳ [00:40:57]. הפער: נכתב שהריצה עוצרת אחרי לא יותר מ-∣x∣|x| צעדים (ובהרצאה: "בדיוק ∣x∣|x|"), אך הצעד שבו נקרא התו הריק הוא הפעלה נוספת של δ\delta. ההכרעה: תוקן ל-∣x∣+1|x|+1; הסיכום עצמו מדגים זאת — הריצה על x=0001x=0001 מונה חמש הפעלות של δ\delta. אין לכך השפעה על אף מסקנה.
  • מקור: עמוד 1 בסיכום. הפער: ההגדרה של ריצה אפשרית נוסחה כ"כל שלשה שייכת לקבוצה שפונקציית המעברים מחזירה על השלשה הקודמת", אך δ\delta אינה מקבלת שלשה. ההכרעה: נוסח מחדש בגוף באמצעות (מצב נוכחי, תו שמתחת לראש), עם הערה שהניסוח בסיכום הוא קיצור.
  • מקור: עמוד 4 בסיכום מול שיעור 2. הפער: ספירת הקונפיגורציות נכתבה כ-2(lg⁡∣Q∣+lg⁡∣Γ∣+1)⋅s2^{(\lg|Q|+\lg|\Gamma|+1)\cdot s}, בעוד הספירה המדויקת היא ∣Q∣⋅∣Γ∣s⋅s|Q|\cdot|\Gamma|^s\cdot s. ההכרעה: נבדק — אין כאן טעות. הביטוי בסיכום הוא חסם עליון גס יותר על אותה ספירה, בדיוק כפי שנעשה בשיעור 2, והוא זה שמייצר את הקבוע c=lg⁡∣Q∣+lg⁡∣Γ∣+1c=\lg|Q|+\lg|\Gamma|+1. שני הביטויים מופיעים בגוף.
  • מקור: הקלטה א׳ [01:09:13] מול עמוד 4 בסיכום. הפער: בסיכום נכתב "כיוון ש-MM עוצרת בכל ריצה, גם ריצה זו אינה חוזרת על קונפיגורציה" בלי הצדקה. ההכרעה: הפירוט נכתב בגוף (חזרה על קונפיגורציה מייצרת ריצה אפשרית אינסופית אחרת, ולכן דרושה ההנחה על כל הריצות ולא על הריצה הנתונה).
  • מקור: הקלטה ב׳. הפער: המונח תסריט ריצה (סדרת הבחירות של המכונה) והמוטיבציה למודל (בעיות שאין להן פתרון פולינומי ידוע ופתאום יש להן פתרון אי-דטרמיניסטי) אינם מופיעים בסיכום כלל. ההכרעה: נוספו לגוף — המונח בהגדרה 3 והמוטיבציה בסעיף הרקע.
  • מקור: הקלטה ב׳ [00:57:05]–[01:03:32]. הפער: הטענה spaceM(x)≤timeM(x)\mathrm{space}_M(x)\le\mathrm{time}_M(x) מופיעה בסיכום רק ברשימת "טענות נוספות", ובהקלטה א׳ הושארה כתרגיל. ההכרעה: ההוכחה המלאה שניתנה בהקלטה ב׳ נכתבה בגוף כמשפט 3, וממנה נגזר סעיף 1 של משפט 5.
  • מקור: הקלטה ב׳ [00:31:46]–[00:51:11]. הפער: המכונה השנייה (השפה של מחרוזות שמסתיימות ב-00) אינה בסיכום. ההכרעה: נכללה כדוגמה 3, כולל שלוש ריצות מפורשות והווריאציה שמקלקלת את ההכרעה.
  • מקור: הקלטה א׳ [01:00:03]. הפער: ההבחנה ש-timeM(x)=∞\mathrm{time}_M(x)=\infty כשקיימת ריצה שאינה עוצרת, גם אם ריצות אחרות עוצרות, אינה בסיכום. ההכרעה: נוספה כמלכודת בהגדרה 5.
  • מקור: הקלטה ב׳ [00:00:03]–[00:22:14]. הפער: כ-22 הדקות הראשונות של ההקלטה השנייה אינן חומר של שיעור 4 אלא חזרה על שיעור 3 ותרגיל מודרך. ההכרעה: התרגיל נכלל כתרגיל 1 עם שני פתרונות מלאים, ומסומן במפורש כחומר חזרה.
  • מקור: עמוד 1 בסיכום. הפער: כותרת העמודה השלישית בטבלת המעברים אינה קריאה בבירור בכתב היד ונראית כספרה. ההכרעה: שוחזרה כתו הריק BB — זו הפרשנות היחידה שמתיישבת עם תוכן העמודה, עם הדיאגרמה ועם ההקלטה [א׳ 00:13:38].
  • מקור: עמוד 4 בסיכום. הפער: ליד ההגדרה f:N→Nf:\mathbb{N}\to\mathbb{N} מופיעה מילה בסוגריים שאינה קריאה. ההכרעה: לא שוחזרה; אין לה השפעה על ההגדרות, שכן ההקלטות מנסחות "תהא ff פונקציה מ-N\mathbb{N} ל-N\mathbb{N}" בלי תנאי נוסף.
  • מקור: הקלטה א׳ [00:55:52]. הפער: השקילות החישובית בין המודלים נאמרה ולא הוכחה, ובסיכום אינה מופיעה כלל. ההכרעה: נכתבה בגוף כמשפט 7, מסומנת במפורש כטענה שלא הוכחה בכיתה, עם סקיצת הרעיון (סריקת עץ החישוב).

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

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

  1. δ:Q×Γ→P(Q×Γ×{L,R})\delta:Q\times\Gamma\to P(Q\times\Gamma\times\{L,R\}) — וזה כל ההבדל התחבירי.
  2. שלושת תנאי ההכרעה האי-דטרמיניסטית, עם הכמתים הנכונים: עצירה — לכל ריצה; קבלה — קיימת ריצה; דחייה — לכל ריצה.
  3. timeM(x)\mathrm{time}_M(x) ו-spaceM(x)\mathrm{space}_M(x) הם מקסימומים על פני ריצות אפשריות, ולא בהכרח באותה ריצה.
  4. NTime(f)\mathrm{NTime}(f), NSpace(f)\mathrm{NSpace}(f), ו-NP=⋃c≥1NTime(nc)\mathrm{NP}=\bigcup_{c\ge1}\mathrm{NTime}(n^c).
  5. NTime(f)⊆NSpace(f)\mathrm{NTime}(f)\subseteq\mathrm{NSpace}(f),  NSpace(f)⊆⋃d≥1NTime(2d⋅f)\ \mathrm{NSpace}(f)\subseteq\bigcup_{d\ge1}\mathrm{NTime}(2^{d\cdot f}),  DTime(f)⊆NTime(f)\ \mathrm{DTime}(f)\subseteq\mathrm{NTime}(f),  DSpace(f)⊆NSpace(f)\ \mathrm{DSpace}(f)\subseteq\mathrm{NSpace}(f), ולכן P⊆NPP\subseteq \mathrm{NP}.

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

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

צ'קליסט — אחרי השיעור אתם אמורים לדעת:

  • לתרגם טבלת מעברים אי-דטרמיניסטית לדיאגרמה ולהפך, כולל קונבנציית qrejectq_{reject} המושמט;
  • בהינתן מכונה וקלט, לכתוב במפורש כמה ריצות אפשריות שונות, ולזהות ריצה שאינה עוצרת;
  • להוכיח שמכונה נתונה מכריעה שפה נתונה באופן אי-דטרמיניסטי, בשלושת התנאים ובמבנה המלא;
  • להוכיח שמכונה נתונה אינה מכריעה אף שפה, על ידי הצגת קלט ואז ריצה שאינה עוצרת;
  • להוכיח טענה על מדדי היעילות במודל האי-דטרמיניסטי לפי התבנית "תהא ריצה אפשרית ⟶ סימונים ⟶ טיעון ⟶ מקסימום";
  • לגזור את היחסים הבסיסיים בין NTime\mathrm{NTime}, NSpace\mathrm{NSpace}, DTime\mathrm{DTime} ו-DSpace\mathrm{DSpace}, ולנסח נכון את שאלת PP מול NP\mathrm{NP}.

הסיכום בכתב יד שעליו מבוסס השלד של הקובץ הוא של גיא סופר.

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

  • עמוד 4 בסיכום: המילה בסוגריים ליד ההגדרה $f:\mathbb{N}\to\mathbb{N}$ אינה קריאה בבירור ולא שוחזרה.
  • עמוד 3 בסיכום: החסם על אורך הריצה נכתב $|x|$; ספירת הצעדים בסיכום עצמו נותנת $|x|+1$, ותוקן בגוף.
  • עמוד 1 בסיכום: כותרת העמודה השלישית בטבלת המעברים מסומנת בכתב יד שנקרא כספרה; שוחזרה כתו הריק $B$ לפי ההקשר.