תורת החישוביות/מודל לבעיות הכרעה

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

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

השפה המתקבלת והנדחית על-ידי מכונה עריכה

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

 

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

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

 
להרחבה בנושא שפות פורמליות, וסימונים מקובלים, ראה אוטומטים ושפות פורמליות/שפות פורמליות.

שקילות למודל הכללי עריכה

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

קיימת מכונה   המחשבת את       אם״ם     קיימת מכונה   המקבלת את  


הוכחה:

כיוון א': נניח שקיימת המכונה  , ובעזרתה נבנה את המכונה  .
בהנתן הקלט  , המכונה   תריץ את   על x. אם   עוצרת עם תוצאה z, המכונה   תבדוק האם  , ותקבל אם שווים (ואחרת, תדחה). נשים לב שאם   אינה עוצרת על x, אז   לא תעצור גם כן.
כיוון ב': נניח שקיימת המכונה  , ובעזרתה נבנה את המכונה  .
הרעיון הוא ש־  תסרוק את כל האפשרויות ל־ , ועבור כל אפשרות y "תשאל" את   האם  , אם כן, אזי   והמכונה תסיים. הבעיה היא שייתכנו ערכים של y עבורם   לא עוצרת על  . כדי להתגבר על בעיה זו נבצע למעשה חקירה של כל ערכי ה־y "בו זמנית". המכונה תעבוד בעזרת מספר לולאות מקוננות (כל אחת יכולה להשתמש בסרט אחד או יותר, לפי מה שכבר ראינו). נניח שהקלט הוא x.
  1. בלולאה החיצונית ביותר, המכונה תעדכן מונה מספרי רץ  
  2. עבור כל n, בלולאה פנימית יותר, המכונה תייצר את סדרת המחרוזות שאורכן לכל היותר  , כלומר  .
  3. עבור כל   ומחרוזת  , בלולאה פנימית יותר, המכונה תריץ   צעדים של   על  . אם בשלב כלשהו של הלולאה הפנימית ביותר   תעצור על   בתשובה חיובית, אז המכונה   תחזיר את   כפלט.


 

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


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