תורת החישוביות/כריעות שפות/משפט רייס: הבדלים בין גרסאות בדף
תוכן שנמחק תוכן שנוסף
מ ←קישורים חיצוניים: קטגוריה |
שילוב זמני |
||
שורה 2:
[[w:משפט רייס|משפט רייס]]
טוען שבהנתן קידוד של מ״ט <math>\langle M \rangle</math>, קשה לדעת
ב[[#תכונות של שפות|תכונות של שפות]] נגדיר במדוייק מהן תכונות של שפות, ובפרט מהן תכונות לא-טריוויאליות שלהן. ב[[#משפט רייס|משפט רייס]] נוכיח שההחלטה האם לשפת המ"ט ישנה תכונה כזו - איננה כריעה. ב[[#דוגמאות ליישומי משפט רייס|דוגמאות ליישומי משפט רייס]] נראה דוגמאות לשימוש נכון ושגוי במשפט. ב[[#מניה רקורסיבית של שפות בעלות תכונה|מניה רקורסיבית של שפות בעלות תכונה]] נוכיח שההחלטה האם לשפת המ"ט יש תכונה לא טריוויאלית - בעקרון איננה אפילו נתנת למניה רקורסיבית (ונדון במקרים מיוחדים בהם היא כן).
==תכונות של שפות==
שורה 38 ⟵ 40:
לכל תכונה לא טריוויאלית S של שפות ב־RE מתקיים:{{רווח קשיח|10}} <math>L_S \notin R</math>{{רווח קשיח|10}}}}
{{הוכחה|1=
נראה כי <math>L_S \notin R</math> על־ידי הרדוקציה <math>\text{HP} \le L_S</math>. כלומר, נניח על דרך השלילה <math>L_S \in R</math>, ונראה כי אפשר להכריע לכל מ"ט <math>M</math> וקלט <math>x</math>, האם <math>M</math> עוצרת על <math>x</math> ((מה ש[[תורת_החישוביות/כריעות_שפות/שפות_שאינן_כריעות#שפות_שאינן_כריעות|ידוע שאינו נכון]]).
נניח כי ה[[אוטומטים ושפות פורמליות/שפות פורמליות|שפה הריקה]] אינה ב־<math>S</math> (כלומר▼
▲בלי הגבלת הכלליות, נניח כי ה[[
<math>\emptyset \notin S</math>).
היות ש־<math>S</math> אינה טריוויאלית, בהכרח קיימת שפה <math>L_0</math> כך ש־<math>L_0 \in S</math>. מכיוון ש־<math>S</math> היא קבוצה של שפות ב־<math>RE</math>, גם <math>L_0 \in RE</math>, ונניח כי <math>M_0</math> היא מ״ט המקבלת אותה.▼
כפי שראינו לעיל, גם המשלים של תכונה לא-טריוויאלית הוא תכונה לא טריוויאלית, והכרעה רקורסיבית לגבי <math>S</math> שקולה להכרעה רקורסיבית לגבי <math>\overline S</math>.
▲היות
נגדיר את הרדוקציה ע"י מ"ט <math>
# מריצה את <math>M</math> על <math>x</math> (ומתעלמת מהתוצאה, אם יש), ואז
# מריצה את <math>M_0</math> על <math>w</math>, ומקבלת/דוחה כמותה
#* אם M לא עוצרת על x, גם <math>M_x</math> לא עוצרת. <math>L(M_x) = \emptyset \notin S</math>▼
#* אם M עוצרת על x{{כ}}, <math>M_X</math> מתנהגת בדיוק כמו <math>M_0</math>{{כ}}, <math>L(M_x)=L(M_0)\in S</math>▼
מהנחתנו בשלילה ש-<math>L_S \in R</math>, נובע שיש מ"ט רקורסיבית <math>Q</math> המכריעה זאת. כדי להכריע האם <math>M</math> עוצרת על <math>x</math>, נשאל את <math>Q</math> האם <math>M_x \in L_S</math>:
▲#
▲במקרה זה, פשוט נוכיח את המשפט לגבי התכונה המשלימה <math>\overline S</math> –
▲#
▲כפי שראינו לעיל, גם המשלים של תכונה לא-טריוויאלית הוא תכונה לא טריוויאלית, והכרעה רקורסיבית לגבי <math>S</math> שקולה להכרעה רקורסיבית לגבי <math>\overline S</math>. באופן פורמלי,
}}▼
נשים לב שהרדוקציה אכן ברת חישוב - בהנתן <math>(\langle M \rangle, x)</math>, קל לבנות פונקציה המשרשרת את שתי המכונות ויוצרת את תיאור <math>M_x</math>. כמו כן, לפי הנחתנו בשלילה, הקריאה ל<math>Q</math> מסתיימת גם כן.
▲}}
לכל תכונה לא טריוויאלית S של שפות ב־RE מתקיים:{{רווח קשיח|10}} <math>L_S \notin RE</math>{{רווח קשיח|10}}}}▼
==דוגמאות ליישומי משפט רייס==
שורה 81 ⟵ 72:
הבעיה היא
<center><math>
\text{Palindromes} = \{ \langle M \rangle
</math></center>
כדי להמיר זאת לפורמט מתאים לבעיית רייס, נכתוב את התכונה
<center><math>
S_P = \{ L
</math></center>
כעת, בפורמט המתאים, נוכל לשים לב שמשפט רייס חל. התכונה איננה טריוויאלית: השפה (הנתנת למניה רקורסיבית)
שורה 106 ⟵ 97:
{{דוגמה|תוכן=
החלט האם הבעיה הבאה היא כריעה: נתון ייצוג של מ"ט <math>M</math>. האם אפשר לאפטם את <math>M</math> כך שזמן הריצה שלה בקבלת <math>x</math> יהיה
כדי להמיר זאת לפורמט מתאים לבעיית רייס, נכתוב את התכונה
<center><math>
S_P = \{ L
</math></center>
כעת אפשר לראות שמדובר בתכונה של שפות, הגם שהן מוגדרות ע"י מכונות טיורינג. המשך דוגמה זו מופיע ב[[תורת החישוביות/כריעות שפות/משפט רייס/תרגילים#אופטימיזציית מ"ט|תרגיל: אופטימיזציית מ"ט]].
שורה 122 ⟵ 113:
ב[[#משפט רייס|חלק קודם]] ראינו שאם התכונה <math>S</math> איננה טריוויאלית, אז שאלת השייכות ל-<math>L_S</math> איננה ב-<math>R</math>. בחלק זה נעסוק בשאלה מהם התנאים ל-<math>S</math> כך ששאלת השייכות ל-<math>L_S</math> תהיה ב-<math>RE</math>.
ללא תנאים נוספים, אם <math>S</math> תכונה לא טריוויאלית, אז שאלת השייכות ל-<math>L_S</math> איננה ב-<math>RE</math>. ב[[תורת החישוביות/כריעות שפות/משפט רייס/תרגילים#הכרעת תכונות לא-טריוויאליות איננה נתנת למניה רקורסיבית|תרגיל: הכרעת תכונות לא-טריוויאליות איננה נתנת למניה רקורסיבית]] תתבקש להוכיח
{{משפט|
▲
(דהיינו, ישנה שפה <math>S</math> שעבורה ההחלטה איננה ב-<math>RE</math>). }}
עם זאת, ישנם תנאים נוספים ל-<math>S</math>, שקיומם מהווה תנאי מספיק והכרחי לכך ששאלת השייכות היא ב-<math>RE</math>.
שורה 139 ⟵ 134:
נשים לב שמתנאי 3 נובע שישנה מכונה <math>Q_3</math> אשר בהנתן שפה סופית השייכת ל<math>S</math>, עוצרת בשלב כלשהו ומקבלת את השפה. המכונה <math>Q</math> משתמשת ב<math>Q_3</math>.
ש
המכונה <math>Q</math> פועלת במספר לולאות מקוננות:
# בלולאה החיצונית ביותר, היא מקדמת אינדקס <math>i = 0, 1, 2, \ldots</math>. עבור כל <math>i</math>, היא מייצרת את המחרוזת ה-<math>i</math> ב[[w:סדר לקסיקורפי|סדר לקסיקורפי]].
# בלולאה פנימית יותר, עבור ערך <math>i</math> והמחרוזת ה-<math>i</math>, היא מפעילה את <math>M</math> למשך <math>i</math> שלבים. אם המילה מתקבלת, <math>Q</math> מוסיפה אותה לרשימת מילים ש-<math>M</math> מקבלת.
# בלולאה פנימית יותר,
# בלולאה הפנימית ביותר, עבור ערך <math>i</math> ותת-קבוצה של מילים מתקבלות, המכונה <math>Q</math> מריצה את <math>Q_3</math> לשאול האם תת-הקבוצה שייכת ל<math>S</math>. אם כן, המכונה <math>Q</math> עוצרת בתשובה חיובית.
שורה 162 ⟵ 157:
{{תורת החישוביות|מוגבל}}
|