You are on page 1of 25

‫יחידה ‪10‬‬

‫מכונת טיורינג‬
‫קורס אוטומטים ושפות פורמליות‬
‫מרצה‪ :‬אברהם בן‪-‬ארויה‬
‫מצגות‪ :‬עקיבא קליינרמן‬
‫מכונת טיורינג‬

‫מכונת טיורינג (מ"ט) הוא מודל חישובי ש"חזק" יותר מכל המודלים‬ ‫‪‬‬
‫הקודמים (אס"ד‪ ,‬אסל"ד‪ ,‬אמל"ד) שלמדנו‪.‬‬
‫‪" ‬חזק" במובן הזה שהוא יכול לחשב שפות שלא ניתנות לחישוב‬
‫במודלים הקודמים‪.‬‬
‫מ"ט קרויה על שמו של המתמטיקאי אלן טיורינג‪.‬‬ ‫‪‬‬

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

‫מכונת טיורינג מורכבת מהרכיבים הבאים‪:‬‬

‫‪.1‬מספר סופי של מצבים‬

‫‪ .2‬סרט עבודה אינסופי‪ .‬הסרט המחולק לתאים‬


‫ובכל תא כתוב תו יחיד‪ .‬זהו בעצם ה"זיכרון" של המ"ט‪.‬‬

‫‪ .3‬ראש קורא וכותב היכול לזוז ימינה ושמאלה‬


‫הגדרת מכונת טיורינג‬

‫פורמלית‪ ,‬מכונת טיורינג היא שביעייה }𝑗𝑒𝑟‪:𝑀 = ( ∑,𝑄,Γ,𝛿,𝑞0 ,𝑎𝑐𝑐,‬‬

‫א"ב של השפה (קלט)‬ ‫∑‬

‫א"ב לכתיבה על הסרט‪ ,‬מכיל סימון רווח ( ⎵ )‬ ‫‪Γ‬‬

‫קבוצת המצבים הפנימיים‬ ‫𝑄‬

‫פונקציית המעברים‬ ‫𝛿‬

‫מצב התחלתי‬ ‫‪𝑞0‬‬

‫𝑐𝑐𝑎 מצב מקבל יחיד‬

‫𝑗𝑒𝑟 מצב דוחה יחיד‬


‫פונקציית המעברים‬

‫) 𝑅 ‪𝛿: 𝑄 × Γ → (𝑄 × Γ × 𝐿,‬‬

‫הפונקציה מקבלת כקלט מצב ואת האות שהראש קורא כותב נמצא עליו ומחזירה שלישייה‪:‬‬
‫א‪ .‬מצב חדש‪ .‬ב‪ .‬אות שנכתב על הסרט‪ .‬ג‪ .‬כיוון שאליו זז הראש קורא כותב‬
‫לדוגמא‪:‬‬
‫𝐿‪ 𝛿 𝑞,𝑎 = 𝑞 ′ ,𝑏,‬המשמעות היא שכאשר נמצאים במצב 𝑞 וקוראים את התו 𝑎 אז עוברים‬
‫למצב ’𝑞‪ ,‬כותבים את 𝑏 במקום ה𝑎 וזזים שמאלה‪.‬‬
‫הסרט בתחילת הריצה‬

‫המכונה מתחילה כאשר על הסרט כתובה המילה *‪ , x‬שאר הסרט מרופד ברווחים ⎵‬ ‫‪‬‬

‫המכונה מתחילה במצב התחלתי ‪ q0‬והראש נמצא על קצה הקלט השמאלי ביותר של‬ ‫‪‬‬
‫הסרט‪.‬‬
‫קונפיגורציה‬

‫תיאור ריצת המכונה בכל שלב נתון ע"י קונפיגורציה )𝑣‪ (𝑞,𝑢,‬כאשר 𝑞 הוא המצב‬ ‫‪‬‬
‫הנוכחי של המכונה‪ 𝑢 ,‬היא המילה על הסרט משמאל לראש הקורא ו 𝑣 ‪-‬הינה‬
‫המילה ממקום הראש הקורא וימינה עד המקום בו מתחיל רצף התו ⎵ האינסופי‪.‬‬
‫𝑢 هي الكلمة املوجودة على الشريط املوجود على يسار رأس القارئ‬
‫‪ -‬هي الكلمة من مكان رأس القارئ إلى اليمني إلى املكان الذي يبدأ فيه تسلسل الحرف الالنهائي‪.‬‬ ‫𝑣‬

‫𝑐𝑎 = 𝑢‬
‫⎵‬ ‫‪a‬‬ ‫‪c‬‬ ‫‪b‬‬ ‫‪a‬‬ ‫‪a‬‬ ‫‪c‬‬ ‫⎵‬
‫𝑐𝑎𝑎𝑏 = 𝑣‬
‫)‪( q, u, v‬‬
‫‪q‬‬ ‫)𝑐𝑎𝑎𝑏 ‪(𝑞, 𝑎𝑐,‬‬
‫טרמינולוגיה‬

‫קונפיגורציה התחלתית בקריאת המילה ‪(𝑞0 ,𝜀,𝑤) : w‬‬ ‫‪‬‬

‫קונפיגורציה מקבלת ‪(𝑎𝑐𝑐 ,𝑢,𝑣) :‬‬ ‫‪‬‬


‫מעבר בין קונפיגורציות‬

‫אם 𝑅‪ 𝛿 𝑞,𝑎 = 𝑞 ′ ,𝑏,‬מהקונפיגורציה )𝑣𝑎‪ (𝑞,𝑢,‬עוברים לקונפיגורציה‬


‫)𝑣‪.(𝑞′,𝑢𝑏,‬‬

‫נסמן )𝑣‪(𝑞,𝑢,𝑐𝑣) ⊢ (𝑞,𝑢𝑏,‬‬

‫אם ניתן לעבור מקונפיגורציה אחת לקונפיגורציה אחרת ע"י סדרה סופית‬
‫שלמעברים נסמן זאת ע"י ∗⊢‬

‫‪.‬‬
‫שפת מכונת טיורינג‬

‫מילה ∗ ‪ 𝑤 ∈ Σ‬מתקבלת ע"י מ"ט ‪ M‬אם מתקיים‪:‬‬

‫)𝑣 ‪𝑞0 , 𝜀, 𝑤 ⊢∗ (𝑎𝑐𝑐 , 𝑢,‬‬

‫במילים אחרות‪ ,‬במכונת טיורינג דטרמיניסטית‪ ,‬מילה מתקבלת ע"י המכונה אם קריאתה‬
‫מהמצב ההתחלתי )ומאות הקלט השמאלית ביותר) מסתיימת במצב מקבל‪.‬‬
‫במכונת טיורינג לא דטרמיניסטית‪ ,‬מילה מתקבלת ע"י המכונה אם קיימת קריאה מהמצב ההתחלתי המסתיימת במצב מקבל‪.‬‬

