3. מכונה אוניברסליתעל מנת לייצג מ"ט באופן נוח, נרצה
לקודד אותה בצורת מחרוזת מעל הא"ב דרישות מקידוד של מכונת טיורינג:
תהי
הכיוונים יקודדו: קידוד של מעברים: יהי אחד המעברים, קידוד של המכונה M למחרוזת בינארית יהיה: כאשר כל עבור מ"ט קידוד של קלט קידוד של קונפיגורציה כלומר, רצף של שני אפסים הוא זה שמסמן את מיקום הראש. נגדיר את הפונקציה NEXT:
הפונקציה מקבלת קידוד של מכונת טיורינג ושל קונפיגורציה רגעית, ומחזירה את הקידוד של הקונפיגורציה הרגעית העוקבת, אם קיימת כזו. קלט של מספר ארגומנטים: עד כה דיברנו על מילת קלט אחת טענה:
הפונקציה NEXT ניתנת לחישוב. כלומר, קיימת מ"ט שעל מילת קלט הוכחה: נציג בניה של מכונה: א. בדוק את חוקיות הקלט. בכל מקרה של אי חוקיות נכנס ללולאה אינסופית. ב.
אם ג.
אם ד.
נניח ש- הגדרה: הפונקציה האוניברסלית:
כלומר בהינתן קידוד של מכונה וקידוד של קלט, הפונקציה האוניברסלית מחזירה את קידוד הפלט של המכונה, על אותה מילה. טענה: הפונקציה האוניברסלית U ניתנת לחישוב ע"י מכונת טיורינג. הוכחה: על קלט א. בדיקת חוקיות של הקלט. ב.
אם ג.
נבנה את החישוב של a.
b. כל עוד c. אם מגיעים לקונפיגורציה סופית, נוציא כפלט את תוכן מתקיים: אם הקלט לא חוקי או אם M לא
עוצרת על הקלט הגדרה: כל מ"ט שמחשבת את הפונקציה U נקראת מכונת טיורינג אוניברסלית. טענה: קיימת מ"ט אוניברסלית. תגיות המסמך: |
תוכן העניינים:
קישורים רלוונטיים:שיתוף: |


.
. נציע את הקידוד הבא (קיימים עוד קידודים, הבחירה היא שרירותית).![plot:\[Q = \left\{
{1,2,3,...,\left| Q \right|} \right\},{q_0} = 1,F = \left\{ {2,3}
\right\},\Sigma = \left\{ {1,2,...,\left| \Sigma \right|} \right\},\Gamma =
\left\{ {1,2,...,\left| \Gamma \right|} \right\},\flat = \left| \Gamma
\right|\]](/documentResources/261/plot_125.png)
.
. נקודד את המעבר על ידי
המחרוזת הבינארית הבאה:
.![plot:\[{1^{\left| Q \right|}}{01^{\left| \Gamma
\right|}}{01^{\left| \Sigma \right|}}00\left\langle {{\delta _1}}
\right\rangle 00\left\langle {{\delta _2}} \right\rangle 00...\left\langle
{{\delta _m}} \right\rangle 000\]](/documentResources/261/plot_129.png)
הוא קידוד של אחד המעברים, וכן
.
, נסמן את המחרוזת הבינארית המתאימה לה ב-
. בהינתן מחרוזת בינארית, קל
לבדוק האם היא מהצורה
. נגדיר כל מחרוזת בינארית שאיננה ניתנת לפירוש לפי
הקונבנציה שהגדרנו, כקידוד של מכונה אותה נכנה בשם
, שעוצרת מייד על כל קלט במצב
סופי 2.
מעל א"ב
הוא המחרוזת
.
: ![plot:\[\left\langle c \right\rangle = {1^{{\alpha
_1}}}{01^{{\alpha _2}}}{0...01^{{\alpha _{i - 1}}}}{001^{{\alpha
_i}}}{0...01^{{\alpha _m}}}00\]](/documentResources/261/plot_140.png)
![plot:\[NEXT\left(
{\left\langle M \right\rangle ,\left\langle c \right\rangle } \right) = \left\{
{\begin{array}{*{20}{c}}
{\left\langle {c'} \right\rangle ,c\mathop {\mathop
\vdash \limits_{\text{M}} }\limits^1 c'} \hfill & {{\text{the input is
valid and also }}c \notin F} \hfill \\
{{\text{Undefined}}} \hfill & {{\text{Else}}} \hfill
\\
\end{array} } \right.\]](/documentResources/261/plot_141.png)
עבור מכונת טיורינג. ניתן להרחיב את הגדרת הקלט למספר ארגומנטים כלשהו. נבצע זאת
על ידי הוספת הסימן "," לשפה, ושימוש בו כדי להפריד בין מילים שונות.
תוציא את הפלט
.
הינה סופית, נכנס ללולאה
אינסופית.
מתאים ל-
: אם
היא הקונפיגורציה ההתחלתית,
אזי
היא קונפיגורציה סופית מתאימה. אחרת אם
לא תחילית, נכנס ללולאה אינסופית (מצב לא חוקי).
חוקית ומתאימה ל-
, אזי נחפש את המצב בו נמצאת המכונה והאותה אותה היא
קוראת על ידי חיפוש המחרוזת 00 בקלט
.
. נחפש בקידוד
מה עושה המכונה בסיטואציה כזו (כלומר מהו
) על ידי חיפוש המחרוזת
ב-
. נוציא מתוך
את
:
ונשנה את
בהתאם. נקבל
ונוציא אותו כפלט.![plot:\[U\left(
{\left\langle M \right\rangle ,\left\langle x \right\rangle } \right) = \left\{
{\begin{array}{*{20}{c}}
{\left\langle {{f_M}\left( x \right)} \right\rangle }
\hfill & {{\text{If the input is valid and also }}{f_M}\left( x
\right){\text{ is defined}}} \hfill \\
{{\text{Undefined}}} \hfill & {{\text{Else}}} \hfill
\\
\end{array} } \right.\]](/documentResources/261/plot_164.png)
:
נוציא פלט
.
על
.![plot:\[\left\langle {{c_0}} \right\rangle
= 00\underbrace 1_{{q_0}}0\left\langle x \right\rangle \]](/documentResources/261/plot_170.png)
הנוכחית איננה סופית:
.
עד מיקום 00.
,
המכונה לא עוצרת. אם הקלט חוקי,
עוצרת על הקלט
תוך
צעדים, אזי נמצא את הפלט על ידי
הפעלות של NEXT.
החלק הראשון
בבקשה