אוטומטים ושפות פורמליות 236353 סמסטר אביב 2016 קובץ שאלות ופתרונות של שאלות ממבחנים מנושאים שונים קובץ ונערך ע"י אורן אשכנזי ומיכל הורוביץ תכונות סגור ודקדוקים רגולריים. עבור שפות L 1, L 2 מעל א"ב Σ נגדיר את השפה v }.L = {uv: u L 1, v L 2, u =.1 הוכיחו/הפריכו את הטענות הבאות באמצעות תכונות סגור בלבד: אם L 1, L 2 רגולריות אז L רגולרית. א. אם L 1 רגולרית ו L 2 ח"ה אז L ח"ה. ב. בסעיפים הבאים הוכיחו כי אם L 1, L 2 רגולריות אז L ח"ה. ג. באמצעות תכונות סגור. ד. ע"י בניית דקדוק ח"ה מתאים. הערה: מספיק לנמק את נכונותו, ואין צורך להוכיח באופן מלא את שפת הדקדוק. א. לא נכון! דוגמא נגדית: {b} L 1 = {a}, L 2 = מעל א"ב b}.{a, השפות L 1, L 2 רגולריות מכיוון שהשפות {b},{a} סופיות ולכן רגולריות, ומסגירות השפות הרגולריות לאיטרציה. כמוכן מתקיים: L = {uv: u {a}, v {b}, u = v } = {a i b j : i, j 0, a i = b j } = {a n b n : n 0} ידוע שהשפה 0} n {a n b n : אינה רגולרית, כלומר L אינה רגולרית, בניגוד לטענה. ב. ג. לא נכון! דוגמא נגדית: 0} n L 1 = {c}, L 2 = {a n b n : מעל א"ב c}.{a, b, השפה L 1 רגולרית מכיוון ש{ c } שפה סופית ולכן רגולרית, ומסגירות השפות הרגולריות לאיטרציה. כמוכן ידוע שהשפה L 2 היא ח"ה. מתקיים: 0} n.l = {uv: u {c}, v {a n b n : n 0}, u = v } = {c 2n a n b n : נניח בשלילה ש L שפה חסרת הקשר. נגדיר הומומורפיזם c} h: {a, b, c} {a, b, באופן הבא:.h(a) = cc, h(b) = a, h(c) = b נשים לב שמתקיים: 0} n.h 1 (L) = {w n 0, h(w) = c 2n a n b n } = {a n b n c n שפה זו היא חסרת הקשר מסגירות השפות חסרות ההקשר להומומורפיזם הפוך. אך זה בסתירה לכך שידוע שהשפה {0 n a} n b n c n אינה חסרת הקשר! לכן קיבלנו ש L אינה ח"ה, בניגוד לטענה. נכון! נסמן {Σ Σ. = σ} : σ כמוכן נסמן ב w את המילה w בתוספת תיוג על כל אות במילה.
w נשים לב שלכל מילה. σ Σ: h באופן הבא: h 1 : Σ Σ 1 (σ) = σ נגדיר הומומורפיזם מתקיים w.h 1 (w) = נגדיר: } 2.L 2 = h 1 (L 2 ) = {w : w L שפה זו היא רגולרית מסגירות השפות הרגולריות להומומורפיזם. נסמן 0} n,l ab = {a n b n : ידוע ששפה זו היא חסרת הקשר. ) (Σ Σ,f: {a, b} 2 באופן הבא: f(a), f(b) נשים לב כי.f(a) = Σ, f(b) = Σ נגדיר הצבה שתיהן שפות סופיות, לכן הן רגולריות ולכן גם חסרות הקשר, ולכן ההצבה f היא הצבה ח"ה. נגדיר: v }.L 3 = f(l ab ) = {f(a n b n ): n 0} = {uv : u, v Σ, u = שפה זו היא חסרת הקשר מסגירות השפות חסרות ההקשר להצבה ח"ה. נגדיר: } 2.L 4 = L 1 L 2 = {uv : u L 1, v L 2 } = {uv : u L 1, v L שפה זו היא רגולרית מסגירות השפות הרגולריות לשרשור סופי. נגדיר v }.L 5 = L 3 L 4 = {uv : u L 1, v L 2, u = שפה זו היא חסרתהקשר מסגירות השפות חסרות ההקשר לחיתוך עם שפות רגולריות. Σ h 2 : Σ Σ באופן הבא:. σ Σ: h נשים לב ש: 2 (σ) = h 2 (σ ) = σ נגדיר הומומורפיזם.h 2 (L 5 ) = {h 2 (uv ): u L 1, v L 2, u = v } = {uv: u L 1, v L 2, u = v } = L לכן קיבלנו שהשפה L היא חסרת הקשר מסגירות השפות חסרות ההקשר להומומורפיזם. רעיון הבנייה: ניקח דקדוקים רגולריים עבור השפות L 1, L 2 ונשלב את הכללים שלהם לבניית דקדוק חסר הקשר. הכללים של הדקדוקים הנ"ל גוזרים את המילים אות אחר אות. אז כדי לגזור,uv L נגזור את u ואת v בוזמנית, אות אחר אות, וכך נוכל לדאוג שהן מאותו אורך. כדי לשלוט על שתי הגזירות בוזמנית, צריך משתנה דקדוקי משותף שמבצע את שתיהן, והוא חייב להיות ממוקם באמצע בין u ל v לכל אורך הגזירה. לכן נגזור את u משמאל לימין ואת v מימין לשמאל, ע"י כך שניקח דקדוקים לינארי ימני ולינארי שמאלי בהתאמה. ד. בניה: נניח שמתקיים ε L 2 ε, L 1 )נתייחס בהמשך למקרים שזה לא המצב(. ניקח דקדוק לינארי ימני ) 1 G 1 = (V 1, Σ, P 1, S כך ש L(G 1 ) = L 1 ודקדוק לינארי שמאלי ) 2 G 2 = (V 2, Σ, P 2, S כך ש L(G 2 ) = L 2 )שני הדקדוקים קיימים כי השפות רגולריות(. כמוכן נוודא ששני הדקדוקים ללא כללי ε )זה אפשרי כי ראינו שתמיד קיים דקדוק רגולרי שכלל ה ε היחיד בו הוא S, ε וכאן אין כזה כי הנחנו ש ε לא בשפות(. כעת נבנה את הדקדוק הבא: G = (V 1 V 2, Σ, P, (S 1, S 2 )) P = {(X 1, X 2 ) σ 1 (Y 1, Y 2 )σ 2 X 1 σ 1 Y 1 P 1, X 2 Y 2 σ 2 P 2 } {(X 1, X 2 ) σ 1 σ 2 X 1 σ 1 P 1, X 2 σ 2 P 2 } הסבר לבניה: המשתנים הם זוגות של משתנים מ V, 1, V 2 כך אנחנו יכולים לשלוט על שתי הגזירות בו זמנית. בכל פעם נגזור אות אחת של u לפי כלל מ P 1 ואות אחת של v לפי כלל מ P 2 ונעדכן את המשתנה המשותף בהתאם. אם שני המשתנים הנוכחיים מאפשרים גזירה טרמינלית אז נאפשר גם גזירה טרמינלית מהמשתנה המשותף. לפיכך נקבל: u = ו v w = uv כך ש: u L 1, v קיימים L 2 w L w = uv, k = u = v ו S, S כך ש: u, v Σ 1 k 2 k G2 v G1 u קיימים by the above explanation w L(G) (S 1, S 2 ) k G w
טיפול ב ε : מפתה לטפל בכללי ε ע"י הוספת: } 2 {(X 1, X 2 ) ε X 1 ε P 1, X 2 ε P לכללי הגזירה בבניה הנ"ל. אבל נשים לב שזה יוצר מקרה בעייתי. למשל יתכן שב G 1 הכללים הם 1 S,aS 1 ε ואז קיימת הגזירה:,S 1 as 1 a וב G 2 הכלל היחיד הוא,S 2 b ואז קיימת הגזירה: S, 2 b אבל ב G לא נקבל גזירה למילה ab כי מדובר בגזירות באורך שונה. לכן לצורך הפשטות לקחנו מראש דקדוקים ללא כללי ε, ואז ברור שאורך הגזירה שווה לאורך המילה והכל מסתדר יפה. במידה וכן מתקיים ε L 1 או,ε L 2 פשוט נבצע את הבניה הנ"ל עבור {ε} L 1 ו{ ε },L 2 ונקבל דקדוק ח"ה עבור {ε} L, ממנו ניתן בקלות לבנות דקדוק ח"ה עבור L )ע"י בנית דקדוק לאיחוד שפות שנלמדה בכיתה(. תכונות סגור ולמת הניפוח לשפות רגולריות. תהי N}.L = {a i b j i j רגולרית. הוכיחו/הפריכו ע"י תכונות סגור בלבד: L א. הוכיחו/הפריכו: L מקיימת את למת הניפוח לשפות רגולריות. ב. L אינה רגולרית! א. נניח בשלילה שהשפה L היא רגולרית. {b} {a} רגולרית מכיוון ש{ b },{a} סופיות ולכן רגולריות, ומסגירות השפות הרגולריות השפה לשרשור סופי ולאיטרציה. השפה {a} {b} L רגולרית מסגירות השפות הרגולריות לחיסור. נשים לב כי: {a} {b} L = {w w {a} {b}, w L} = {a i b j i, j 0, a i b j L} = {a n b n n 0} ידוע שהשפה {0 n a} n b n אינה רגולרית ולכן קיבלנו סתירה. לכן L אינה רגולרית. השפה L אינה מקיימת את למת הניפוח. ב. נניח בשלילה שהיא כן מקיימת, ויהי n הקבוע המובטח מהלמה. נביט במילה,z = a n b עבורה מתקיים z n וגם z L )כי > 0 n! תמיד(. z = uvw המקיים את תנאיה. מכיוון ש n uv אז בהכרח הפירוק לפי הלמה קיים פירוק כיוון ש 1 v מתקיים 1.t כמוכן מתקיים מהצורה: w = a n s t b n+n!,v = a t,u = a s.t n לכן גם, v uv n n! i = )זה מספר שלם מכיוון ש n t 1.) אבל: לפי הלמה z i L לכל,i N בפרט עבור t z i = uv i w = a s a ti a n s t b n+n! = a s a n!+t a n s t b n!+n = a n!+n b n!+n L זו סתירה. לכן קיבלנו שהשפה L אינה מקיימת את למת הניפוח. מ. למת הניפוח לשפות רגולריות או בנית אוטומט.,perm(u) = {v Σ : σ Σ, # נסמן,u Σ σ (u) = # σ (v)} יהי Σ א"ב כך ש 2 Σ. עבור כלומר perm(u) היא קבוצת כל המילים המתקבלות מ u ע"י פרמוטציה של האותיות. נגדיר את השפה: perm(u)}.l = {w Σ : u, u Σ, w = uu, u הוכיחו/הפריכו: L רגולרית. הנחיה: כדי להוכיח, עליכם לבנות אוטומט סופי, ולנמק את נכונות הבנייה, אך אין צורך בהוכחת נכונות פורמלית. כדי להפריך, יש להשתמש בלמת הניפוח לשפות רגולריות..2.3
השפה אינה רגולרית! נניח בה"כ ש Σ,a} {b )נתון ש 2 Σ, סימני האותיות אינם מגבילים כלליות(. נניח בשלילה ש L רגולרית, לכן היא מקיימת את למת ניפוח. יהי n הקבוע המובטח מהלמה. נביט במילה.z = a n bba n נשים לב כי z n וכן z L )כי מתקיים ) n.)a n b perm(ba לפי הלמה קיים פירוק z = uvw המקיים את תנאיה. מכיוון ש n uv הפירוק הוא בהכרח מהצורה.w = a n s t bba n,v = a t,u = a s כמו כן 1 v לכן 1.t לפי הלמה, לכל i מתקיים,z i L בפרט:.z 0 = uv 0 w = a s a n s t bba n = a n t bba n L.u perm(u) וגם: z כך ש: u Σ 0 = uu לפי הגדרת L, קיימת # b (u) = # b (u 0.)# אך הפירוק היחיד של z שמקיים את זה הוא: )כי = 2 ) 0 b (z כלומר = 1 ).u אבל # בסתירה לכך ש( perm(u.u = ba n,u = a n t a (u) = n t < n = # a (u ) b L אינה רגולרית. הוכחה מההרצאה. הוכחת נכונות שפה של אוטומט. הוכיחו כי השפות הרגולריות סגורות תחת הפעולה של הומומורפיזם הפוך..4 אינטואיציה: אנחנו רוצים לבנות אוטומט שמקבל את השפה (L) h. 1 כלומר אוטומט שמקבל מילה w אמ"מ h(w) היא מילה ב L. כדי להכריע האם h(w) היא מילה ב L או לא, נריץ סימולציה של אס"ד שמקבל את L. יש לשים לב שהקלט לאוטומט שאנחנו בונים הוא המילה w עצמה, ולכן על כל אות σ שמופיעה בקלט, נריץ את הסימולציה "בבת אחת" על כל האותיות ב( h(σ. לצורך כך נסתפק באותם מצבים של האוטומט המקורי, כל מה שצריך זה רק לשנות את הגדרת δ שתבצע את הסימולציה כנדרש. הוכחה: יהי הומומורפיזם Δ,h: Σ ותהי Δ L שפה רגולרית. קיים אס"ד F) A = (Q, Δ, q 0, δ, כך ש L.L(A) = נבנה אס"ד A באופן הבא: A = (Q, Σ, q 0, δ, F) q Q, σ Σ: δ (q, σ) = δ (q, h(σ)) נוכיח שמתקיים: (L),L(A ) = h 1 ומכאן שהשפה (L) h 1 היא שפה רגולרית. טענת עזר: h(w)) q Q, w Σ : δ (q, w) = δ (q, הוכחה באינדוקציה על w : בסיס: = 0 w כלומר.w = ε אז מתקיים: h(ε)), δ (q, ε) = q = δ (q, ε) = δ (q, כנדרש. )שני המעברים הראשונים ע"פ הגדרת הרחבת פונקצית המעברים באס"ד, השלישי ע"פ הגדרת הרחבת h למילים(. צעד: + 1 n w = ונניח שהטענה מתקיימת לכל מילה u כך ש n u. 1, w אז נסמן w = uσ כך ש Σ.u Σ, σ מתקיים:
δ (q, w) = δ (q, uσ) = δ (δ (q, u), σ) = δ (δ (q, h(u)), σ) = δ (δ (q, h(u)), h(σ)) = δ (q, h(u)h(σ)) = δ (q, h(uσ)) = δ (q, h(w)) כנדרש. )המעבר השני לפי הגדרת, δ השלישי לפי הנחת האינדוקציה על u, הרביעי ע"פ הגדרת δ, החמישי ע"פ משפט מההרצאה, השישי ע"פ הרחבת h למילים(. כעת, מטענת העזר נובע שמתקיים: L(A ) = {w δ (q 0, w) F} = {w δ (q 0, h(w)) F} = {w h(w) L} = h 1 (L) )המעברים הראשון והשלישי מהגדרת שפה של אס"ד, השני מטענת העזר, הרביעי מהגדרת 1 h(. יחסים ואפיון אלגברי של שפות. הוכיחו/הפריכו את הטענות הבאות: א. אם קיים יחס שקילות, R, המעדן שפה L וכן index(r) הוא סופי אז L שפה רגולרית. ב. אם קיים יחס שקילות, R, אינווריאנטי מימין המעדן שפה L וכן index(r) הוא אינסופי אז L שפה לא רגולרית..5 ב. א. לא נכון! ניקח לדוגמא את היחס R שמתקבל ע"י החלוקה: {L,L}. המחלקות כמובן זרות ומכסות את Σ, לכן מגדירות יחס שקילות. כמוכן, אם xry אז מהגדרת המחלקות,x y L או,x, y L כלומר R מעדן את L ע"פ הגדרת עידון שפה. כמוכן, 2 index(r) )זה לא שוויון כי יתכן שאחת המחלקות שהגדרנו ריקה(, כלומר סופי. כל זה מתקיים ללא תלות ב L עצמה, לכן כל שפה L לא רגולרית תהווה פה דוגמא נגדית, למשל = L.{a n b n n 0} לא נכון! ניקח לדוגמא את היחס R המוגדר ע"י החלוקה: } Σ {{w} w )כלומר כל מחלקה היא מילה אחת(. המחלקות כמובן זרות ומכסות את Σ, לכן מגדירות יחס שקילות. מתקיים = Σ.index(R) = כמוכן, היחס הוא אינווריאנטי מימין כי אם xry אז x = y ואז לכל Σ z מתקיים xz = yz ולכן xzryz כנדרש. יתר על כך, היחס R מעדן כל שפה L כי אם xry אז x = y ואז כמובן שמתקיים y (x, y L) (x, (L. לכן כל שפה L רגולרית תהווה פה דוגמא נגדית, למשל. הגדרת R L ומשפט נרוד. יהי } n Σ = {σ 1,, σ א"ב, ונגדיר שפה L מעל א"ב Σ בצורה הבאה: L = {w Σ : 1 i n, פעמים i לכל היותר w מופיעה ב σ i } הגדירו את מחלקות השקילות של היחס R, L וקבעו האם L רגולרית. הוכיחו את תשובתכם..6
אינטואיציה: כל מילה שיש בה אות σ i שמופיעה יותר מ i פעמים נמצאת במחלקה S out )לא משנה איזה סיפא נוסיף, המילה לא בשפה(. מבין שאר המילים, מה שמעניין אותנו זה כמה פעמים בדיוק מופיעה כל אות )לפי זה ניתן לדעת לכל סיפא אם היא מכניסה את המילה לשפה או לא(, סדר האותיות אינו רלוונטי. n מחלקות השקילות:.S נגדיר:, i, 0 v i כך ש i v N n v = {w Σ : i, # σi (w) = v i } לכל וקטור.S out = {w Σ : i, # σi בנוסף נגדיר: i} (w) > מחלקות השקילות של R L הן S out וכל S v הנ"ל. מספר הדרכים לבחור v כנ"ל: 1)! + (n i=1 (i + 1) =, לכן נקבל + 1 1)! + (n,index(r L ) = ולכן L רגולרית ע"פ משפט נרוד. הוכחת מחלקות השקילות: v.σ 1 v 1 σ n אף מחלקה אינה ריקה:,σ 1 σ 1 S out ולכל v כנ"ל: n S v :Σ לכל Σ w נסתכל על (# =.v אם v מקיים את σ1 (w),, # σn (w)) המחלקות מכסות את.w S out ולכן i, # σi התנאי, i, 0 v i i אז.w S v אחרת, (w) > i המחלקות זרות: אין צורך להוכיח )נובע מההוכחה בהמשך שלכל,x y שלא באותה מחלקה מתקיים,(x, y) R L כי R L רפלקסיבי(. לכל,x y שהם באותה מחלקה, נחלק למקרים: S( נשים לב שלכל אות מתקיים z. Σ v )מהגדרת # σi (x) = # σi (y).x, y S v o תהי סיפא #. σi לפי הגדרת L, מס' הפעמים שכל אות מופיעה במילה קובע חד (xz) = # σi ולכן גם (yz) משמעית אם המילה בשפה או לא, לכן מתקיים xz, yz L או.xz, yz L לכן, מתקיים,(x, y) R L כנדרש..# σj תהי Σ,z נשים (y) > כך ש j σ j וקיימת,# σi (x) > כך ש i σ i אז קיימת.x, y S out (x, y) לכן, מתקיים.xz, yz L כלומר:.# σj (yz) > j וכן,# σi לב שמתקיים גם (xz) > i o,r L כנדרש. לכל,x y שהם לא באותה מחלקה, נחלק למקרים:.v ונניח בה"כ:,v אז נבחר.v v i v i > v i i כך ש i x S v, y S v o כך ש i v z = σ i )החזקה חוקית כי בהכרח v, אחרת v אינו וקטור חוקי להגדרת i i i נביט בסיפא.xz L ולכן # σi המחלקות(. נשים לב שמתקיים: (xz) = v i + i v i > i,# σi לעומת זאת, (yz) = v i + i v i = i i # σj )אחרת אינו וקטור חוקי להגדרת (yz) = # σj וגם לכל אות אחרת (y) = v j j :σ j המחלקות(, לכן.yz L לפיכך, (x, y) R L כנדרש. # σi )אחרת v אינו וקטור (x) = v i i מתקיים σ i לכל אות.z = ε נבחר.x S v, y S out חוקי להגדרת המחלקות( לכן.xε = x L.yε = y L לכן.# σj לעומת זאת, מהגדרת S, out קיימת σ j כך ש j (y) > v לפיכך,,(x, y) R L כנדרש. o
משפט נרוד. יהי } n Σ = {σ 1,, σ א"ב, 2,n ויהי k טבעי נתון. נגדיר את השפה הבאה: L = {w Σ : # σ1 (w) # σ2 (w) # σn (w) k} קבעו אם השפה רגולרית, והוכיחו באמצעות משפט נרוד..7 נוכיח ש( index(r L הוא סופי, ולכן על פי משפט נרוד השפה L הינה רגולרית. נשים לב שלשם כך לא צריך לזהות במדויק את מחלקות השקילות של R, L מספיק לתת חסם עליון סופי על מספרן. נשים לב שהקבוצה k} S = {w Σ : 1 i n, # i (w) > מוכלת כולה במחלקת שקילות אחת של :R L לכל שתי מילים,x, y S ולכל סיפא Σ z מתקיים.xz, yz L זאת מכיוון שלא משנה מה נוסיף להן עדיין תהיה אות שמופיעה יותר מ k פעמים ולכן התנאי של השפה לא יתקיים. לכן.xR L y כמוכן, נשים לב שב S יש מס' סופי של מילים, שכן במילות S כל אות מופיעה לכל היותר k פעמים ולכן אורך המילים חסום ע"י.kn ראינו בכיתה שאם אורך המילים בשפה חסום אז השפה היא סופית. כלומר, במקרה הגרוע ביותר, מחלקות השקילות של R L הן אחת שמכילה את S, ו S נוספות שמכילות כל אחת מילה אחת )לא יתכנו יותר כי מחלקות השקילות אינן ריקות(, ולכן קיבלנו S,index(R L ) 1 + ומכיוון ש S סופי אז ) L index(r הוא סופי. למת הניפוח לשפות ח"ה. תהי k}.l = {a i b j c k 10 i j הוכיחו באמצעות למת הניפוח לשפות ח"ה כי L אינה ח"ה. נניח בשלילה שהשפה L ח"ה, ולכן מקיימת את למת הניפוח לשפות ח"ה. יהי n הקבוע המובטח מהלמה. נסמן 10) max(n,,m = ונתבונן במילה.z = a m b m c m מתקיים z L כי 10,m וכן z, = 3m n לכן קיים פירוק z = uvwxy המקיים את תנאי הלמה. מכיוון ש, vwx n m אז תתהמילה vwx יכולה להכיל לכל היותר אחת מהאותיות,a. c בפרט גם במילה vx מופיעה לכל היותר אחת מהאותיות a או c. נחלק לשני מקרים: o אם > 0 (vx),# a אז כאמור = 0 (vx).# c נסתכל על הניפוח:.z 2 = uv 2 wx 2 y L נשים לב כי מתקיים:.# c (z 2 ) = # c (uvwxy) + # c (vx) = # c (z) = m אך מצד שני, באותו אופן נקבל:,# a (z 2 ) = # a (uvwxy) + # a (vx) > m בסתירה לכך ש L z 2 )כי אז חייב להתקיים: ) 2.)# a (z 2 ) # c (z o אם = 0 (vx),# a אז מכיוון ש 1 vx )מובטח מהלמה( מתקיים > 0 (vx) # b או.z 0 = uv 0 wx 0 y = uwy L כל האותיות בא"ב(. נסתכל על הניפוח: )אלו # c (vx) > 0 נשים לב כי מתקיים:.# a (z 0 ) = # a (uvwxy) # a (vx) = # a (z) = m אך מצד שני, באותו אופן נקבל: # b (z 0 ) < m או לחלופין # c (z 0 ) < m, שניהם בסתירה לכך ש L z 0 )כי אז חייב להתקיים: ) 0.)# a (z 0 ) # b (z 0 ) # c (z בכל מקרה הגענו לסתירה, לכן L אינה ח"ה..8
למת הניפוח לשפות ח"ה. הוכיחו את למת הניפוח לשפות ח"ה. לצורך ההוכחה, נתון דקדוק ח"ה (S G =,V),T,P שכל חוקיו הם מהצורה A α כך ש V A ו T) α 5,α (V.2 שימו לב: יש להשתמש אך ורק בדקדוק הנתון G )ואסור, לדוגמה, להעביר אותו לצורה נורמלית(..9 תהי שפה ח"ה L ודקדוק ח"ה S) G = (V, T, P, כנ"ל כך ש L.L(G) = טענה: יהי h גובה עץ הגזירה של z מילת חזית של עץ גזירה ב G המושרש במשתנה A כלשהו. מתקיים:.5 h 5 או במילים אחרות,,h log 5 z הוכחה באינדוקציה על h גובה עץ הגזירה: בסיס: = 0 h. אזי בעץ יש רק שורש שהוא משתנה, וזו גם מילת החזית. מתקיים כנדרש: z. = 1 = 5 h צעד: נניח נכונות עבור h. ויהי + 1 h גובה עץ הגזירה של z מילת חזית של עץ גזירה ב G המושרש במשתנה,h + 1 1.A ונתבונן בצעד הגזירה הראשון:.A α לכל משתנה ב α מתקיים כי תת העץ המושרש במשתנה, גובהו לכל היותר h ולכן, על פי הנחת האינדוקציה, אורך מילת החזית שלו היא לכל היותר 5. h בנוסף, 5 α, ולכן אורכה של z הוא לכל היותר = h 5 5 1+h 5. מש"ל טענת העזר. כעת, נראה שעבור 1+ V n = 5 מתקיימים תנאי הלמה. תהי מילה z כך ש n z ו( L(G, z L = ויהי עץ גזירה ל z ב G. מהטענה נובע שגובה העץ מקיים: + 1 V.h log 5 z log 5 n = כלומר ישנו מסלול מהשורש לאחד העלים העובר בדרך בלפחות + 1 V צמתים פנימיים )כולל השורש, לא כולל העלה(. נסתכל על + 1 V הצמתים הפנימיים הקרובים יותר לעלה במסלול הזה. כל צומת פנימי מייצג משתנה, ולכן מעקרון שובך היונים קיים משתנה שמופיע לפחות פעמיים, נסמנו A. נסמן ב T 1 את תתהעץ ששורשו ה A העליון, וב T 2 את תתהעץ ששורשו ה A התחתון. נשים לב שגובהו של T 1 הוא לכל היותר + 1 V )נשתמש בזה בהמשך(. כעת, נסמן ב w את מילת החזית של T, 2 ב vwx את מילת החזית של )w T 1 חייבת להיות תתמילה שלה כי T 2 הוא תת עץ של T(, 1 וב uvwxy את מילת החזית של עץ הגזירה כולו vwx( חייבת להיות תתמילה שלה, כנ"ל(. כלומר מצאנו פירוק z, = uvwxy ונוכיח שהוא מקיים את תנאי הלמה: T 1 הוא כאמור בגובה + 1 V h. טענת העזר הנ"ל תקפה גם עליו )היא מתייחסת לכל עץ גזירה של. vwx 5 h 5 V +1 = n כלומר, מתקיים:.h log 5 vwx לכן.)S ולא רק לעץ ששורשו G לשורש של T 1 יש לפחות 2 בנים, אחד מהם אבקדמון של T, 2 נסמן את תת העץ המושרש בו ב T, 3 ובן נוסף שנסמן את תת העץ המושרש בו ב T 4 )הבן הנ"ל הוא משתנה או טרמינל σ(. נשים לב ש w תת מילה של מילת החזית של T, 3 לכן מילת החזית של T, 4 נסמנה v, היא תתמילה של v או של x )תלוי אם T 4 משמאל או ימין של.)T 3 נשים לב כי v ε )כי אין כללי.)ε לכן נקבל: > 0 v. vx נשים לב שמתקיים,S uay uvaxy uvwxy ובפרט: A vax וגם.A w נוכיח באינדוקציה שלכל 0 i מתקיים,S uv i Ax i y ולכן ע"י שרשור הגזירה A w נקבל,S uv i wx i y ומכאן L(G),uv i wx i y L = כנדרש. בסיס: = 0,i ראינו קודם שמתקיים:.S uay = uv 0 Ax 0 y צעד: אם S uv i Ax i y אז ע"י שרשור הגזירה A vax נקבל S uv i+1 Ax i+1 y )1 )2 )3
ג. 10. ביטויים רגולריים, למת הניפוח, דקדוקים. יהי Σ א"ב שאיננו מכיל את הסימנים ),),,+,,ε,, ותהי R Σ קבוצת הביטויים הרגולריים מעל Σ. נסתכל על R Σ כשפה מעל א"ב )} (, +,, ε,,.δ = Σ {, R. Σ הגדירו את א. הוכיחו/הפריכו: R Σ רגולרית. ב. הוכיחו/הפריכו: R Σ ח"ה. ג. הנחיה: כדי להוכיח יש לבנות דקדוק ח"ה ולנמק נכונותו, וכדי להפריך יש להשתמש בלמת הניפוח לשפות ח"ה. הערה: אם רוצים לדייק בפתרון שאלה זו, יש לציין שבמהלך הפתרון נסמן את ε המילה הריקה בסימון חדש ε, זאת כדי שניתן יהיה להבחין בינה לבין האות ε. Δ כמוכן נשתמש ב[ [ בתור סוגריים המתארים קדימויות, כדי להבדיל מסימני הסוגריים בא"ב. עם זאת, אלה לא עניינים מהותיים לשאלה ופתרון שלא היה מתייחס לכך היה מתקבל. יש לתת כאן במדויק את ההגדרה הסינטקטית מהכיתה. אין צורך בהגדרה הסמנטית. א. לא נכון! ב. נניח בשלילה ש R Σ רגולרית, ולכן מקיימת את למת הניפוח. יהי n הקבוע המובטח מהלמה. נבנה באופן אינדוקטיבי ב"ר רגולרי r i באופן הבא: ) + i.r 0 =, r i+1 = (r נשים לב שהשתמשנו רק בכללים של,R Σ לכן.r n R Σ [+ )] 0 0 ( = = 0 r כנדרש.,r n = ( n [+ )] n באינדוקציה על :n בבסיס, נראה שמתקיים צעד,,r n+1 = (r n + ) = (( n [+ )] n + ) = ( n+1 [+ )] כנדרש. מתקיים + 1 4n, r n = ולכן לפי הלמה קיים פירוק r n = uvw המקיים את תנאיה. נשים לב כי n האותיות הראשונות של r n הן כולן ")", ומכיוון ש n uv אז הפירוק הוא בהכרח מהצורה הבאה:.uv 0 w R Σ אבל:.u = ( s, v = ( t, w = ( n s t [+ )] n ע"פ הלמה בהכרח מתקיים w] [uv 0 w] = n t < n = # ) [uv 0 (,# זאת בסתירה.uv 0 w = ( n t [+ )] n ולכן מתקיים לכך שלכל r R Σ מתקיים [r] [r] = # ) ( #. טענה זו הוכחה בתרגול )ולא בהרצאה(, ולכן אין להשתמש בה ללא הוכחה. נכון! נסמן } k,σ = {σ 1,, σ ונבנה דקדוק חסר הקשר ל R Σ באופן הבא: G = ({S}, Δ, P, S) P: S ε σ 1 σ k (S + S) (S S) (S ) הסבר: כללי הגזירה של S תואמים בדיוק את כל כללי הבסיס והיצירה של R Σ ולכן ניתן לגזור ממנו בדיוק את כל הביטויים הרגולריים ב R Σ )גזירה של ביטוי r תתבצע בסדר הפוך ליצירה שלו ע"פ כללי.)R Σ
r, הוכיחו את תשובתכם. בהינתן ביטוי רגולרי 11. בעיות הכרעה, ביטויים רגולריים. תארו אלגוריתם הפותר את בעיית ההכרעה הבאה. האלגוריתם קובע האם קיימת L[r] z עבורה קיים פירוק z = uvw המקיים 1, v ו L[r] uv i w לכל 0.i טענה: שפה L רגולרית היא אינסופית אם ורק אם קיימת z L עבורה קיים פירוק z = uvw המקיים.i לכל 0 uv i w L ו, v 1 הוכחה: אם L רגולרית ואינסופית אז אורך המילים בה אינו חסום )הוכח בכיתה(. לכן קיימת מילה z L כך ש n z עבור n הקבוע המובטח בלמת הניפוח. מהלמה נובע ש z מקיימת את הנדרש. אם קיימת z L המקיימת את הנדרש אז uv i w L לכל 0.i מכיוון ש ε v מדובר באינסוף מילים שונות )כל אחת באורך שונה(, לכן L אינסופית. כעת מהטענה נובע שהאלגוריתם המבוקש צריך, בהינתן ב"ר r, להכריע האם L[r] אינסופית. פשוט נשתמש,infinity(r) לכן בכיתה נלמד אלגוריתם עבור כך המשתמש בפונקציה רקורסיבית באלגוריתם זה. 12. שקילות מודלים אוטומט מחסנית. בשאלה זו נציג מודל אוטומט מחסנית חדש. יהי F) M = (Q, Σ, Γ, δ, q 0,, אוטומט מחסנית המקבל ע"י ריקון המקיים את התנאי הבא: לכל :q Q, σ Σ {ε}, Z Γ אם Z) (q, γ) δ(q, σ, אז 2. γ אפיינו במדויק את השפות הניתנות לזיהוי באמצעות אוטומט במודל זה. ציינו והוכיחו: 1. האם מתקבלות בדיוק השפות הרגולריות? או 2. האם מתקבלות בדיוק השפות חסרותההקשר? הערה: אם אתם בונים אוטומט סופי או אוטומט מחסנית לצורך ההוכחה, עליכם לתת בניה מדויקת ופורמלית, וכן לתת הסבר לא פורמלי שלה. אין צורך לתת הוכחת נכונות פורמלית. השפות הניתנות לזיהוי ע"י מודל זה הן בדיוק השפות חסרות ההקשר. נוכיח שקילות למודל אוטומט מחסנית המקבל ע"י ריקון שנלמד בכיתה )ראינו שמודל זה מקבל בדיוק את השפות חסרות ההקשר(. מודל חדש " " אוטומט מחסנית המקבל ע"י ריקון: יהי M אוטומט במודל החדש. המודל החדש הינו אוטומט מחסנית בתוספת מגבלה על δ, לכן ניתן לקחת את M עצמו בתור אוטומט במודל אוטומט מחסנית המוכר. בשני המודלים הקבלה ע"י ריקון, ולכן השפה היא אותה שפה. אוטומט מחסנית המקבל ע"י ריקון " " מודל חדש: יהי M אוטומט מחסנית. נבנה אוטומט מחסנית במודל החדש כך שיתקיים (M).L e (M ) = L e M
אינטואיציה לבניה: נסמלץ את ריצת האוטומט M. כדי להתגבר על המגבלה שלא ניתן לרשום יותר מ 2 אותיות למחסנית בבת אחת, נכניס את האותיות שאנחנו רוצים למחסנית אחתאחת. למשל אם יש מעבר שצריך לרשום למחסנית B(. )במקום AB השלישי C(, )במקום השניBC C, נעשה זאת ב 3 צעדים: הראשון ירשום למחסנית,ABC את כל הצעדים האלה נעשה כמסעי אפסילון ממצב מיוחד שזו אחריותו. כאשר המצב מסיים להכניס למחסנית את כל מה שרצינו, הוא עובר למצב המקורי שאליו האוטומט היה אמור לעבור, והסימולציה נמשכת. כדי לזכור בכל רגע מה נותר להכניס למחסנית ולאן צריך לעבור בסוף, ניצור מצב כזה לכל קומבינציה אפשרית של Γ q,q γ )במילים אחרות, "נקודד" לתוך שם המצב את מה שצריך לזכור(. אך זה יוצר בעיה: מספר הקומבינציות האלו הוא אינסופי, ומספר המצבים חייב להיות סופי. כדי לפתור את הבעיה, נשים לב שאין צורך בכל γ Γ אפשרית, מספיק להגביל את אורכה של γ לאורך הכי גדול שמופיע בכלל של,p) (γ δ(q,,σ (Z δ: )האורך הזה חסום בהכרח מכיוון שהפלט של (Z δ(q,,σ תמיד סופי, לפי הגדרת אוטומט מחסנית, כלומר סך כללי המעבר ש δ מגדירה הוא סופי(. בניה פורמלית: יהי ),, 0.M = (Q, Σ, Γ, δ, q נסמן Z)}.K = max{ γ : q, p, σ, Z: (p, γ) δ(q, σ, ונגדיר: M = (Q Q, Σ, Γ, δ, q 0,, ) Q = {q γ q Q, γ Γ, γ K} (1) q Q, σ Σ {ϵ}, Z Γ: δ (q, σ, Z) = {(p, ε) (p, ε) δ(q, σ, Z)} {(p γ, Y) (p, γy) δ(q, σ, Z), Y Γ} (2) q γy Q, Y Γ, Z Γ: δ (q γy, ε, Z) = {(q γ, YZ)} (3) q ε Q, Z Γ: δ (q ε, ε, Z) = {(q, Z)} הסבר לבניה: המצבים ב Q מבצעים סימולציה ל M, המצבים ב אחראים על הכתיבה למחסנית. המצב q Q γ משמעו שיש לרשום כעת γ למחסנית ולבסוף לעבור למצב q להמשך הסימולציה. כלל )1( של δ: כל כלל מעבר שרושם ε למחסנית נשאיר כמו שהוא. לכל כלל מעבר (Z,p), γy) δ(q,,σ )כלומר כלל הרושם לפחות אות אחת למחסנית(, במקום לרשום γy למחסנית )לא אפשרי אם > 2 ) γy נרשום רק Y ונעבור למצב q γ שאחראי לרשום את שאר γ. כלל )2( של δ: אם אנחנו במצב q γy אז נוסיף Y למחסנית )על גבי Z שנמצא שם כרגע( ונעבור למצב q γ )כלומר "נסיר" את Y מהזכרון של המצב(. כלל )3( של δ: אם אנחנו במצב q ε משמע שסיימנו לרשום למחסנית מה שהיה צריך וניתן לקפוץ למצב q להמשך הסימולציה )המחסנית נותרת ללא שינוי(. שימו לב: מפתה לרשום את כלל )1( כך: Z)},δ (q, σ, Z) = {(p γ, ε) (p, γ) δ(q, σ, כלומר לאפשר p γ למצב לבצע את כל הרישום למחסנית ובכך לטפל בכל המקרים בצורה אחידה ואלגנטית. אך נשים לב שזה לא יעבוד כצפוי: המעבר ל p γ רושם ε למחסנית והוא עלול לרוקן אותה בניגוד למה שהמעבר שהוא מסמלץ היה עושה. במצב זה החישוב "יתקע" ולא ימשיך כצפוי. לכן בכל מצב ש ε γ אנחנו חייבים לרשום מיד לפחות אות אחת למחסנית כדי להשאיר אותה לא ריקה.
13. צורות נורמליות ודקדוקים ח"ה. בהינתן שפה ח"ה L מעל א"ב,Σ נגדיר את השפה הבאה: } L.L = { u σ v σ Σ, u, v Σ, uv א. הוכיחו ש L ח"ה באמצעות תכונות סגור בלבד. ב. בהינתן דקדוק ח"ה עבור L, תנו בנייה פורמלית של דקדוק ח"ה עבור L. אין להסתמך על סעיף א', אלא יש להגדיר דקדוק בצורה ישירה ומפורשת )הערה: אסור להשתמש באוטומטי מחסנית(. נמקו את נכונות הבנייה. א. תהי L שפה ח"ה. נגדיר הומומורפיזם Σ h: Σ {$} באופן הבא:. σ Σ: h(σ) = σ,h($) = ε השפה (L) h 1 ח"ה מסגירות השפות ח"ה להומומורפיזם הפוך. נשים לב שהשפה (L) h 1 היא שפת כל המילים שמתקבלות ע"י מילה מ ש L "דחפו" לתוכה סימני $ בכל מיני מקומות )יתכן גם כמה ברצף(, כלומר: h 1 (L) = {$ i 0σ 1 $ i 1σ 2 $ i 2 σ n $ n : n 0, σ 1 σ 2 σ n L} השפה Σ{$} Σ היא רגולרית )מסגירות השפות הרגלוריות לשרשור וכי {$} סופית ולכן רגולרית, ו Σ רגולרית.) לכן השפה {$}Σ L 2 = h 1 (L) Σ הינה ח"ה מסגירות השפות ח"ה לחיתוך עם שפה רגולרית. נשים לב שמתקיים: L}.L 2 = {u$v u, v Σ, h(u$v) L} = {u$v uv נגדיר הצבה Σ f: Σ $ 2 באופן הבא:. σ Σ: f(σ) = {σ},f($) = Σ נשים לב ש f מחזירה שפה סופית בכל המקרים, לכן רגולרית ובפרט ח"ה, ולכן ההצבה f היא הצבה ח"ה. לכן ) 2 f(l היא שפה ח"ה מסגירות השפות ח"ה להצבה ח"ה. מתקיים: L.f(L 2 ) = {f(u$v) uv L} = {uσv σ Σ, uv L} = כלומר קיבלנו שהשפה L היא ח"ה, כנדרש. ב. רעיון הבניה: נשנה את כללי הדקדוק G של L כך שיכפו גזירת אות נוספת במקום כלשהו במילה, ורק אחת. נשאיר את המשתנים וכללי הגזירה של G, ובנוסף, על כל משתנה X נגדיר משתנה X שייעודו הוא "לגזור מה ש X גוזר, בתוספת אות אחת איפשהו". בכל גזירה מ X נבחר אחת משתי אפשרויות: לגזור תבנית פסוקית ע"פ כלל של G ונוסיף לתבנית אות אחת, או שנעביר את האחריות להוספת האות לאחד מהמשתנים שגזרנו )ע"י כך שנתייג אותו(. בניה פורמלית: יהי (S G =,V),Σ,P דקדוק ח"ה עבור L. נבנה את הדקדוק הבא: G = (V V, Σ, P P, S ) V = {X X V} P = {X ασβ σ Σ, X αβ P} {X αy β Y V, X αyβ P} הערה: ניתן להשתמש כאן בצורה נורמלית של חומסקי כדי לפשט מעט את הבניה. אך יש לשים לב שאנחנו גם מטפלים במקרה ש L ε. נימוק נכונות: כפי שנכתב ברעיון הבניה. ב G יש את אותם הכללים כמו ב G, ובנוסף גם כללי גזירה של משתנים מתויגים בהם מכניסים בדיוק אות אחת נוספת בתבנית הנגזרת ע"י כללי P או מעבירים אחריות הלאה להמשך הגזירה ע"י תיוג משתנה אחד בתבנית הנגזרת על פי כללי P. המשתנה ההתחלתי מתויג על מנת להכניס אות נוספת במילה.
14. בניית אוטומט מחסנית. בהינתן אוטומט סופי דטרמיניסטי F).A = (Q, Σ, δ, q 0, ), M,M = ({q M }, Σ, Γ, q M,, δ תנו בניה של אוטומט מחסנית בעל מצב יחיד, א. כך ש( L(A.L e (M) = השלימו את טענת העזר הבאה והשתמש בה על מנת להוכיח את נכונות הבניה בסעיף א'. ב. אין צורך להוכיח את טענת העזר. טענת עזר: אם: α),(q M, x, ) (q M, ε, כאשר: Γ,x Σ, α אז: = α א. רעיון הבניה: אנחנו רוצים לסמלץ אס"ד באוטומט מחסנית, לכן אין צורך להשתמש במחסנית בכלל. מצד שני, הוגבלנו לשימוש במצב אחד, לכן ננצל את המחסנית כדי לזכור באיזה מצב של האס"ד אנו נמצאים )א"ב המחסנית יהיה מצבי האס"ד, ובכל רגע נתון יהיה במחסנית תו אחד שאומר מה המצב. הנוכחי( בניה פורמלית: M = ({q M }, Σ, Q, q M, q 0, δ M, ) (1) q Q, σ Σ: δ M (q M, σ, q) = {(q M, δ(q, σ))} (2) q f F: δ M (q M, ε, q f ) = {(q M, ε)} נשים לב כי התו ההתחלתי במחסנית הוא q, 0 ו Q Γ. = ב. הוכחת נכונות:.α = δ (q אז,x Σ,α Q + כאשר (q M, x, q 0 ) 0, x) טענת העזר השלמה: אם α) (q M, ε, )נשים לב שהחלפנו את ב q 0 ואת Γ ב Q, ע"פ הגדרת M(. כעת נוכיח L(A) :L e (M) = תהי (M),x L e לכן מתקיים ε) (q M, x, q 0 ) (q M, ε, ע"פ הגדרת שפה של אוטומט מחסנית המקבל ע"י ריקון. נשים לב שצעד החישוב האחרון רוקן את המחסנית, לכן הוא בהכרח ע"פ כלל )2( של δ M )הכלל הראשון רושם תו למחסנית(. כלומר מתקיים: δ (q 0, x) = q f ולכן כאשר.q (q M, x, q 0 ) f F מטענת העזר נקבל (q M, ε, q f ) (q M, ε, ε) L(A) x כנדרש. M יכול להיות מופעל על כל.δ (q 0, x) = q f F נשים לב שכלל )1( של תהי L(A),x אז: קונפיגורציה של M )כל עוד נותר קלט והמחסנית לא ריקה(, ושהפעלתו מעולם לא מרוקנת את נמצא לכן כש M את הקלט בתו אחד. בכל הפעלה ומקצרת אליה תו(, המחסנית )כי רושמת פעמים עד שהקלט נגמר. כלומר נקבל x ניתן להפעיל את הכלל ) 0 q) M,,x q בקונפיגורציה α).(q M, x, q 0 ) x (q M, ε, מטענת העזר נובע ש,α = δ (q 0, x) = q f F ולכן ע"י הפעלת כלל )2( נקבל ε).(q M, ε, q f ) (q M, ε, בסה"כ קיבלנו ε),(q M, x, q 0 ) (q M, ε, כנדרש.