תורת החישוביות/כריעות שפות/ארגז חול

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

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

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

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

סוגי הכריעות ומחלקות הכריעות[עריכה]

כריעות (מלאה)[עריכה]

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


הגדרה:

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

שפה ניתנת להכרעה אם קיימת מ"ט שמכריעה אותה. שפה אינה כריעה אם לא קיימת מ״ט שמכריעה אותה.



דוגמה:

להלן דוגמאות לשפות כריעות:

  1. השפה – לכל קלט, בצעד החישוב הראשון המכונה עוברת ל־.
  2. השפה הריקה – לכל קלט, המכונה עוברת בצעד החישוב הראשון ל־.
  3. כל שפה סופית – נבדוק כל מילה אפשרית. מכיוון שכמות המילים סופית, נדרשים מספר סופי של מצבים (ובפרט, זו שפה רגולרית)
  4. כל שפה רגולרית – אוטומט סופי הוא מקרה פרטי של מכונת טיורינג, לכן מ"ט מסוגלת לחשב כל מה שאוטומט סופי יכול.
  5. מספר האפסים בקלט שווה למספר האחדים . (זו שפה לא-רגולרית)


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

הגדרה: מחלקת השפות הכריעות (או הרקורסיביות)

נגדיר את המחלקה כקבוצת השפות הכריעות (לחלופין, ניתנות להכרעה או רקורסיביות, Recursive)

כריעות למחצה חיובית[עריכה]

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


הגדרה:

נאמר שמ"ט מכריעה למחצה חיובית או מונה רקורסיבית שפה אם היא מקבלת כל מילה ב־ ואיננה מקבלת מילה שאיננה ב-

שפה ניתנת למנייה רקורסיבית אם קיימת מ"ט שמכריעה אותה למחצה חיובית. שפה אינה נתנת למניה רקורסיבית אם לא קיימת מ״ט המקבלת אותה למחצה חיובית.

Info icon.png

מעט אטימולוגיה.

שפה נקראת "נתנת למניה רקורסיבית" מהסיבה הבאה. נניח ש- היא שפה נתנת למניה רקורסיבית ע"י מ"ט . נקח מניה כלשהי של המחרוזות על פני . כעת נפעיל את צעד אחד על המחרוזת הראשונה במניה, 2 צעדים על כ"א מ2 המחרוזות הראשונות במניה, 3 צעדים על כ"א מ3 -המחרוזות הראשונות במניה, וכו'. ברור שכל מחרוזת השייכת לL, תזוהה ככזו בשלב כלשהו ע"י כך שM תעצור ותקבל אותה. בכל פעם שמילה מתקבלת, נרשום אותה ברשימה בצד. מצאנו דרך לבצע מניה של כל המחרוזות של .


להלן מספר דוגמאות לשפות נתנות למניה רקורסיבית:



דוגמה: השפה האוניברסלית

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

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




דוגמה: שפת האלכסון

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

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




דוגמה: שפת בעיית העצירה

שפת בעיית העצירה מוגדרת כך: עוצרת על

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


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

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

נגדיר את המחלקה כקבוצת השפות הכריעות למחצה חיובית (לחלופין, נתנות למניה רקורסיבית, Recursively Enumerable)

כריעות למחצה שלילית[עריכה]

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


הגדרה:

נאמר שמ"ט מכריעה למחצה שלילית היא דוחה כל מילה שאיננה ב־ ואיננה דוחה מילה ב-


הגדרה: מחלקת השפות הכריעות למחצה שלילית)

נגדיר את המחלקה כקבוצת השפות הכריעות למחצה שלילית (coRecursively Enumerable)

תכונות מחלקות הכריעות[עריכה]

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

הייחסים בין קבוצות השפות



טענה:

  1.   ,  


הוכחה: {{{1}}}

מש"ל.PNG


טענה:

3.   סגורה למשלים: אם אז גם השפה המשלימה,   


הוכחה: {{{1}}}

מש"ל.PNG


טענה:

4.   סגורה לאיחוד:
לכל מתקיים   

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


טענה:

5.   סגורה לאיחוד:
לכל מתקיים   

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


טענה:

5.   סגורה לאיחוד  
6.   סגורות לחיתוך ושרשור  

(תרגיל: הוכח).


- ארגז חול -