Download as pdf or txt
Download as pdf or txt
You are on page 1of 38

‫יחידה ‪9‬‬

‫אוטומט מחסנית‬
‫קורס אוטומטים ושפות פורמליות‬
‫מרצה‪ :‬אברהם בן‪-‬ארויה‬
‫מצגות‪ :‬עקיבא קליינרמן‬
‫דוגמא‬
‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬
‫}‪𝐿 = {𝑎𝑛 𝑏 𝑛 |𝑛 ≥ 1‬‬
‫‪ε, ε| $‬‬ ‫‪b, &|ε‬‬ ‫‪ε, $ |ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫(אם ‪ β‬לא בראש המחסנית‬


‫אז המעבר לא חוקי )‬
‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫הקלט‪:‬‬
‫‪aabb‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬


‫‪ε, ε| $‬‬ ‫‪ε, $ |ε‬‬
‫‪b, &|ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫)‪(𝑞0 , 𝑎𝑎𝑏𝑏, ε‬‬


‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫‪aabb‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬

‫‪ε, ε| $‬‬
‫‪ε, $ |ε‬‬
‫‪b, &|ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬
‫} ‪𝛿(𝑞0 , ε, ε) = { 𝑞1 , $‬‬ ‫‪$‬‬
‫)‪(𝑞0 , 𝑎𝑎𝑏𝑏, ε) ⊢ (𝑞1 , 𝑎𝑎𝑏𝑏, $‬‬
‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫‪aabb‬‬

‫} & ‪𝛿(𝑞1 , a, ε) = { 𝑞1 ,‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬


‫‪ε, $ |ε‬‬
‫&‬
‫‪ε, ε| $‬‬
‫‪b, &|ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫)‪(𝑞1 , 𝑎𝑎𝑏𝑏, $) ⊢ (𝑞1 , 𝑎𝑏𝑏, &$‬‬


‫‪$‬‬
‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫‪aabb‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬


‫‪ε, $ |ε‬‬
‫&‬
‫&‬
‫‪ε, ε| $‬‬
‫‪b, &|ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫)‪(𝑞1 , 𝑎𝑏𝑏, &$) ⊢ (𝑞1 , 𝑏𝑏, &&$‬‬


‫‪$‬‬
‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫‪aabb‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬

‫‪ε, ε| $‬‬
‫‪q1‬‬
‫‪b, &|ε‬‬
‫‪q2‬‬
‫‪ε, $ |ε‬‬
‫‪q3‬‬
‫&‬
‫‪q0‬‬
‫‪$‬‬
‫)‪(𝑞1 , 𝑏𝑏, &&$) ⊢ (𝑞2 , 𝑏, &$‬‬
‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫‪aabb‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬

‫‪ε, ε| $‬‬
‫‪ε, $ |ε‬‬
‫‪b, &|ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬
‫‪$‬‬
‫)‪(𝑞2 , 𝑏, &$) ⊢ (𝑞2 , ε, $‬‬
‫ריצה של אוטומט מחסנית לשפה }‪{𝑎𝑛𝑏𝑛|𝑛 ≥ 1‬‬

‫‪aabb‬‬

‫&|‪a, ε‬‬ ‫‪b, &|ε‬‬

‫‪ε, ε| $‬‬
‫‪ε, $ |ε‬‬
‫‪b, &|ε‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫)‪(𝑞2 , ε, $) ⊢ (𝑞3 , ε, ε‬‬


‫הגדרה‬

‫אוטומט מחסנית מוגדר ע"י השישייה‪A = ( ∑, 𝑄, Γ,𝑞0 ,𝐹 ,𝛿) :‬‬


‫כאשר‪:‬‬
‫∑= א"ב שפת הקלט‬

‫כמו באס"ד\ אסל"ד‬ ‫𝑄= קבוצה סופית לא ריקה של מצבים‬


‫‪ = 𝑞0‬מצב התחלתי‬
‫𝐹 = קבוצת מצבים מקבלים (תת קבוצה של ‪) Q‬‬

‫‪ = Γ‬א"ב המחסנית‪ .‬האותיות שאותן יכול האוטומט לדחוף למחסנית‪ .‬גם מספר אותיות אלה‬
‫סופי‬
‫𝛿 = פונקציית מעברים‬
‫פונקציית המעברים 𝛿‬

‫פונקציית המעברים באוטומט מחסנית מוגדר כך‪:‬‬ ‫‪‬‬


‫حرف‬
‫𝜀 ∪ ‪𝛿: 𝑄 × (Σ ∪ 𝜀 ) × Γ‬‬ ‫×𝑄‪⟶ 2‬‬ ‫)𝜀 ∪‪Γ‬‬
‫اشي نحطه باملخسنيت‬

