מודל חישובי

[[מכונת טיורינג, המודל החישובי השקול למחשב]]

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

==דוגמות==
===אוטומט סופי===
דוגמה ל[[אוטומט סופי דטרמיניסטי מעל הא"ב <math>\Sigma=\{0,1\}</math>, ששפתו היא כל המילים שמתחילות ונגמרות באותה ספרה.]]

אוטומט סופי דטרמיניסטי הוא חמישייה <math>A = (Q,\Sigma,q_0,\delta,F)</math> כאשר:
* <math>Q</math> היא קבוצת המצבים האפשריים באוטומט.
* <math>\Sigma</math> היא הא"ב הסופי של השפה שהאוטומט מתאר.
* <math>q_0</math> הוא המצב ההתחלתי באוטומט
*<math>\delta \colon Q \times \Sigma \to Q</math> היא פונקציית המעברים. כלומר, <math>\delta</math> מקבלת מצב ואות קלט, ומחזירה את המצב הבא.
*<math>F \subseteq Q</math> היא קבוצת המצבים המקבלים באוטומט.
האוטומט מקבל מילת קלט <math>w \isin \Sigma^*</math> (נוכל גם לומר כי <math>w=w_0w_1...w_{n-1}, \forall i<n: w_i \isin \Sigma</math>), וקורא את האותיות בה בזו אחר זו. הוא מתחיל את ריצתו על המילה במצב <math>q_0</math>, משם עובר למצב <math>q_1=\delta (q_0,w_0)</math>, וכך הלאה (באמצעות הכלל <math>q_i= \delta(q_{i-1},w_{i-1})</math>. נאמר כי המילה שייכת לשפת האוטומט, אם"ם הריצה של האוטומט על המילה מסתיימת במצב מקבל, כלומר, <math>q_{|w|} \isin F</math>.

קיימים שני סוגים של אוטומט סופי: אוטומט סופי דטרמיניסטי ואוטומט סופי לא דטרמיניסטי. משפט הדטרמיניזציה קובע כי שני המודלים הללו שקולים מבחינת יכולת החישוב שלהם, כלומר לכל אוטומט סופי לא דטרמיניסטי <math>N</math> קיים אוטומט סופי דטרמיניסטי <math>A</math> כך שמתקיים <math>L(A)=L(N)</math>.

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

===אוטומט מחסנית===
דוגמה ל[[אוטומט מחסנית מעל הא"ב <math>\Sigma = \{ a,b \}</math>, המקבלת את השפה <math>L=\{ a^i b^j \mid i \geq j \}</math>.]]

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

פורמלית, אוטומט מחסנית הוא השישייה <math>M = (Q,\Sigma,\Gamma,\delta,q_0,F)</math> כאשר:
* <math>Q</math> היא קבוצת המצבים ההתחלתיים.
* <math>\Sigma</math> היא הא"ב הסופי שמעליו מוגדרת שפת האוטומט.
* <math>\Gamma</math> היא הא"ב הסופי של המחסנית (קבוצת האותיות שיכולה להיכתב במחסנית).
*<math>\delta \colon Q \times (\Sigma \cup\{\varepsilon\}) \times \Gamma \rightarrow Q \times \Gamma </math> היא פונקציית המעברים, המקבלת מצב, אות קלט, ואות מחסנית (לקריאה) ומחזירה את המצב הבא ואות מחסנית (לכתיבה במחסנית).
* <math>q_0 \isin Q</math> המצב ההתחלתי.
*<math>F \subseteq Q</math> קבוצת המצבים המקבלים.

ניתן להגדיר את שפת האוטומט בשני אופנים:
* באמצעות מצבים מקבלים: שפת כל המילים שהאוטומט מקבל כקלט ומסיים את ריצתו עליהן במצב מקבל. נסמן שפה זו ב-<math>L_f(M)</math>.
* באמצעות ריקון מחסנית: שפת כל המילים שהאוטומט מקבל כקלט ומסיים את ריצתו עליהן עם מחסנית ריקה. נסמן שפה זו ב-<math>L_e(M)</math>.

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

===מכונת טיורינג===
מספר בינארי וכותבת את המספר הנגדי לו בשיטת המשלים ל-2.]]

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

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

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

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

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

==ראו גם==
* אוטומט סופי דטרמיניסטי
* אוטומט סופי לא דטרמיניסטי
* שפה רגולרית
* שפות חסרות הקשר
* פונקציה רקורסיבית
* תחשיב למדא
* מכונת טיורינג הסתברותית
* ההיררכיה של חומסקי

==קישורים חיצוניים==

קטגוריה:סיבוכיות
קטגוריה:רקורסיה