אוטומט מחסנית

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

על המחסנית אפשר לעשות מספר פעולות

Pasted image 20240112230944.png|350

הגדרה פורמלית

אוטומט מחסנית הוא שישייה P=(Q,Σ,Γ,Δ,q0,F) כאשר הדברים היחידי ששונים הם פונקציית המעברים ו גאמא שזה איבר חדש שמייצג את א״ב המחסנית, כלומר המחרוזות שניתן להכניס לראש המכניס.

Δ:(Q×(Σ{ε})×(Γ{ε}))P(Q×Γ)

נשים לב שהמודל של מחסנית הוא לא דטרמינסטי. קיים מודל דטרמינסטי לאוטומט מחסנית אך הוא חלש יותר ולא מקבל את כל השפות שאוטומט מחסנית לא דטרמינסטי מקבל.

הגדרה מתמטית של תהליך החישוב

נרצה לתאר בכל שלב תהליך מהי ה״סיטואציה״ או ״תמונת מצב״ של מה שקורה בסרט הקלט ובמחסנית בהתאם למצב שבוא אנחנו נמצאים. לשם כך מגדירים קונפיגורציה זאת שלשה סדורה
(q,u,x) כאשר הראשון הוא מצב מסויים, השני זה המחרוזת שנשאר בסרט, והשלישי זה מה נמצא במחסנית.

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

סך הכל שפת האוטומט מוגדרת להיות

L(P)={w | uΓ,fF:(q0,w,ε)P(f,ε,u)}

הגדרה מתמטית של תהליך החישוב

נרצה לתאר בכל שלב תהליך מהי ה״סיטואציה״ או ״תמונת מצב״ של מה שקורה בסרט הקלט ובמחסנית בהתאם למצב שבוא אנחנו נמצאים. לשם כך מגדירים קונפיגורציה זאת שלשה סדורה
(q,u,x) כאשר הראשון הוא מצב מסויים, השני זה המחרוזת שנשאר בסרט, והשלישי זה מה נמצא במחסנית.

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

סך הכל שפת האוטומט מוגדרת להיות

L(P)={w | uΓ,fF:(q0,w,ε)P(f,ε,u)}

שקילות אוטומט מחסנית לשפה חסרת הקשר

שפה L הינה חסרת הקשר אם ורק אם קיים אוטומט מחסנית P כך ש L(P)=L . והמסקנה המתבקשת מכך היא שכל שפה רגולרית היא שפה חסרת הקשר. כי כל אוטומט סופי הוא אוטומט מחסנית בלי להשתמש במחסנית.

טכניקה כללית לבניית אוטומט מחסנית על פי כללי הדקדוק

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

Pasted image 20220710232836.png|450

חיתוך של שפה רגולרית עם שפה חסרת הקשר

יהי C שפה חסרת הקשר ו R שפה רגולרית , CR הינו שפה חסרת הקשר.
לא אפרט כאן את הליך ההוכחה אבל הרעיון הוא שבגלל ששפה רגולרית מקבלת אוטומט סופי שהוא כמו אוטומט מחסנית בלי שימוש במחסנית. נוכל לבנות פשוט אוטומט מכפלה (כמו שתמיד היינו עושים) המצבים יהיו זוג סדור של כל האפשרויות משני קבוצות המצבים של שני האוטומטים. כנ"ל לגבי המצבים המקבלים והמצבים התחלתיים. השוני היחיד הוא במעברים. פונקציית המעברים תקבל זוג סדור של מצבים וקלט, היא תחזיר זוג סדור של המצבים החדשים בהתאם לתנועה שני המצבים המקוריים, ותכניס למחסנית את מה שהאוטומט של C היה מכניס.

דקדוק רגולרי ושפות רגולריות

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

דקדוק רגולרי ימני

הכללים הם אחת מהצורות הבאות.

 AσBAσAε

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

דקדוק רגולרי שמאלי

הכללים הם אחת מהצורות הבאות.

 ABσAσAε

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

משפט שפה L תקרא רגולרית אמ״מ קיים לה דקדוק רגולרי ימני או שמאלי המקבל אותה.