‫המשמעות של 𝛼‪ 𝑞′,𝛽 ∈ 𝛿 𝑞,𝜎,‬היא שאם אנחנו נמצאים במצב 𝑞 ובראש‬


‫המחסנית נמצאת האות 𝛼 אז עבור קריאת האות 𝜎 ניתן לעבור למצב ‪ 𝑞′‬אם‬
‫נוציא את 𝛼 מהמחסנית‪ ,‬ונכניס במקומו את האות 𝛽‪.‬‬
‫𝜀‬
‫منطلعش اشي من ראש המחסנית ‪ ‬אם ב 𝜀‪ 𝑞′,𝛽 ∈ 𝛿 𝑞,𝜎,‬אז אם נמצאים במצב 𝑞 ניתן לקרוא את האות 𝜎 ‪ ,‬להכניס למחסנית את‬
‫האות 𝛽 בלי להוציא כלום ולעבור למצב ‪. 𝑞′‬‬ ‫ومندخل بيتا‬
‫بس منطلع ‪ a‬من ראש המחסנית ‪ ‬אם ב 𝑎‪ 𝑞′,𝜀 ∈ 𝛿 𝑞,𝜎,‬אז אם נמצאים במצב 𝑞 ובראש המחסנית נמצאת האות 𝛼 אז ניתן‬
‫לקרוא את האות 𝜎‪ ,‬להוציא את 𝛼 מהמחסנית בלי להכניס כלום ולעבור למצב ‪. 𝑞′‬‬

‫שימו לב שזוהי מודל לא דטרמיניסטי‪ ,‬המודל הדטרמיניסטי לא שקול (הוא חלש‬


‫יותר)‪ .‬בתרגול נתייחס רק למודל הלא דטרמיניסטי‪.‬‬
‫קונפיגורציה‬

‫קונפיגורציה היא שלשה מעל (∗ ‪. )𝑄 × Σ ∗ × Γ‬‬


‫הקונפיגורציה (𝑥‪ )𝑞,𝑤,‬מתארת מצב בו נמצאים במצב 𝑞‪ ,‬מילת הקלט שנותרה‬
‫לקרוא היא 𝑤 ותכולת המחסנית היא 𝑥‪.‬‬

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


‫𝜀 ∪ ‪ 𝑞,𝑟 ∈ 𝑄 ,𝜎 ∈)Σ ∪ 𝜀 ) , 𝛾 ∈ Γ ∗ ,α ,𝛽 ∈ Γ‬נסמן ‪:‬‬ ‫לכל‬

‫)𝛾𝛽 ‪(𝑟, 𝜎𝑤, 𝛼𝛾) ⊢ (𝑞, 𝑤,‬‬

‫אם מתקיים )𝛽‪𝛿(𝑟,𝜎,𝛼) ∋ (𝑞,‬‬

‫כלומר‪ ,‬ממצב 𝑟 ניתן לעבור למצב 𝑞 ע"י קריאת האות 𝜎 ועדכון ראש המחסנית מ‪ α‬ל 𝛽‪.‬‬
‫שפת אוטומט המחסנית‬

‫𝜀 ‪𝐿 𝑀 = 𝑤 𝑞0 , 𝑤,‬‬ ‫}𝐹 ∈ 𝑝 ‪(𝑝, 𝜀, 𝛾) |𝛾 ∈ Γ ∗ ,‬‬


