בקצרה
- טיעון ריפוד (padding argument) הוא טכניקה להוכחת הכלה בין מחלקות סיבוכיות בהינתן הכלה אחרת. הרעיון: לוקחים שפה קשה, "מנפחים" מלאכותית את הקלטים שלה בזנב ארוך של תו חדש, ומקבלים שפה שהיא בדיוק אותה בעיה — אבל ביחס לאורך הקלט היא נראית הרבה יותר קלה, ולכן נופלת למחלקה נמוכה יותר שעליה ההכלה הנתונה כן חלה.
- הגרעין של כל הטכניקה הוא תצפית אחת: אם מספר הצעדים של מכונה נשאר קבוע ואורך הקלט גדל, סיבוכיות הריצה ביחס לאורך הקלט יורדת. הריפוד לא הופך שום דבר לקל יותר; הוא רק משנה את המכנה שביחס אליו מודדים.
- מוכיחים שתי טענות מסוג "אם הכלה אז הכלה": אם אז , ואם אז — כלומר, אם אז , ובניסוח הנגדי־חיובי: אם אז .
- טענות מותנות כאלה אינן חסרות שיניים: בשילוב עם משפט ההיררכיה בזמן הן נותנות תוצאה לא מותנית — .
- מבנה ההוכחה קבוע ואינו משתנה משאלה לשאלה: ארבע מכונות, שתיים מקבלים "מהשמיים" מתוך שייכות למחלקה ושתיים בונים בעצמנו. הדבר היחיד שדורש מחשבה הוא כמה לרפד, וגם זה נקבע מחשבון פשוט.
- החלק השני של השיעור פותח את הפרק החדש, מול : מושגי הלוגיקה (ליטרל, פסוקית, נוסחת CNF, הסמה, ספיקות), הגדרת השפה , והמכונה הא־דטרמיניסטית שמראה — היא "מנחשת" הסמה ומאמתת אותה.
- מלכודת שהמרצה הדגיש: היא טענה על שפות, לא על מכונות. בכל ההכלות הסטנדרטיות שראינו עד כה המכונה נשארה אותה מכונה; כאן, לראשונה, אנחנו מייצרים מכונות חדשות ומשליכים בין מודלים.
רקע ותלויות
השיעור הזה סוגר את הפרק הראשון של הקורס (הקשרים בין מחלקות) ופותח את השני ( מול ). נזכיר במלואן את התוצאות שנשתמש בהן ממש.
מהשיעורים 1–2: המחלקות והמונוטוניות
טענה (מונוטוניות במשאב). אם אז וגם .
נשתמש גם בהבחנה בין מחלקות עדינות (, — לכל פונקציה מחלקה משלה) למחלקות גסות (איחוד אינסופי, כמו או ). כל פעם שנקבל שייכות למחלקה גסה, הצעד הראשון יהיה לקלף את האיחוד החוצה ולקבל שייכות למחלקה עדינה — ורק ממנה אפשר לחלץ מכונה עם חסם קונקרטי.
מהשיעור 3: משפט ההיררכיה בזמן והישימות
משפט ההיררכיה בזמן. אם ישימה בזמן (time-constructible), סופר־לינארית, ו-, אז
הריבוע שם אינו קישוט — הוא מחיר המעבר ממכונה רב־סרטית למכונה סטנדרטית. נשתמש במשפט הזה פעם אחת בדיוק, בטענה .
נשתמש גם, שוב ושוב, בשני מושגי הישימות. פונקציה ישימה בזמן אם אפשר לחשב אותה בזמן , וישימה במקום אם אפשר לחשב אותה במקום . שתי הפונקציות שיופיעו כאן, ו-, הן ישימות בזמן ובמקום. זה לא פרט טכני שאפשר לדלג עליו: המכונות שנבנה חייבות לחשב את גודל הריפוד, וללא ישימות אין לנו שום מושג כמה זה עולה.
הערה מההקלטה [00:44:21]: סטודנט הציע לחסום את המקום של שלב החישוב באורך הפלט. המרצה עצר על כך במפורש: מכונת טיורינג יכולה להשתמש בהרבה יותר מקום ממה שהיא מוציאה בסוף. הדוגמה הקיצונית שנתן — מכונת הכרעה מוציאה ביט אחד; האם המקום שלה קבוע? ודאי שלא. בדיוק בשביל זה צריך את הישימות במקום.
מהשיעור 4: המודל הא־דטרמיניסטי
מכונה א־דטרמיניסטית מכריעה שפה אם (א) כל ריצה אפשרית של על כל קלט עוצרת, ו-(ב) אם ורק אם קיימת ריצה של על שמסתיימת במצב מקבל. מדד הזמן הוא המקסימום על פני כל הריצות. מכאן
הוכחנו בשיעור 4 שכל מחלקה דטרמיניסטית מוכלת במקבילה הא־דטרמיניסטית שלה, ובפרט ו-. זו הסיבה שכל טענה על שוויון בין הזוגות האלה מצטמצמת להכלה בכיוון אחד בלבד.
הגדרות
הגדרה 1: המחלקה
אינטואיציה. זו מחלקת ה"אקספוננציאלי בדיוק" — החזקה היא , עם בלי חזקות בכלל. המרצה עצר על כך במפורש: אינה . ב- החזקה היא , ולכן יושב ב- אך לא ב-.
דוגמה. שפה שמוכרעת בזמן שייכת ל-. אי־דוגמה. שפה שזמן ההכרעה המינימלי שלה הוא אינה ב-, אך כן ב-. מתקיים , וההכלה היא הכלה ממש.
הגדרה 2: המחלקה
אינטואיציה. אותו דבר בדיוק, אלא שהמעריך ריבועי במקום לינארי. זו מחלקה גדולה יותר מ- (ובהמשך נוכיח שהיא גדולה ממש), ועדיין מוכלת ב-. ההפרש בין שתי המחלקות הוא בדיוק "ריבוע במעריך" — וזה, כפי שנראה, בדיוק גודל הריפוד שיידרש.
הגדרה 3: שפת ריפוד (padded language)
תהי שפה, ותהי פונקציה ישימה בזמן ובמקום. שפת הריפוד של ביחס ל- היא
כאשר הוא תו חדש שאינו באלף־בית של .
אינטואיציה. מכילה בדיוק את אותו מידע ש- מכילה — לכל מילה ב- מתאימה מילה יחידה ב-, ולהפך. שום חישוב לא נעשה קל יותר. מה שכן משתנה: הקלט התארך, ולכן אותו מספר צעדים בדיוק נראה עכשיו, ביחס לאורך הקלט, זול הרבה יותר. זו כל התחבולה.
למה חייב להיות תו חדש? כדי שהפירוק יהיה חד־משמעי. אילו , לא היינו יכולים לקבוע מהסתכלות ב- היכן נגמר ומתחיל הזנב, והשלב הראשון של המכונה שנבנה לא היה מוגדר היטב.
דוגמה. עבור ו- מקבלים . אי־דוגמה. המילה אינה ב-, אף ש-: אורך הזנב אינו . זו בדיוק הבדיקה שהמכונה תבצע בשלב השני, ובלעדיה לא הייתה מוגדרת היטב.
הגדרה 4: ליטרל, פסוקית ונוסחת CNF
יהיו משתנים בוליאניים.
- ליטרל הוא משתנה או שלילה של משתנה. למשל הוא ליטרל, וגם .
- הֶסְגֵּר (או פסוקית, clause) הוא טְפֶל (tuple) סופי של ליטרלים עם ("או") ביניהם. למשל היא פסוקית עם שלושה ליטרלים.
- נוסחת CNF היא טפל סופי של פסוקיות עם ("וגם") ביניהן. למשל
אינטואיציה. CNF (Conjunctive Normal Form) היא "וגם של אואים": רשימת דרישות, שכל אחת מהן מסופקת אם לפחות אחת מהאפשרויות שבה מתקיימת. שימו לב שההגדרה היא תחבירית בלבד — עדיין לא נתנו לסימנים האלה שום משמעות.
דוגמה ואי־דוגמה. אין הגבלה על מספר הליטרלים בפסוקית: היא פסוקית CNF תקינה. לעומת זאת אינה נוסחת CNF — היא בצורה ההפוכה (DNF).
הערה מההקלטה [01:48:51]: המרצה הוסיף בכוונה משתנה רביעי לדוגמה, "כדי שלא תחשבו שזה חייב להיות עם שלוש". פסוקיות באורך 3 הן מקרה פרטי שיזכה לשם משלו (), אך אינן ההגדרה.
הגדרה 5: הסמה וספיקות
הסמה היא פונקציה .
לפי הכללים הלוגיים אפשר להרחיב את מן המשתנים לכל נוסחה לוגית: אם אז ; אם ו- אז ו-; וכן הלאה.
נוסחה נקראת ספיקה אם קיימת הסמה המעניקה לה את הערך ; אומרים אז ש- מספקת את .
אינטואיציה. ההסמה היא הסמנטיקה — האובייקט החיצוני שנותן משמעות לתחביר. ספיקות אינה תלויה בהסמה מסוימת: היא טענת קיום.
דוגמה. ההסמה מספקת את ואינה מספקת את — אבל בכל זאת ספיקה, כי הסמה אחרת (שנותנת לשניהם) כן מספקת אותה. אי־דוגמה (נוסחה שאינה ספיקה). . יש כאן משתנה אחד; כל הסמה נותנת לאחד משני הליטרלים, ולכן נותנת לנוסחה כולה. לא קיימת הסמה מספקת.
הערה מההקלטה [01:56:48]: "אל תגידו אף פעם. תביאו הסמה ותגידו: ההסמה נותנת ל-." הרבה טעויות נובעות מהתייחסות למשתנים כאילו יש להם ערכים. למשתנים אין ערכים — כדי לתת להם ערך צריך אובייקט נוסף מבחוץ.
הגדרה 6: השפה
עבור נוסחת CNF נסמן ב- את הקידוד הבינרי שלה. מניחים שכל מחרוזת בינארית מקודדת נוסחת CNF כלשהי (מחרוזת שאינה במבנה התקין מתורגמת לנוסחה קבועה אחת) — בדיוק כפי שעשינו עם קידוד מכונות טיורינג בחישוביות. אז
אינטואיציה. שימו את הקידוד בצד; הוא נחוץ רק מפני שמכונת טיורינג מקבלת מחרוזות. במהות, היא אוסף כל נוסחאות ה-CNF שיש להן הסמה מספקת.
דוגמה. . אי־דוגמה. .
משפטים והוכחות
משפט 1: אם אז
הוכחה. נניח , ותהי . עלינו להראות .
שלב א' — קבלת המכונה הראשונה. מוגדרת על ידי איחוד, ולכן נקלף את האיחוד: קיים כך ש-. זו שייכות למחלקה עדינה, ומהגדרתה קיימת מכונה וקיים כך ש- מכריעה את וכן לכל :
שלב ב' — בניית שפת הריפוד. נגדיר
כאשר תו חדש שאינו ב-, האלף־בית של .
למה דווקא ? מפני שההפרש היחיד בין ל- הוא ש- עולה בריבוע במעריך. אם אני מנפח את הקלט כך שאורכו יהיה סדר גודל של , אז מספר צעדים שהיה ביחס לקלט הישן נעשה ביחס לקלט החדש — בדיוק המעבר מ- ל-.
שלב ג' — בניית המכונה השנייה. נגדיר מכונה שעל קלט פועלת כך:
- נבדוק ש- מהצורה כאשר ; אחרת נדחה.
- נחשב את ונבדוק ש-; אחרת נדחה.
- נריץ את על ונחזיר את תשובתה.
נכונות: מכריעה את . יהי .
כיוון ראשון. אם אז קיים כך ש-. בהרצת על : שלב 1 עובר (זהו בדיוק המבנה), שלב 2 עובר (זהו בדיוק האורך), ובשלב 3 המכונה מקבלת את כי ו- מכריעה את . לכן מקבלת את .
כיוון שני. נניח ש- מקבלת את . מכיוון שכל שלב שנכשל גורם לדחייה, בהכרח שלושת השלבים עברו: מ-1 נובע ש- עבור ; מ-2 נובע ; ומ-3 נובע ש- קיבלה את , ולכן . מכאן עם , כלומר .
בנוסף, עוצרת תמיד: שלבים 1–2 הם סריקות סופיות, ו- עוצרת תמיד כי היא מכריעה. לכן מכריעה את .
שלב ד' — חשבון הזמן של . יהי שעבר את שלב 1, ונסמן .
- שלב 1 — סריקה אחת של הקלט: מרגע שראינו לוודא שלא מופיע עוד תו מ-. עלות: צעדים.
- שלב 2 — כאן נדרשת הישימות בזמן של : היא מבטיחה שחישוב הערך אורך צעדים. וכיוון ש-, זהו .
- שלב 3 — מהגדרת , ההרצה על אורכת לכל היותר צעדים. שוב , ולכן זה חסום ב-.
סך הכול, לכל :
לכן , ומכאן .
שלב ה' — חציית הגשר. מההנחה נובע . נקלף שוב את האיחוד: קיים כך ש-, ולכן קיימת המכונה השלישית וקיים כך ש- מכריעה את ולכל :
שלב ו' — בניית המכונה הרביעית. נגדיר שעל קלט :
- תחשב את ותבנה את .
- תריץ את על ותחזיר את אותה תשובה.
נכונות: מכריעה את . יהי . אם אז לפי הגדרת מתקיים , ולכן מקבלת אותו, ולכן מקבלת את . אם אז (שוב לפי הגדרת , שכל איבריה מגיעים מאיברי ), ולכן דוחה אותו ו- דוחה את .
שלב ז' — חשבון המקום של . יהי .
- שלב 1 — כאן נדרשת הישימות במקום של : חישוב הערך דורש מקום. כתיבת עצמה תופסת תאים.
- שלב 2 — מהגדרת , ההרצה דורשת לכל היותר תאים, וכיוון ש- זהו .
סך הכול , כלומר ולכן .
התבנית ב-high level: ארבע מכונות
זהו השלד שחוזר על עצמו בכל טיעון ריפוד, ושווה לזכור אותו לפני הפרטים:
| # | מה קורה | מקור |
|---|---|---|
| 1 | ⟵ מקבלים את עם חסם זמן (כי מוגדרת בזמן) | מהשמיים |
| 2 | בונים שפת ריפוד , ומעליה בונים את שמשתמשת ב- כקופסה שחורה ⟸ מסיקים | בנייה |
| 3 | ההכלה הנתונה ⟸ ⟵ מקבלים את עם חסם מקום (כי מוגדרת במקום) | מהשמיים |
| 4 | בונים את שמכריעה את בעזרת ⟸ מסיקים | בנייה |
הערה מההקלטה [00:40:10]: סטודנט שאל למה בכלל צריך את מכונות ה"גל" () אם כבר יש . התשובה: על ו- יש לנו מידע על זמן בלבד. כדי להסיק שייכות ל- אנחנו חייבים מכונה שאנו יודעים לחסום את המקום שלה — ולכן חייבים לקבל מכונה חדשה. המעבר הזה, ממשאב אחד למשאב אחר או ממודל אחד לאחר, הוא כל תוכן ההוכחה.
משפט 2:
זו טענה לא מותנית — והיא מודגמת כאן כדי להראות שטענות מותנות מסוג משפט 1 אינן חסרות ערך.
כיצד מוכיחים אי־שוויון בין קבוצות? פירושו: או . זו טענת "או", ולכן מוכיחים אותה בהפרדה למקרים: מניחים שהחלק הראשון אינו מתקיים ומוכיחים את השני. (המרצה הדגיש: לטענת "או" מספיק צד אחד, ואין צורך בהוכחה בשלילה.)
הוכחה. אם — סיימנו. נניח אפוא ; נראה .
- ממשפט 1 נובע .
- לכל מתקיים (שכן לכל ). לפי מונוטוניות במשאב, . הכלה נשמרת תחת איחוד, ולכן
- עכשיו נפעיל את משפט ההיררכיה בזמן על שתי מחלקות עדינות. נסמן
סופר־לינארית וישימה בזמן, ומתקיים שכן . לכן
- מהגדרת (עם ) מתקיים .
- נשרשר: . בשרשרת הכלות שאחת מהן ממש, ההכלה בין הקצוות היא ממש, ולכן
- מהכלה ממש נובע , ובפרט .
הערה: המרצה ציין ש"בדרך הזו" השתמשנו במשפט 1 בצורה חזקה מאוד — בלעדיו לא היה לנו מסלול מ- אל בתוך . וכן: הכלה נשמרת תחת איחוד, הכלה ממש לא — ולכן שלב 3 נעשה על מחלקות עדינות דווקא.
משפט 3: אם אז
בניסוח שהוצג בכיתה: הראו כי אם אז .
צמצום הניסוח. ראשית מעיפים את השלילות במעבר לנגדי־חיובי: הטענה שקולה ל"אם אז ". שנית, כבר ידוע (שיעור 4) ש- ו-; לכן כל מה שהטענה מחדשת הוא ההכלה בכיוון השני, ומספיק להוכיח:
אם אז .
וזו כבר טענה מן הצורה "אם הכלה אז הכלה" — מועמדת מובהקת לריפוד.
הוכחה. נניח , ותהי .
מכונה 1. קיים כך ש-, ולכן קיימת מכונה א־דטרמיניסטית וקיים כך ש- מכריעה את באופן א־דטרמיניסטי ולכל :
(ההדגשה "א־דטרמיניסטית" חיונית: ללא ציון אחר, "מכונה" פירושה מכונה דטרמיניסטית סטנדרטית.)
כמה לרפד? זה החישוב היחיד שדורש מחשבה, והמרצה עשה אותו בקול. אני רוצה ש- תהיה ב-, כלומר שזמן הריצה יהיה פולינומי ב-. אבל הזמן היקר הוא הרצת , שהוא מעריכי ב-. כדי שאותו מספר צעדים ייראה פולינומי, חייב להיות מעריכי ב-. לכן הריפוד יהיה מעריכי — וניקח מיד את הקבוע פנימה, כדי שהחשבון יֵצא נוח:
מכונה 2. נגדיר מכונה א־דטרמיניסטית , שעל קלט :
- תוודא ש- מהצורה עם ; אחרת תדחה.
- תחשב את ותוודא ש-; אחרת תדחה.
- תריץ את על ותחזיר את תשובתה.
שימו לב: שלבים 1 ו-2 דטרמיניסטיים לחלוטין; כל האי־דטרמיניזם של יושב בתוך הרצת בשלב 3. "מחזיקה את בבטן" ומריצה אותה, ולכן היא יורשת ממנה את האי־דטרמיניזם. (אין כאן שימוש במכונה אוניברסלית: כשאנו בונים את אנו כבר מכירים את וקובעים אותה בתוך המכונה.)
נכונות — בטרמינולוגיה של אי־דטרמיניזם.
כיוון ראשון. נניח , כלומר עבור . שלבים 1 ו-2 דטרמיניסטיים ויעברו בכל ריצה. כיוון ש- ו- מכריעה את א־דטרמיניסטית, קיימת ריצה של על שמסתיימת במצב מקבל. לכן קיימת ריצה של על שמסתיימת במצב מקבל — זו שבה בוחרת בשלב 3 את הבחירות של אותה ריצה מקבלת.
כיוון שני. נניח שקיימת ריצה של על המסתיימת במצב מקבל. בריצה זו שלבים 1 ו-2 עברו, ולכן קיים עם . כמו כן, בריצה זו ההרצה של על הסתיימה במצב מקבל, ולכן . מכאן .
בנוסף, כל ריצה של עוצרת, כי שלבים 1–2 סופיים וכל ריצה של עוצרת. לכן מכריעה את באופן א־דטרמיניסטי.
חשבון הזמן של . נסמן .
- שלב 1: סריקה אחת, צעדים.
- שלב 2: מהישימות בזמן של , החישוב עולה צעדים. וכיוון ש-, זהו .
- שלב 3: מהגדרת , לכל היותר צעדים — שהם, שוב, לכל היותר .
סך הכול , כלומר . הריפוד הוריד את הסיבוכיות ממעריכית ללינארית — לא מפני שהחישוב התייעל, אלא מפני שהמכנה גדל.
מכונה 3. מההנחה נובע , ולכן קיים כך ש-, ולכן קיימת מכונה דטרמיניסטית וקיים כך ש- מכריעה את ולכל :
מכונה 4. נגדיר מכונה דטרמיניסטית שעל קלט :
- תחשב את ותבנה את .
- תריץ את על ותחזיר את אותה תשובה.
ההוכחה ש- מכריעה את זהה מילה במילה לזו שבמשפט 1: מקבלת אותו.
הערה: בהרצאה השלב הזה נאמר במשפט אחד ("תשלימו בדיוק אותה הוכחה"); הפירוט המלא: אם אז לפי הגדרת מתקיים , ו- מכריעה את ולכן מקבלת. אם , אז אף איבר של אינו מהצורה עבור זה, ולכן ו- דוחה. בשני המקרים מחזירה את התשובה הנכונה, והיא עוצרת תמיד.
חשבון הזמן של . יהי .
- שלב 1: מהישימות בזמן של , החישוב עולה ; כתיבת עולה עוד צעדים.
- שלב 2: לכל היותר צעדים.
הגורם הדומיננטי הוא השני, והעלאה בחזקת מכניסה את כמקדם במעריך:
כאשר המעבר האחרון תקף כי לכל , וקלטים קצרים יותר נבלעים בקבוע. לכן
הערה מההקלטה [01:10:09]: אודליה שאלה אם המעבר בריפוד תמיד יהיה "זמן ↔ מקום". התשובה: לא. כאן זה מזמן לזמן, אבל מא־דטרמיניסטי לדטרמיניסטי. תמיד יש איזשהו מעבר בין משהו למשהו, אך הוא לא תמיד זמן ומקום — ומבחינת מבנה ההוכחה זה שקוף לחלוטין.
משפט 4:
הוכחה. נבנה מכונת טיורינג א־דטרמיניסטית דו־סרטית , שעל קלט :
- נספור את מספר המשתנים ב- (בפועל: האינדקס הגדול ביותר המופיע בנוסחה) ונסמנו .
- נכתוב ביטים באופן א־דטרמיניסטי על הסרט השני.
- נתייחס לביטים כאל הסמה (הביט ה- הוא ) ונבדוק אם מספקת את ; נקבל אם כן, ונדחה אחרת.
נכונות. אם ספיקה, קיימת הסמה המספקת אותה; קיימת ריצה של שבשלב 2 כותבת בדיוק את מחרוזת הביטים המתאימה ל-, ובריצה זו שלב 3 מוצא שהנוסחה מסופקת ומקבל. לכן קיימת ריצה מקבלת. להפך, אם קיימת ריצה מקבלת, אז המחרוזת שנכתבה בה בשלב 2 מגדירה הסמה שעברה את הבדיקה בשלב 3, כלומר הסמה שמספקת את — ולכן ספיקה. בנוסף כל ריצה עוצרת: שלב 2 כותב בדיוק ביטים, ושלבים 1 ו-3 דטרמיניסטיים וסופיים. לכן מכריעה את באופן א־דטרמיניסטי.
הערה: בהרצאה נאמר "אם הנוסחה ספיקה קיימת אפשרות לכתוב הסמה מספקת על הסרט השני" ותו לא; הנימוק המפורט לשני הכיוונים הוא הפירוט שלנו. המרצה השאיר במפורש את המשך ההוכחה כשיעורי בית לשיעור הבא [02:05:32].
חשבון הזמן. נסמן ו- את מספר המשתנים.
- שלב 1: סריקה של הקידוד תוך שמירת האינדקס המרבי — צעדים בגבול העליון הגס (סריקה אחת לכל השוואה); בוודאי פולינומי.
- שלב 2: כתיבת ביטים — צעדים.
- שלב 3: עוברים על הנוסחה ליטרל־ליטרל; לכל ליטרל ניגשים לביט המתאים בסרט השני, מה שעולה לכל היותר צעדי הזזה. מספר הליטרלים חסום ב-, ולכן צעדים.
סך הכול — פולינומי.
מעבר למכונה סטנדרטית. המחלקות מוגדרות באמצעות מכונות חד־סרטיות, ולכן נותר לתרגם. מהשקילות בין המודלים (שיעור 1), סימולציה של מכונה רב־סרטית במכונה חד־סרטית עולה לכל היותר ריבוע בזמן; לכן קיימת מכונה א־דטרמיניסטית חד־סרטית שמכריעה את בזמן . מכאן
הערה מההקלטה [02:03:54]: "לכתוב באופן א־דטרמיניסטי" אינו "לכתוב באקראי". אין כאן שום הסתברות: פונקציית המעברים פשוט מאפשרת גם לכתוב וגם לכתוב , ואנחנו שואלים אם קיימת בחירה נכונה. לא בכל ריצה המכונה תבחר נכון — אבל קיימת לה אפשרות כזו. הסתברות היא מודל אחר לגמרי.
דוגמאות ותרגילים מהשיעור
דוגמה 1: מעקב אחרי מילה קונקרטית בריפוד הריבועי
ניקח ונניח ש-, כאשר עם ו-, כלומר רצה על לכל היותר צעדים.
קדימה (מ- ל-): , ולכן ו-
על : שלב 1 סורק 12 תווים ומוודא שאחרי ה- הראשון אין תו מ- — עובר. שלב 2 מחשב ומשווה ל-9 — עובר. שלב 3 מריץ את על ב- צעדים. סך הצעדים — ואכן ההרצה נכנסת בתקציב .
אחורה (מ- ל-): על מחשבת 9, כותבת את אותו באורך 12, ומריצה עליו את במקום — שהוא , כלומר פולינומי ב-.
היכן זה נשבר בכוונה: המילה (זנב באורך 4) תיפול בשלב 2, וזה נכון — היא באמת אינה ב-. וזו הסיבה ששלב 2 אינו מותרות: בלעדיו הייתה מקבלת מילים קצרות מדי, וחשבון הזמן שנשען על היה קורס.
דוגמה 2: מעקב בריפוד המעריכי
נניח (כלומר ), , ו-, . גודל הריפוד: , ולכן .
על רצה לכל היותר 16 צעדים. ביחס ל- זה צעדים — לינארי. אותו מספר צעדים בדיוק, מכנה גדול פי תשעה. זה, בשורה אחת, כל טיעון הריפוד.
דוגמה 3: הבדיקה שהנוסחה מסופקת (הדוגמה מהסיכום)
נתונה הנוסחה
יש בה ארבעה משתנים (הם חוזרים על עצמם, אך המשתנים הם ), ולכן תכתוב בשלב 2 מחרוזת באורך 4.
ריצה שנכשלת: נניח שנכתב , כלומר . הפסוקית הראשונה: , , — כולם , ולכן הפסוקית אינה מסופקת, ולכן אינה מספקת את . הריצה הזו דוחה.
ריצה שמצליחה: לו נכתב , כלומר . הפסוקית הראשונה: — מסופקת. הפסוקית השנייה: — מסופקת. לכן מספקת את והריצה מקבלת.
המסקנה: קיימת ריצה מקבלת, ולכן מקבלת את — כנדרש, שכן אכן ספיקה. שימו לב שהריצה הדוחה אינה סתירה: בהכרעה א־דטרמיניסטית מספיק שקיימת ריצה מקבלת.
תרגיל 1 (נשאל בכיתה): הנוסחה שאינה ספיקה
שאלה: לפי ההגדרה מרגיש כאילו כל נוסחה ספיקה. תנו דוגמה לנוסחה שאינה ספיקה.
פתרון: . יש כאן משתנה יחיד, ולכן שתי הסמות אפשריות בלבד. אם אז ולכן ; אם אז . בשני המקרים , ולכן לא קיימת הסמה מספקת ו-.
תרגיל 2 (השאלה המכינה מהשיעור הקודם)
שאלה: מכונה רצה מיליון צעדים. מכניסים לה קלט גדול יותר והיא רצה את אותו מספר צעדים. סיבוכיות הריצה עלתה או ירדה?
פתרון: ירדה. סיבוכיות נמדדת תמיד ביחס לאורך הקלט. אם מספר הצעדים לא השתנה (או השתנה עד כדי קבוע) והקלט התארך, אז אני "משלם את אותו מחיר על קלט גדול יותר". זו בדיוק ההצדקה לריפוד: לא מייעלים כלום, רק מגדילים את המכנה.
תרגיל 3 (הכיוון של הריפוד — כמה לרפד?)
שאלה: בטענה על , מדוע לא הספיק ריפוד ריבועי כמו במשפט 1?
פתרון: מטרתנו הייתה , כלומר זמן פולינומי ב-. הצוואר הוא הרצת , שעולה — מעריכי ב-. ריפוד ריבועי נותן , ואז אינו פולינומי ב-. רק ריפוד מעריכי מביא את לאותו סדר גודל כמו מספר הצעדים, ואז אותו מספר צעדים נעשה לינארי ב-. הכלל האצבע שהמרצה נתן: כתבו את החסם הרצוי, כתבו את החסם שיש, וראו איזה מגשר; אם חורגים — הקטינו או הגדילו את הריפוד ונסו שוב.
תרגיל 4 (האינטואיציה מההקלטה המקבילה, [02:07:54]–[02:13:14])
שאלה: קחו את השפה is a composite number in binary ואת האלגוריתם הנאיבי שעובר על כל המספרים מ- עד ומנסה לחלק. מה זמן הריצה שלו, ומה קורה אם משנים את הקידוד לאונרי?
פתרון: בקידוד בינרי, אורך הקלט הוא בעוד שמספר הפעולות הוא (ואף יותר, בגלל עלות כל חילוק). לכן ביחס לאורך הקלט זמן הריצה הוא — מעריכי. בקידוד אונרי, אורך הקלט הוא בדיוק ; אותו אלגוריתם בדיוק, ללא שינוי של תו אחד, רץ עכשיו בזמן פולינומי (סדר גודל ) ביחס לאורך הקלט.
המסקנה: שינוי מלאכותי של אורך הקלט משנה את הסיווג הסיבוכיותי של אותו אלגוריתם. הריפוד הוא בדיוק המהלך הזה, מנוסח כשפה חדשה במקום כקידוד חדש.
הערות מהשיעור
- [00:09:20] "בדרך תהיינה ארבע מכונות." שתיים מקבלים משייכות למחלקה, שתיים בונים. שווה לכתוב את הספירה הזו בשוליים לפני שמתחילים — היא מונעת אבדן דרך באמצע.
- [00:19:31] שאלת סטודנט: איך מכירה את התו , הרי הוא לא באלף־בית של ? תשובה: היא אינה מכירה אותו, ואינה צריכה — מורצת רק על , לא על הזנב. בעקבות השאלה המרצה חידד את הכתיבה והוסיף במפורש "כאשר ", וסימן = האלף־בית של .
- [00:21:04] מוסכמה: אחרי כל שלב אפשר לכתוב "אחרת נדחה", במקום שלב מסכם רביעי. שתי הכתיבות שקולות; בסיכום מופיע שלב 4 מפורש, בהקלטה הוא נבלע בשלבים.
- [00:33:10] הניסוח המדויק של הרווח: "מספר הצעדים לא השתנה, אבל הכול גדל, אז פתאום אני משלם פחות ביחס לקלט."
- [00:45:28] הישימות אינה טכניקליות. בכל טיעון ריפוד יש לומר במפורש שפונקציית הריפוד ישימה (בזמן, במקום, או בשניהם — לפי מה שחוסמים). "היא תמיד תהיה חשובה בריפוד, אז תמיד צריך להגיד את זה" [01:34:30].
- [00:59:45] מלכודת מושגית: היא טענה על שפות. אין טענה שמכונה שרצה בזמן כזה תרוץ במקום כזה; הטענה היא שאם קיימת מכונה אחת, קיימת מכונה אחרת. בכל ההכלות הסטנדרטיות שראינו עד כה המכונה נשארה אותה מכונה — כאן, לראשונה, החלפנו מכונות.
- [01:00:17] טכניקה לטענת "או": מוכיחים בהפרדה למקרים — מניחים שהחלק הראשון אינו מתקיים ומוכיחים את השני. אין צורך להוכיח את שני הצדדים, ואין צורך בהוכחה בשלילה.
- [01:05:46] שאלת סטודנט: מאיפה הופיעה פתאום הכלה ממש? תשובה: היא הגיעה ממשפט ההיררכיה בזמן, והיא נשמרת: בשרשרת הכלות שאחת מהן ממש, ההכלה בין הקצוות היא ממש.
- [01:38:48] כלל עבודה: ריפוד מוכיח הכלה. אם רוצים הכלה ממש, מפרקים לשתיים — הכלה בכיוון אחד, ואי־הכלה בכיוון השני. לא מערבבים את שני המהלכים.
- [01:06:25] הערת מבחן/תרגיל: "תקבלו תרגיל ממש ממש דומה בשיעורי הבית. תעקבו אחד לאחד וזה מסתדר." המבנה קבוע; הדבר היחיד שמשתנה בין שאלה לשאלה הוא גודל הריפוד.
- [01:25:06] שאלת סטודנט: האם היא מכונה א־דטרמיניסטית מפני ש"משכנו" אליה את האי־דטרמיניזם של ? תשובה: כן בדיוק. היא מחזיקה את בתוכה ומריצה אותה, ולכן יורשת את האי־דטרמיניזם.
- [01:45:45] טרמינולוגיה: "טפל" (tuple) ולא "סדרה" — סדרה מרמזת על אינסופיות, ופסוקית היא סופית תמיד. "הסגר" ו"פסוקית" הם שני שמות לאותו מושג.
- [02:06:05] מה נשאר פתוח לשיעור הבא: להוכיח פורמלית ש- מכריעה את באופן א־דטרמיניסטי, לחשב את זמן הריצה, ולעבור למכונה חד־סרטית ("לא לשכוח שהמחלקות מוגדרות על ידי מכונה חד־סרטית"). הפירוט המלא הוזן כאן לתוך משפט 4.
פערים בין הסיכום להקלטה
- מקור: עמוד 6 בסיכום. הפער: כתוב "" מיד אחרי שחושב חסם זמן . ההכרעה: זו פליטת קולמוס; הנכון הוא (ואכן אינה טענה נכונה כלל). ההקלטה [01:28:57] מאשרת: " הוא אפילו בזמן ליניארי, אבל זה מוכל ב-". תוקן בגוף.
- מקור: עמוד 6 בסיכום. הפער: כתוב "קיים כך ש-" — אף שההנחה היא , ואף שהשורה הבאה בסיכום עצמו נוקבת בחסם זמן . ההכרעה: אותה פליטת קולמוס (Space במקום Time). הנכון הוא . תוקן בגוף.
- מקור: עמוד 5 בסיכום. הפער: מספור השלבים של במקרה ה- הוא ①,③,④ — שלב ② חסר. ההכרעה: מספור בלבד, ללא חוסר מתמטי; מוספרו כאן 1,2,3 בעקביות עם ההוכחה הראשונה.
- מקור: ההקלטה. הפער: בהקלטה מופיעה שאלה מכינה ("מכונה שרצה מיליון צעדים על קלט גדול יותר — הסיבוכיות עלתה או ירדה?") שהיא הגרעין האינטואיטיבי של כל הטכניקה, ואינה מופיעה בסיכום כלל. ההכרעה: נכללה כתרגיל 2 וכהערה.
- מקור: ההקלטה [00:42:15]–[00:45:28]. הפער: דיון ארוך ומהותי מדוע אי אפשר לחסום את המקום באורך הפלט, ומדוע דווקא הישימות במקום היא שמצילה — אין לו זכר בסיכום. ההכרעה: נכלל כהערה בסעיף הרקע.
- מקור: ההקלטה [01:14:30]–[01:16:02]. הפער: ההסבר כיצד בוחרים את גודל הריפוד (כותבים את החסם הרצוי, את החסם הקיים, ומגשרים; ואם חורגים — מנסים שוב) הוא הדבר היחיד שדורש מחשבה בהוכחה, והסיכום מציג רק את התוצאה. ההכרעה: נכלל בגוף משפט 3 ובתרגיל 3.
- מקור: ההקלטה השנייה (zcCQY3oT40Y). הפער: ההקלטה כולה, פרט לשבע הדקות האחרונות, עוסקת בחומר של שיעור אחר (המודל הא־דטרמיניסטי, דוגמת המספרים הפריקים, ואפיון באמצעות מוודא ועדות והוכחת השקילות). ההכרעה: סומנה
partial; מתוכה נלקחה רק ההקדמה המוטיבציונית לריפוד (בינרי מול אונרי), שנכללה כתרגיל 4. אין בה גרסה שנייה של ההוכחות, ולכן הצלבת החסמים נעשתה מול הסיכום בלבד. - מקור: ההקלטה [02:01:15] מול עמוד 8 בסיכום. הפער: בכתוביות האוטומטיות הפסוקית השנייה בדוגמה נשמעת "" ללא שלילה, ובסיכום היא . ההכרעה: הסיכום מנצח (וממילא ההסמה מספקת את שתי הגרסאות). כמו כן, מחרוזות ההסמה בכתוביות מקוטעות ("", ""); הסיכום נוקב ב- ו-, ואלו נבדקו ונמצאו נכונות.
- מקור: ההקלטה [02:05:32] והסיכום עמוד 8. הפער: שני המקורות עוצרים אחרי תיאור המכונה ל- ולפני חשבון זמן הריצה והמעבר למכונה חד־סרטית. ההכרעה: ההשלמה נכתבה כאן במלואה וסומנה כהשלמה בהערה; ראו גם
open_questions. - מקור: עמוד 3 בסיכום. הפער: הערה סגולה בשוליים השמאליים, שנראה שהיא מסבירה מדוע הריפוד הוא בגודל , קריאה רק חלקית. ההכרעה: שוחזרה מתוך ההסבר המקביל בהקלטה [00:50:55] ("מכיוון שההבדל בין ל- היה רק שה- עולה בריבוע, ריפדתי בריבוע").
סיכום ונקודות למבחן
מה לזכור בעל פה
- התבנית של ארבע המכונות: מקבלים–בונים–מקבלים–בונים. שני ה"מקבלים" באים משייכות למחלקה (אחרי קילוף האיחוד), שני ה"בונים" הם עבודה שלכם.
- שלושת השלבים של מכונת הריפוד: בדיקת צורה → חישוב הריפוד ובדיקת אורך → הרצת המכונה הישנה כקופסה שחורה. אף פעם לא יותר מזה.
- הכיוון של שתי הטענות: אם אז (מהקטנה לגדולה!); אם אז , כלומר — ולא ההפך.
- התוצאה הלא מותנית: , ולמעשה בכל מקרה או .
- CNF satisfiable, ו- באמצעות "ניחוש" הסמה ואימותה.
מלכודות סטנדרטיות
- לרפד בכיוון הלא נכון. הריפוד תמיד מוסיף אורך; הוא מוריד סיבוכיות יחסית, לעולם לא מוריד מספר צעדים. אם החשבון שלכם "חוסך צעדים" — טעיתם.
- לשכוח את בדיקת אורך הזנב. בלי שלב 2, השפה מכילה מילים שלא התכוונתם אליהן וכל חשבון הזמן קורס.
- לשכוח לומר "ישימה בזמן / במקום". זה נקודות במבחן, וזה גם באמת נחוץ.
- לערבב הכלה עם הכלה ממש. הכלה נשמרת תחת איחוד; הכלה ממש לא. משפט ההיררכיה חל על מחלקות עדינות בלבד.
- לבלבל אי־דטרמיניזם עם אקראיות. "קיימת ריצה מקבלת" אינו "בהסתברות גבוהה".
- לכתוב . משתנה אינו ערך; רק הסמה נותנת ערך.
- להניח שמכונה נשארת אותה מכונה בין שתי מחלקות. טענות ההכלה הן על שפות.
צ'ק־ליסט: מה צריך לדעת לעשות אחרי השיעור
- בהינתן שתי מחלקות וטענה מותנית מסוג "אם הכלה אז הכלה", לקבוע מה גודל הריפוד מתוך חשבון של החסם הרצוי מול החסם הקיים.
- לכתוב מכונת ריפוד בשלושת שלביה ולהוכיח שהיא מכריעה את השפה המרופדת, בשני הכיוונים — ובמקרה הא־דטרמיניסטי, בטרמינולוגיה של "קיימת ריצה מקבלת".
- לבצע את שני חשבונות המשאב (של ושל ) עד הסוף, כולל המעבר מ- ל- ובחזרה.
- לשלב ריפוד עם משפט ההיררכיה כדי לקבל תוצאה לא מותנית, כולל ההפרדה למקרים בהוכחת טענת "או".
- להגדיר ליטרל, פסוקית, נוסחת CNF, הסמה וספיקות במדויק, ולהבחין בין תחביר לסמנטיקה.
- לתאר את המכונה הא־דטרמיניסטית עבור , לנתח את זמן ריצתה, ולהסביר את המעבר למכונה חד־סרטית.
