ViewWiki

העולם, קצת יותר מקרוב

מכונות טיורינג וחישוביות.

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

גלו את הסצנה מאמר אינטראקטיבי

01 / הניסוי

לקרוא, לכתוב, לזוז. ושוב.

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

תמונה של הסצנה התלת־ממדית „מכונות טיורינג וחישוביות”, שעוסקת בשאלה: האם תוכנית יכולה לדעת אם כל תוכנית אחרת תיעצר אי־פעם?
סצנה אינטראקטיבית

הגרסה האינטראקטיבית נטענת…

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

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

02 / שלושה סופים

לעצור, להסתובב או לגדול לעד.

כל תרשים מראה את הסרט בשלושה רגעים של ריצה אחת; המשולש מסמן את הראש, ובתאים המלאים כתוב 1 או 0.

נעצרת01
צעד 011111Aצעד 4111111Bצעד 811111עצירה

מחבר

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

נעצרת
כן, בצעד 8
חוזרת על תמונה
לא
איך אפשר לדעת
מריצים עד שהיא נעצרת
אחדות על הסרט אחרי 600 צעדים
5
מסתובבת02
צעד 11Bצעד 21Aצעד 31B

פינג־פונג

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

נעצרת
אף פעם
חוזרת על תמונה
כן, כל 2 צעדים
איך אפשר לדעת
מזהים את התמונה שחוזרת
אחדות על הסרט אחרי 600 צעדים
1
גדלה לעד03
צעד 610Aצעד 20110Aצעד 10011011A

מונה

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

נעצרת
אף פעם
חוזרת על תמונה
אף פעם
איך אפשר לדעת
חושבים על הכללים שלה
אחדות על הסרט אחרי 600 צעדים
3
הרעיון הגדול

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

מכונה שרק קוראת, כותבת וזזה

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

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

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

כרטיס הכללים הוא התוכנית

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

המחבר מחבר 3 ו־2 שכתובים כקווי ספירה, 111_11. במצב A הוא רץ ימינה על המספר הראשון. ברווח הוא כותב 1, מחבר את שני המספרים לשישה קווים ועובר ל־B. ‏B רץ עד הסוף, חוזר צעד אחד ועובר ל־C, שמוחק קו אחד ועובר לעצירה. למצב העצירה אין שורה בכרטיס, ולכן אין עוד מה לעשות: המכונה נעצרת וחמש אחדות על הסרט.

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

חזרה לניסוי

יש תוכניות שנעצרות ויש שלעולם לא

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

הבונה העסוק מתחיל על סרט ריק עם שלושה מצבים. הוא נודד הלוך ושוב, כותב שש אחדות ונעצר בצעד 14. טיבור ראדו שאל ב־1962 כמה צעדים יכולה לרוץ מכונה עם מספר מצבים נתון לפני שהיא נעצרת. התשובות גדלות במהירות מגוחכת: השיא לחמישה מצבים, 47,176,870 צעדים, הוכח ב־2024 בשיתוף פעולה גדול ברשת, ולשישה מצבים השיא הוא מספר ארוך מכדי שאפשר יהיה לכתוב אותו.

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

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

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

חזרה לניסוי

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

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

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

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

חזרה לניסוי

למה בודק העצירה לא יכול להתקיים

כרטיס כללים הוא בעצמו רק סימנים, ולכן אפשר לכתוב אותו על סרט ולתת אותו כקלט למכונה אחרת, ואפילו למכונה עצמה. טיורינג השתמש בזה כדי להראות ש־H לא יכול להתקיים. נניח שהוא קיים. נבנה מכונה חדשה, D, שמקבלת כרטיס כללים P, שואלת את H אם P נעצרת כשנותנים לה את הכרטיס שלה, ואז עושה את ההפך: אם H עונה „עוצרת”, ‏D מסתובבת לעד; אם H עונה „רצה לעד”, ‏D נעצרת.

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

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

חזרה לניסוי

מה זה אומר על מחשבים

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

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

מה המודל הזה משמיט

מכונת טיורינג היא רעיון מתמטי, לא מכשיר; טיורינג מעולם לא בנה אחת, והסלילים, החותמת והמנורה מצוירים כדי להפוך את הרעיון למוחשי. הסרט שלה אינסופי, ואילו לכל מחשב אמיתי יש זיכרון סופי, כך שבעיקרון מחשב אמיתי חייב בסוף לחזור על עצמו. בפועל זה לא עוזר: למכונה עם כמה ג׳יגה־בייטים יש יותר מצבים אפשריים ממספר האטומים ביקום. ארבעת כרטיסי הכללים הם דוגמאות זעירות, כל צעד מואט ומוחלק כדי שאפשר יהיה לצפות בו, והמחוון נעצר ב־500 צעדים אף שהפינג־פונג והמונה לעולם לא נעצרים. בודק העצירה H דמיוני, והלוח מקצר את ההוכחה של טיורינג לעיקר שלה: לתת ל־D „את הכרטיס שלה” פירושו לכתוב על הסרט שלה תיאור של כרטיס הכללים שלה.

מותר לעשות בהם שימוש חוזר, עם קרדיט ל־ViewWiki וקישור לעמוד הזה.

04 / ללמוד את זה בקורס

תרגול, צעד אחר צעד.

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

  1. מכונת טיורינג מדעי המחשב · חישוביות
  2. טבלאות מצבים מדעי המחשב · חישוביות
  3. בעיית העצירה מדעי המחשב · חישוביות