‫דוגמא שנייה‬

‫∗}‪{a,b‬‬
‫‪a, ε |A‬‬ ‫‪a, A|ε‬‬
‫‪b, ε |B‬‬ ‫‪b, B|ε‬‬

‫‪ε, ε |$‬‬ ‫‪ε, ε | ε‬‬ ‫‪ε, $ | ε‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪q3‬‬

‫השפה } ∗}‪ 𝐿 = 𝑤𝑤 𝑤 ∈ {a,b‬אינה חסרת הקשר מדוע לא ניתן לבנות עבורה אוטומט‬
‫מחסנית?‬
‫הכנסה של יותר מאות אחת אותיות‬
‫)𝜀 ∪ ∗𝜞‬
‫بقدرش يرجع ع حاله‬ ‫𝜀 ∪ ‪𝛿: 𝑄 × (Σ ∪ 𝜀 ) × Γ‬‬ ‫×𝑄‪⟶ 2‬‬

‫דוגמא‪𝐿 = {𝑎𝑖 𝑏2𝑖 |𝑖 ≥ 0} :‬‬

‫עם הכנסה של אות אחת‪:‬‬

‫بقدر يضل يرجع ع حاله‬ ‫עם אפשרות הכנסה ליותר מאות אחת‪:‬‬
‫משפט‬

‫שפה 𝐿 היא חסרת הקשר אם ורק אם קיים אוטומט‬


‫מחסנית (לא‪-‬דטרמיניסטי) 𝑀 כך ש 𝐿 = )𝑀(𝐿‪.‬‬

‫כלומר‪ :‬לכל דקדוק ‪ G‬חסר הקשר‪ -‬קיים אוטומט מחסנית לא דטרמיניסטי ‪M‬‬
‫שקול כך ש 𝑀 𝐿 = 𝐺 𝐿‪.‬‬

‫נראה בהמשך כיצד להמיר דקדוק לאוטומט מחסנית‬


‫גבולות אוטומט מחסנית‬
‫למה‬ ‫רגיולרית‬
‫ראינו שהשפה }‪ 𝐿 = {𝑎𝑖 𝑏𝑖 𝑐 𝑖 |𝑖 ≥ 0‬אינה חסרת הקשר‪ ,‬מדוע לא ניתן לבנות אוטומט‬
‫מחסנית שיקבל את השפה?‬

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

a, $ |$A
a, A |AA
a, B|ε
b, B |BB
b, $ |$B
b, A|ε

ε, ε |$ ε, $ | ε
q0 q1 q2
‫תרגיל‬

‫נתונה השפה הבאה‪:‬‬


‫𝑏 ‪𝐿 = 𝑥𝑐𝑦 𝑥, 𝑦 ∈ 𝑎,‬‬ ‫∗‬
‫}|𝑦| ≠ |𝑥| ٿ‬

‫בנו אוטומט מחסנית ‪ M‬כך ש 𝐿 = )𝑀(𝐿‪.‬‬

‫נשים לב שאם 𝐿 ∈ 𝑤 אז יתכנו שני מקרים‪:‬‬

‫‪x < y‬‬ ‫‪.1‬‬


‫‪x > y‬‬ ‫‪.2‬‬
‫∗‬
‫המשך תרגיל‬
‫𝑏 ‪𝐿 = 𝑥𝑐𝑦 𝑥, 𝑦 ∈ 𝑎,‬‬ ‫}|𝑦| ≠ |𝑥| ٿ‬