𝐋 = 𝐰 ∈ 𝐚, 𝐛 #𝒂 𝐰 = #𝐛 𝐰}

✓ → ✓, R
q.b ⃩ ⃩
b → b, R → ,L

✓ → ✓, R
⃩ ⃩
→ ,R
acc q.0 back rej

⃩ ⃩ a → a, L
→ ,R b → b, L
✓ → ✓, L ⃩ ⃩
→ ,L
✓ → ✓, R q.a
a → a, R
‫תרגיל‬

‫‪ ‬תנו תיאור מילולי של מכונת טיורינג המקבלת את השפה הבאה‪:‬‬

‫}‪𝐿 = {𝑎𝑛 𝑏 𝑛 𝑐 𝑛 |n ≥ 0‬‬

‫ציירו תרשים עבור המכונה‬ ‫‪‬‬

‫התשובה במצגת נפרדת‬


‫תרגיל‬

‫‪ ‬תנו תיאור מילולי של מכונת טיורינג המקבלת את השפה הבאה‪:‬‬

‫}‪𝐿 = {𝑎𝑖 𝑏 𝑗 𝑐 𝑖∙𝑗 |i, j ≥ 0‬‬

‫ציירו תרשים עבור המכונה‬ ‫‪‬‬


𝐿 = {𝑎𝑖 𝑏 𝑗 𝑐 𝑖∙𝑗 |i, j > 0}

aabbbcccccc
Xabbbcccccc
XaYYYZZZccc
XabbbZZZccc
XXYYYZZZZZZ
‫}‪𝐿 = {𝑎𝑖 𝑏 𝑗 𝑐 𝑖∙𝑗 |i, j ≥ 0‬‬

‫פסאודו קוד‪:‬‬
‫‪ .1‬מחק אות ‪ a‬וכתוב אות ‪ ,X‬סרוק ימינה עד שתגיע לאות ‪.b‬‬
‫‪ .2‬כל עוד נותרו אותיות ‪ b‬שאינם מחוקים‪:‬‬
‫‪ (a‬מחק את האות ‪ b‬הראשונה וכתוב אות ‪ Y‬במקום‪.‬‬
‫‪ (b‬סרוק עד האותיות ‪ ,c‬מחק אות ‪ c‬וכתוב ‪ Z‬במקום‪.‬‬
‫‪ (c‬אם לא נותרו אותיות ‪ -c‬דחה‪.‬‬
‫‪ .3‬חזור לתחילת הקלט ושחזר את כל אותיות ה‪( b‬החלף אותיות ‪ Y‬ב‪.)b‬‬
‫‪.4‬חזור לתחילת הקלט‪ ,‬אם נותרו אותיות ‪ -a‬חזור לשלב ‪.1‬‬
‫‪ .5‬אם כל אותיות ה‪ a‬מחוקות ע"י ‪X‬‬
‫בדוק‪ :‬אם לא נותרו אותיות ‪ c‬שאינן מחוקות‪ -‬קבל‪.‬‬
‫אחרת‪ -‬דחה‪.‬‬
‫הכרעה וזיהוי שפות‬

‫‪ ‬הגדרה‪ :‬נאמר שמ"ט ‪ M‬מכריעה את השפה ‪ L‬אם‪ M :‬מקבלת כל מילה ב‪ L‬וגם ‪ M‬עוצרת על כל‬
‫קלט ∗ ‪ .𝑤 ∈ Σ‬כלומר המכונה מקבלת כל מילה בשפה ודוחה כל מילה שאינה בשפה‪ .‬דוגמאות‪:‬‬
‫)𝐿‪ 𝜎∗  (𝑞0,𝜎) = (𝑎𝑐𝑐,𝜎,‬מכריעה את השפה ∗‪‬‬ ‫‪ ‬המכונה הפשוטה ∶‬
‫‪ ‬המכונה שהגדרנו עבור 𝑛 𝑐 𝑛 𝑏 𝑛𝑎 מכריעה את השפה (המכונה תעצור תמיד על כל קלט‪ ,‬נסו לחשוב‬
‫איך זה מובטח)‬

‫𝐿∉𝑤‬ ‫‪ ‬נאמר שמכונה ‪ M‬מזהה את השפה ‪ L‬אם ‪ M‬מקבלת כל מילה 𝐿𝜖𝑤 ועבור כל מילה‬
‫‪ M‬דוחה או לא עוצרת‪ .‬דוגמאות‪:‬‬
‫‪ ‬כל מ"ט שמכריעה שפה היא בפרט גם מזהה אותה‪.‬‬
‫‪a\b\⎵ → R‬‬
‫זיהוי שפה‬
‫‪a→R‬‬

‫‪b→L‬‬
‫‪𝑞0‬‬ ‫‪𝑞1‬‬
‫‪⎵→L‬‬

‫‪acc‬‬

‫תזוזה‬ ‫אות חדשה‬ ‫מצב חדש‬ ‫אות‬ ‫מצב‬


‫‪R‬‬ ‫‪a‬‬ ‫‪𝑞0‬‬ ‫‪a‬‬ ‫‪𝑞0‬‬
‫‪L‬‬ ‫‪b‬‬ ‫‪𝑞1‬‬ ‫‪b‬‬ ‫‪𝑞0‬‬
‫‪L‬‬ ‫⎵‬ ‫𝑐𝑐𝑎‬ ‫⎵‬ ‫‪𝑞0‬‬

‫‪R‬‬ ‫⎵ \‪a\b‬‬ ‫‪𝑞0‬‬ ‫⎵ \‪a\b‬‬ ‫‪𝑞1‬‬


‫דוגמא נוספת‬

a\b\⎵ → R

a, b → R
q.0 q.1

⎵→R

acc
‫חישוב מכונת טיורינג‬

‫‪ ‬תהי ∗ ‪ 𝑓: Σ ∗ ⟶ Σ ∗ ∪ Γ‬פונקציה‪.‬‬
‫‪ ‬נאמר שמ"ט מחשבת את פונקציה 𝑓 אם כאשר מריצים את 𝑀 על ∗ ‪ 𝑤 ∈ Σ‬כלשהו‪𝑀 ,‬‬
‫עוצרת ומותירה על הסרט את המחרוזת )𝑤(𝑓‪.‬‬

‫נהוג לסמן את הפונקציה כך‪.𝑓𝑀 :‬‬


‫‪ ‬בסוף הריצה‪ ,‬הראש צריך להצביע על האות השמאלית ביותר בקלט‬
‫פונקציית כפל אונרי‬

‫ציירו תרשים עבור מכונת טיורינג המקבל קלט של‬


‫שני מספרים בבסיס אונרי בצורה הבאה‪:‬‬
‫∗‬
‫‪𝑥#𝑦 | 𝑥, 𝑦 ∈ 1‬‬

‫ומחזירה כפלט את הכפל של שני המספרים בבסיס אונרי‪.‬‬


‫תרגיל נוסף‬
‫‪ ‬בנה מכונת טיורינג שמקבלת קלט של מספר חיובי בייצוג בינארי ומפחיתה ‪ 1‬מהמספר‪:‬‬
‫רעיון המכונה‪ :‬נזוז לתא הימני ביותר בקלט ונבדוק‪ :‬אם האות היא ‪ 1‬נחליף אותה ב‪ ,0‬אם‬
‫האות היא ‪ 0‬נחליף אותה ב‪ 1‬ונזוז שמאלה ונחליף את כל האותיות ‪ 0‬ב‪ 1‬עד שנמצא את התו‬
‫הראשון (מימין) שהוא ‪ 1‬ונחליף אותו ב‪: 0‬‬

‫תזוזה‬ ‫אות חדשה‬ ‫מצב חדש‬ ‫אות‬ ‫מצב‬


‫‪R‬‬ ‫‪𝑞0‬‬ ‫‪1\0‬‬ ‫‪𝑞0‬‬
‫‪L‬‬ ‫⎵‬ ‫‪𝑞1‬‬ ‫⎵‬ ‫‪𝑞0‬‬

‫‪R‬‬ ‫‪0‬‬ ‫‪𝑞3‬‬ ‫‪1‬‬ ‫‪𝑞1‬‬

‫‪L‬‬ ‫‪1‬‬ ‫‪𝑞2‬‬ ‫‪0‬‬ ‫‪𝑞1‬‬


‫‪L‬‬ ‫‪1‬‬ ‫‪𝑞2‬‬ ‫‪0‬‬ ‫‪𝑞2‬‬
‫‪L‬‬ ‫‪0‬‬ ‫‪𝑞3‬‬ ‫‪1‬‬ ‫‪𝑞2‬‬
‫‪L‬‬ ‫‪𝑞3‬‬ ‫‪1\0‬‬ ‫‪𝑞3‬‬
‫‪R‬‬ ‫⎵‬ ‫‪acc‬‬ ‫⎵‬ ‫‪𝑞3‬‬
‫תרגיל‬
‫תרגיל‬

‫תזוזה‬ ‫אות חדשה‬ ‫מצב חדש‬ ‫אות‬ ‫מצב‬


‫‪R‬‬ ‫⎵‬ ‫𝑐𝑐𝑎𝑞‬ ‫⎵‬ ‫‪𝑞0‬‬
‫‪R‬‬ ‫‪𝑞1‬‬ ‫𝜎‬ ‫‪𝑞0‬‬
‫‪L‬‬ ‫‪X‬‬ ‫𝜎𝑞‬ ‫𝜎‬ ‫‪𝑞1‬‬ ‫}𝑏 ‪𝜎 ∈ {𝑎,‬‬

‫‪R‬‬ ‫‪𝑞1‬‬ ‫‪X‬‬ ‫‪𝑞1‬‬


‫‪L‬‬ ‫𝑐𝑞‬ ‫⎵‬ ‫‪𝑞1‬‬
‫‪L‬‬ ‫𝜎𝑞‬ ‫‪a,b,X‬‬ ‫𝜎𝑞‬
‫‪R‬‬ ‫𝜎‬ ‫‪𝑞2‬‬ ‫⎵‬ ‫𝜎𝑞‬
‫‪R‬‬ ‫𝜎‬ ‫‪𝑞2‬‬ ‫𝜎‬ ‫‪𝑞2‬‬
‫‪R‬‬ ‫‪X‬‬ ‫‪𝑞1‬‬ ‫‪X‬‬ ‫‪𝑞2‬‬
‫‪L‬‬ ‫⎵‬ ‫𝑐𝑞‬ ‫‪X‬‬ ‫𝑐𝑞‬
‫‪L‬‬ ‫𝑐𝑞‬ ‫𝜎‬ ‫𝑐𝑞‬
‫‪L‬‬ ‫𝑐𝑐𝑎𝑞‬ ‫⎵‬ ‫𝑐𝑞‬
‫‪RE and R‬‬
‫לכל שפה שקיים עבורה מ"ט המכריעה את השפה נקרא "שפה כריעה"‬
‫לכל שפה שקיים עבורה מ"ט המזהה את השפה נקרא "שפה ניתנת לזיהוי"‬

‫מחלקת השפות הכריעות נקראת ‪R‬‬


‫מחלקת השפות הניתנות לזיהוי נקראת ‪.RE‬‬

‫משפט‪ :‬קיימות שפות שלא ניתנות לזיהוי‪.‬‬


‫⃩‬
‫‪a\b → R‬‬ ‫‪→R‬‬

‫⃩‬
‫‪→L‬‬
‫‪q.1‬‬
‫‪q.3‬‬

‫‪a\b → L‬‬

‫⃩‬
‫‪q.0‬‬ ‫‪a\b → R‬‬ ‫‪→R‬‬
‫‪q.back‬‬
‫⃩‬
‫‪→L‬‬
‫‪q.2‬‬
‫‪q.4‬‬ ‫כל המעברים‬
‫‪acc‬‬ ‫שלא מופיעים‪,‬‬
‫עוברים ל ‪rej‬‬

‫⃩‬
‫‪→R‬‬

‫א‪ .‬מה השפה שהמכונה מכריעה?‬


‫ב‪ .‬מה השפה שהמכונה מזהה?‬

You might also like