נציג כעת מודל נוסף, מודל ה-RAM.
נטען, אך לא נוכיח, כי מודל זה שקול למכונת טיורינג.
זיכרון אינסופי (בן מניה) הממוען על
ידי הכתובות . כל תא יכול להכיל כל מספר שלם ביצוג בינארי.
מספר סופי של רגיסטרים . כל רגיסטר יכול להכיל
כל מספר שלם ביצוג בינארי.
מוגדרים שלושה רגיסטרים מיוחדים: - משמש כ-PC
(Program Counter). - רגיסטר הקלט. - רגיסטר הפלט.
סט הפקודות: סט הפקודות במודל מכיל מספר סופי של פקודות "אסמבלר"
רגילות. דוגמא (!) לסט פקודות אפשרי:
- .
- הכנס ל-
את תוכן התא המוצבע על ידי
ואחר כך הוסף אחד לרגיסטר .
- כתוב את תוכן
בתא המוצבע על ידי .
- הגדל את ב-1.
- הקטן את ב-1.
- אם גדול מאפס, אזי .
- עצירת החישוב.
צעד חישוב:
א.
קרא את המספר שבכתובת המוצבעת
על ידי ה-PC.
ב.
.
ג.
פענח את הפקודה שנקראה ובצע
אותה.
ד.
חזור ל-א'.
מהלך החישוב:
א.
מצב התחלתי:
- קוד התוכנית שתבוצע נמצא בזיכרון החל מכתובת 0. תוכן תאי הזיכרון האחרים הינו 0.
- מכיל את הקלט וכל שאר
הרגיסטרים מאותחלים בערך 0.
ב.
ביצוע צעדי חישוב עד שמתבצעת
פקודת halt.
ג.
אם המכונה עוצרת הפלט הינו
התוכן של ברגע העצירה.
מעט כיוון על ההוכחה שמודל ה-RAM שקול
למכונת טיורינג.
כיוון אחד: מדובר למעשה בשפת אסמבלר
בסיסית – ניתן לבנות בקלות יחסית שפת תכנות שתממש מכונת טיורינג, וכך מוכיחים את
כיוון זה.
כיוון שני: נשתמש במכונת טיורינג בעלת k סרטים
ליצוג מודל ה-ram. יהיה סרט אחד עבור כל רגיסטר, שם ישמר ערכו. יהיה סרט שיהווה את
זיכרון ה-RAM, וכן עוד שני רגיסטרים לכתובת וערך שבתוכה לצורך ביצוע חישובים.
על ידי בניה מתאימה נראה גם את הכיוון הזה. כיוון זה הוא הקשה יותר להוכחה.
החלק הראשון
בבקשה