‫𝜀 | & ‪𝜀,‬‬
‫&|𝜀 ‪𝑎/𝑏 ,‬‬ ‫𝜀 | & ‪𝑎/𝑏 ,‬‬
‫נבנה אוטומט מחסנית (אמל"ד)‬
‫לשני המקרים‪:‬‬
‫𝜀 | & ‪𝑐,‬‬ ‫𝜀 |𝜀 ‪𝜀,‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪𝑥 > 𝑦 .1‬‬

‫𝜀 |𝜀 ‪𝑎/b,‬‬
‫𝜀 | & ‪𝑎/𝑏 ,‬‬ ‫‪𝑥 < 𝑦 .2‬‬
‫&|𝜀 ‪𝑎/𝑏 ,‬‬
‫‪𝜀, 𝜀|$‬‬
‫&|𝜀 ‪𝑐,‬‬ ‫𝜀 |‪𝜀, $‬‬
‫‪p0‬‬ ‫‪p1‬‬ ‫‪p2‬‬ ‫‪p3‬‬
‫המשך תרגיל‬
‫𝑏 ‪𝐿 = 𝑥𝑐𝑦 𝑥, 𝑦 ∈ 𝑎,‬‬ ‫∗‬
‫}|𝑦| ≠ |𝑥| ٿ‬

‫𝜀 | & ‪𝜀,‬‬
‫&|𝜀 ‪𝑎/𝑏 ,‬‬ ‫𝜀 | & ‪𝑎/𝑏 ,‬‬

‫𝜀 | & ‪𝑐,‬‬ ‫𝜀 |𝜀 ‪𝜀,‬‬


‫𝜀 |𝜀 ‪𝜀,‬‬ ‫’‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫כעת‪ ,‬נחבר אותם יחד‬
‫לאוטומט אחד‬
‫‪q0‬‬
‫𝜀 |𝜀 ‪𝑎/b,‬‬
‫&|𝜀 ‪𝑎/𝑏 ,‬‬ ‫𝜀 | & ‪𝑎/𝑏 ,‬‬
‫𝜀 |𝜀 ‪𝜀,‬‬ ‫‪𝜀, 𝜀|$‬‬
‫&|𝜀 ‪𝑐,‬‬ ‫𝜀 |‪𝜀, $‬‬
‫‪p0‬‬ ‫‪p1‬‬ ‫‪p2‬‬ ‫‪p3‬‬
𝐿 = 𝑎𝑛 𝑏𝑚 𝑛 ≥ 𝑚 + 2}

𝑏, &| 𝜀
𝑎, 𝜀|&

a, 𝜀| 𝜀 a, 𝜀| 𝜀
q0 q1 q2
‫המרה של דקדוק חסר הקשר לאוטומט מחסנית‬
‫‪ ‬מהמשפט שראינו נקבל שניתן להמיר כל דקדוק חסר הקשר לאוטומט מחסנית שקול‪.‬‬
‫‪ ‬נראה כיצד להמיר דקדוק חסר הקשר לאוטומט מחסנית‪.‬‬
‫‪ ‬נתחיל בדוגמא‪ .‬נתון הדקדוק הבא‪:‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬
‫‪ ‬ניצור אוטומט מחסנית שקול‪:‬‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬ ‫‪ ‬באוטומט יהיו רק שלושה מצבים‪.‬‬
‫𝐴|𝑆 ‪𝜀,‬‬ ‫‪ ‬כל הקריאה של המילה תעשה במצב השני‪.‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬
‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬

‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬
‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬

‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪S‬‬
‫‪bbabb‬‬
‫‪$‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬ ‫‪b‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪S‬‬
‫‪b‬‬
‫‪bbabb‬‬ ‫‪$‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪S‬‬
‫‪b‬‬
‫‪$‬‬
‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬ ‫‪b‬‬
‫𝜀|𝑏 ‪𝑏,‬‬
‫‪S‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬ ‫‪b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪b‬‬
‫‪$‬‬
‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬ ‫‪S‬‬
‫‪b‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪b‬‬
‫‪$‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬ ‫‪A‬‬
‫‪b‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪b‬‬
‫‪$‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬ ‫‪a‬‬
‫𝜀|𝑏 ‪𝑏,‬‬
‫‪A‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬ ‫‪b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪b‬‬
‫‪$‬‬
‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬ ‫‪A‬‬
‫‪b‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪b‬‬
‫‪$‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬
‫‪b‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬ ‫‪b‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬ ‫‪$‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬
‫‪b‬‬
‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬
‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬
‫‪$‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬ ‫‪$‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪bbabb‬‬
‫𝐴|𝑏𝑆𝑏 → 𝑆‬
‫𝜀|𝐴𝑎 → 𝐴‬ ‫דוגמא להמרה של דקדוק ח"ה לאוטומט‬
‫𝑏𝑆𝑏 |𝑆 ‪𝜀,‬‬
‫𝐴|𝑆 ‪𝜀,‬‬
‫𝐴𝑎|𝐴 ‪𝜀,‬‬
‫𝜀|𝐴 ‪𝜀,‬‬
‫𝜀|𝑎 ‪𝑎,‬‬
‫𝜀|𝑏 ‪𝑏,‬‬

‫‪𝜀, 𝜀| 𝑆$‬‬ ‫𝜀|‪𝜀, $‬‬


‫‪q0‬‬ ‫‪q1‬‬ ‫‪q2‬‬

‫‪bbabb‬‬
‫המרת דקדוק לאוטומט מחסנית‬
‫יהי )𝑆‪ 𝐺 = ( 𝑉,Σ,Π,‬דקדוק ח"ה‪ .‬נגדיר אוטומט מחסנית )‪ 𝑃 = (Q,Σ,Γ,𝛿,q0 ,F‬שקול‪.‬‬
‫האוטומט מכיל בסה"כ ‪ 3‬מצבים‪ ,‬נגדיר‪,Q = {𝑞0 ,𝑞1 ,𝑞2 } :‬‬
‫הא"ב של המחסנית יהיה זהה לא"ב של הדקדוק‪,‬‬
‫הסימונים של המחסנית ‪ Γ‬יוגדרו כך }‪ ,Γ = Σ ∪ 𝑉 ∪ {$‬כאשר ‪ $‬הוא סימון ייחודי עבור‬
‫תחתית המחסנית‪.‬‬
‫קבוצת המצבים המקבלים תכיל את המצב האחרון בלבד‪.𝐹 = {𝑞2 } :‬‬

‫‪ P ‬מתחילה בכתיבה של תו ‪ $‬ומשתנה התחלתי ‪ S‬מעליו‪ ,‬נבצע זאת ע"י מעבר ממצב‬
‫התחלתי למצב ‪:𝑞1‬‬

‫} ‪𝛿 q0 , 𝜀, 𝜀 = { 𝑞1 , 𝑆$‬‬
‫המשך‬

‫פונקציית המעברים במצב 𝟏𝒒 ‪ :‬נחלק בין שתי סוגי מעברים‪:‬‬


‫∗‬
‫𝑉 ∪ ‪𝑋 ∈ 𝑉,ℎ ∈ Σ‬‬ ‫א‪ .‬מעברים המוציאים משתנה מהמחסנית‪ :‬עבור כל גזירה ‪ 𝑋 → ℎ‬כאשר‬
‫נגדיר את המעבר הבא‪:‬‬
‫ללא קריאת תו מהקלט‪ ,‬הוצא את המשתנה 𝑋 מהמחסנית והחלף אותו בתווים של ‪( ℎ‬התו‬
‫השמאלי ביותר ב ‪h‬הוא העליון במחסנית) כלומר‪:‬‬
‫)‪. 𝛿 𝑞1 ,𝜀,𝑋 ∋ (𝑞1 ,ℎ‬‬

‫ב‪ .‬מעברים המוצאים טרמינלים מהמחסנית‪ ,‬נבצע את ה"השוואה" לקלט המחסנית באופן הבא‪:‬‬
‫} 𝜀‪ 𝛿 𝑞1 ,𝜎,𝜎 = { 𝑞1 ,‬לכל ‪𝜎 ∈ Σ.‬‬
‫לבסוף נגדיר מעבר למצב מקבל אם המחסנית התרוקנה‪:‬‬
‫} 𝜀 ‪𝛿 q1 , 𝜀, $ = { 𝑞2 ,‬‬

You might also like