אוטומטים ושפות פורמליות

Transcription

אוטומטים ושפות פורמליות
‫אוטומטים ושפות פורמליות‬
‫תקציר‬
‫סיכום זה מבוסס על הרצאותיו של פרופ' משה קופל‪ ,‬אוניברסיטת בר אילן‪ ,‬סמסטר אביב‪ ,‬תשע"ב ‪.2012‬‬
‫עידכון אחרון התבצע ב־‪ 28‬ביולי ‪.2012‬‬
‫לשאלות‪ ,‬הערות וכדומה‪ ,‬שלחו לי למייל ‪.mail@studenteen.org‬‬
‫‪1‬‬
‫תוכן עניינים‬
‫‪ I‬הקדמה קצרה על שפות‬
‫‪1‬‬
‫‪II‬‬
‫‪4‬‬
‫שפות ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫אוטומטים דטרמיניסטים‬
‫‪4‬‬
‫‪5‬‬
‫‪2‬‬
‫אוטומט סופי דטרמיניסטי ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪5‬‬
‫‪3‬‬
‫למת הניפוח ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪6‬‬
‫‪III‬‬
‫‪4‬‬
‫אוטומטים לא דטרמיניסטים‬
‫המודל הלא דטרמיניסטי ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪4.1‬‬
‫‪IV‬‬
‫‪5‬‬
‫‪V‬‬
‫‪8‬‬
‫סגירות השפות הרגולריות ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪VI‬‬
‫‪7‬‬
‫‪4.1.1‬‬
‫‪4.1.2‬‬
‫סגירויות ‪10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫ביטויים רגולריים‬
‫‪12‬‬
‫ביטויים רגולרים ־ הגדרות וכוח הביטוי ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪12‬‬
‫‪5.1‬‬
‫הגדרת הביטויים הרגולרים ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪12‬‬
‫‪5.2‬‬
‫כוח הביטוי של הביטויים הרגולרים ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪13‬‬
‫‪14‬‬
‫קבוצות פורשות ‪14 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪6.1‬‬
‫הגדרת יחס השקילות על ∗‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Σ‬‬
‫‪14‬‬
‫‪6.2‬‬
‫משפט ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Myhill Nerode‬‬
‫‪16‬‬
‫דקדוקים‬
‫‪17‬‬
‫דקדוקים והגדרתם ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪7.1‬‬
‫‪8‬‬
‫‪9‬‬
‫מעברי ‪10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ε‬‬
‫משפט נרוד‬
‫‪6‬‬
‫‪8‬‬
‫שפת הדקדוק ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪17‬‬
‫‪17‬‬
‫דקדוקים רגולריים ‪18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪8.1‬‬
‫הגדרת דקדוק רגולרי ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪2‬‬
‫‪18‬‬
‫‪8.2‬‬
‫‪9‬‬
‫שקילות לשפות הרגולריות ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪18‬‬
‫שפות חסרות הקשר ‪20 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪9.1‬‬
‫דקדוק חסר הקשר ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪20‬‬
‫‪9.2‬‬
‫רגולרית מול חסרת הקשר ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪20‬‬
‫‪9.3‬‬
‫דקדוק בצורת חומסקי ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪21‬‬
‫‪9.4‬‬
‫משפט בר הילל ־ למת הניפוח לשפות חסרות הקשר ‪. . . . . . . . . . . . . . . . . . .‬‬
‫‪23‬‬
‫‪9.5‬‬
‫סגירויות של שפות חסרות הקשר ‪. . . . . . . . . . . . . . . . . . . . . . . . . . . . .‬‬
‫‪24‬‬
‫‪ VII‬אוטומטי מחסנית ושפות תלויות הקשר‬
‫‪26‬‬
‫‪3‬‬
‫חלק ‪I‬‬
‫הקדמה קצרה על שפות‬
‫‪1‬‬
‫שפות‬
‫ע"מ שנוכל להגדיר את המושג אוטומט‪ ,‬נצטרך כמה מושגים מוקדמים ע"מ להמשיך‪.‬‬
‫הגדרה ‪ 1.1‬תהי קבוצה סופית ‪ .1 Σ‬מחרוזת ‪ w 2‬מעל הא"ב ‪ Σ‬היא סדרה סופית של תווים מ־‪.Σ‬‬
‫לדוגמא‪ ,‬אם }‪ ,Σ = {a, b‬אז מילים אפשריות הן ‪ .w = ab ,w = bb ,w = aa‬נשים לב כי ההגדרה כוללת גם את‬
‫המילה הריקה ‪ ,3‬אותה נסמן ב־‪.ε‬‬
‫נסמן ב־ ∗‪ Σ‬את קבוצת כל המחרוזות מעל א"ב ‪ .Σ‬לכל ∗‪ w ∈ Σ‬נגדיר את אורך המילה ‪ ,4‬אותו נסמן ב־|‪.|w‬‬
‫הגדרה ‪ 1.2‬נאמר ש־‪ L‬היא שפה מעל א"ב ‪ Σ‬כש־‪ L‬היא קבוצת מחרוזות ∗‪ L ⊆ Σ‬כלשהי‪.‬‬
‫נגדיר כעת את המושג שרשור של מילים‪,‬‬
‫הגדרה ‪ 1.3‬יהיו ∗‪ .w2 = τ1 ...τm ,w1 = σ1 ...σn ,w1 , w2 ∈ Σ‬נגדיר את השרשור ‪ w1 · w2‬להיות המחרוזת = ‪w1 · w2‬‬
‫‪ .σ1 . . . σn τ1 . . . τn‬בהתאם לכך גם ניתן להגדיר חזקה של מילה או אות‪ ,‬שרשור שפות‪ ,‬ועוד‪.‬‬
‫דוגמא ‪ 1.4‬הקבוצות הבאות הן שפות מעל א"ב }‪:Σ = {a, b‬‬
‫})‪L1 = {w | |w| ≡ 0(mod2‬‬
‫‬
‫‬
‫‪L2 = ai bj | i, j ≥ 0‬‬
‫}‪L3 = {abb, baa‬‬
‫}‪L4 = {w | |w|is prime‬‬
‫כעת‪ ,‬לאחר שהגדרנו מושגים בסיסיים אלו‪ ,‬נוכל לגשת להגדרת האוטומט‪.‬‬
‫‪1‬לה נקרא בהמשך א"ב‪ .‬כמו כן‪ ,‬נקרא לאיברי ‪ Σ‬תווים או אותיות‪.‬‬
‫‪2‬או מילה‪.‬‬
‫‪3‬זו למעשה סדרת תווים באורך ‪.0‬‬
‫‪4‬כלומר‪ ,‬מספר התווים במילה‪.‬‬
‫‪4‬‬
‫חלק ‪II‬‬
‫אוטומטים דטרמיניסטים‬
‫‪2‬‬
‫אוטומט סופי דטרמיניסטי‬
‫למעשה‪ ,‬זה סוג של מחשב שמקבל קלט ויודע לבצע רק "דבר" אחד‪ .‬הקלט המתקבל שמור בסרט אינסופי‪ ,‬והמחשב‬
‫נמצא במצב מסוים ‪.5‬‬
‫בכל שלב בו האוטומט קורא אות בודדת‪ ,‬הוא עובר למצב חדש‪ .‬לכל אוטומט הכללים שלו להתקדמות למצבים‬
‫שונים בהתאם לאותיות שקורא‪.‬‬
‫נאלץ להבדיל בין מצבים מקבלים למצבים לא מקבלים ־ מילה ‪ w‬מתקבלת ע"י אוטומט אם בסיומה האוטומט‬
‫במצב מקבל‪.‬‬
‫דוגמא ‪ 2.1‬נגדיר את האוטומט ע"י הכללים הבאים‪.‬‬
‫‪δ(q0 , a) = q1 , δ(q0 , b) = q1‬‬
‫‪δ(q1 , a) = q0 , δ(q1 , b) = q0‬‬
‫כעת נגדיר פורמלית את המושג אוטומט סופי דטרמיניסטי ‪,6‬‬
‫הגדרה ‪ 2.2‬אוטומט סופי דטרמיניסטי הוא חמישיה )‪ (Σ, Q, q0 , F, δ‬כאשר‪,‬‬
‫)א( ‪ Σ‬הינו א"ב } ‪.{s1 , . . . sn‬‬
‫)ב( ‪ Q‬־ קבוצת מצבים } ‪.{q1 , . . . qm‬‬
‫)ג( ‪ q0 ∈ Q‬הוא המצב ההתחלתי‪.‬‬
‫)ד( ‪ F ⊆ Q‬קבוצת המצבים המקבלים‪.‬‬
‫)ה( ‪ δ : Q × Σ → Q‬הנקראית פונקציית המעברים של האוטומט‪.‬‬
‫הגדרה ‪ 2.3‬נאמר ש־ ∗‪ w ∈ Σ‬מתקבלת ע"י אס"ד )‪ M = (Σ, Q, q0 , F, δ‬אם ‪ ,δ ∗ (q0 , w) ∈ F‬כש־ ∗ ‪ δ‬מוגדרת ע"י הכלל‬
‫הרקורסיבי‪:‬‬
‫‪δ ∗ (q, ε) = q‬‬
‫)‪δ ∗ (q, wa) = δ(δ ∗ (q, w), a‬‬
‫‪5‬נסמן את המצב ההתחלתי ב־ ‪ ,q0‬ממנו מתקדמים אל ‪ q1‬וכך הלאה‪...‬‬
‫‪6‬בקיצור‪ ,‬אס"ד‪.‬‬
‫‪5‬‬
‫אינטואיטיבית‪ δ ∗ ,‬מחזירה את המצב אליו הגענו לאחר הרצת האוטומט על המילה ‪.w‬‬
‫הגדרה ‪ 2.4‬יהי )‪ M = (Σ, Q, q0 , F, δ‬אס"ד‪ .‬השפה המתקבלת ע"י ‪ M‬היא‬
‫} ‪L(M ) = {w | δ ∗ (q0 , w) ∈ F‬‬
‫הגדרה ‪ 2.5‬תהי שפה ∗‪ .L ⊆ Σ‬נאמר ש־‪ L‬היא שפה רגולרית אם קיים אס"ד ‪ M‬כך ש־) ‪.L = L(M‬‬
‫אינטואיטיבית‪ ,‬שפה ‪ L‬היא רגולרית אם קיים אס"ד ‪ M‬שמקבל את כל המילים ב־‪ L‬ורק אותם‪.‬‬
‫‬
‫‬
‫דוגמא ‪ 2.6‬תהי השפה ‪.L = ai bj | i, j > 0‬‬
‫נוכיח כי היא השפה הינה רגולרית ע"י בניית אס"ד שמקבל את השפה‪:‬‬
‫‪a‬‬
‫‪a‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪b‬‬
‫‪b‬‬
‫‪start‬‬
‫‪b‬‬
‫‪q3‬‬
‫‪q2‬‬
‫‪a‬‬
‫‪a, b‬‬
‫ע"מ לפשט‪ ,‬ננהג לייצג אס"ד באמצעות גרף מכוון המתאר את פונקציית המעברים ‪ .δ‬הסימון של מעגל כפול אומר‬
‫כי המצב הוא מצב מקבל‪.‬‬
‫‪3‬‬
‫למת הניפוח‬
‫תהי השפה הבאה‬
‫}‪L = {ai bi | i ≥ 0‬‬
‫נרצה להראות כי שפה זו אינה רגולרית‪ ,‬כלומר‪ ,‬לא קיים אס"ד שמקבל אותה‪.‬‬
‫האינטואיציה לכך היא שכדי שנוכל לדעת שיש את אותה כמות של ‪a‬־ים ו־‪b‬־ים‪ ,‬ניאלץ לזכור את כמות ה־‪a‬־ים‬
‫שנראה‪ ,‬ובגלל ש־‪ i‬אינו חסום‪ ,‬לא נוכל לבנות אס"ד שמקבל אותה עם מספר מצבים סופי‪ .‬שימו לב כי זו רק‬
‫אינטואיציה ואינה הוכחה‪.‬‬
‫נוכיח כעת את משפט "למת הניפוח"‪ ,‬המאפשר לנו להראות כי השפה ‪ L‬אכן אינה רגולרית באופן פורמלי‪.‬‬
‫‪6‬‬
‫משפט ‪) 3.1‬למת הניפוח( יהי ‪ M‬אס"ד בעל ‪ m‬מצבים‪ ,‬ותהי ∗‪ x ∈ Σ‬מחרוזת כך ש־|‪ ,m ≤ |x‬ו־) ‪.x ∈ L(M‬‬
‫אזי‪ ,‬קיים פירוק ‪ x = uvw‬כך ש‪:‬‬
‫)א( ‪.|uv| ≤ m‬‬
‫)ב( ‪.|v| > 0‬‬
‫)ג( לכל ‪ i ∈ N0‬מתקיים ) ‪ .uv i w ∈ L(M‬הוכחה‪ .‬מכיוון שב־ ‪ M‬יש רק ‪ m‬מצבים שונים‪ ,‬במהלך הריצה של ‪M‬‬
‫על ‪ ,x‬לאחר קריאת ‪ m‬התווים הראשונים של ‪ x‬נקבל סדרה של ‪ m + 1‬מצבים בהם עבר האוטומט בריצה על ‪.x‬‬
‫לכן‪ ,‬לפי עקרון "שובך היונים"‪ ,‬בהכרח קיים מצב ‪ q‬בסדרה זו שחזר על עצמו פעמיים‪.‬‬
‫נגדיר את הפירוק הבא עבור ‪ ,x‬כאשר ‪ u‬תהיה הרישא של ‪ x‬שההרצה של ‪ M‬עליה תגיע אל ‪ q‬בפעם הראשונה‪,‬‬
‫נגדיר את ‪ v‬להיות הקטע של ‪ x‬בין שתי ההופעות של ‪ ,q‬ולסיפא הנותרת של ‪ x‬נקרא ‪.w‬‬
‫נשים לב כי אכן ‪ .x = uvw‬כמו כן‪ ,‬נראה כי שלושת התנאים מתקיימים‪:‬‬
‫)א( בחרנו את ‪ u, v‬כך שכאשר נריץ את האוטומט על ‪ ,u‬נגיע לראשונה למצב ‪ ,q‬וכאשר נריץ את האוטומט על ‪v‬‬
‫נקבל פעם נוספת את ‪ ,q‬כאשר הבחירה שלנו התאפיינה בכך ש־‪ ,|v| > 0‬ובחרנו זאת על פני ‪ m‬התווים הראשונים‬
‫ובהם התרחש המעגל על ‪ ,q‬ולכן נקבל כי כל ‪ uv‬בתוך ‪ m‬התווים הראשונים הללו‪ .‬כלומר‪.|uv| ≤ m ,‬‬
‫)ב( הסברנו בסעיף א'‪.‬‬
‫)ג( ‪ ,δ ∗ (q0 , uv i w) = δ ∗ (q, v i w) = δ ∗ (q, w) ∈ F‬כאשר המעבר הראשון נובע מהרצת הרישא ‪ ,u‬המעבר השני‬
‫נובע מכך שעל כל הרצה ממצב ‪ q‬של ‪ ,v‬האוטומט חוזר ל־‪ ,q‬וקל לראות כי באינדוקציה ניתן להוכיח כי לכל ‪ ,i‬גם‬
‫המילה ‪ v i‬תחזור ל־‪ .q‬לבסוף‪ ,‬נשאר להריץ את הסיפא ‪ w‬מ־‪ ,q‬וזה שייך ל־ ‪ F‬עפ"י ההנחה שבסוף ‪ x‬מתקבל‪.‬‬
‫סה"כ‪ ,‬הוכחנו את שלושת התנאים של הפירוק ‪ ,x = uvw‬כנדרש‪.‬‬
‫המשמעות של למת הניפוח היא כי כאשר אוטומט מקבל מילה מספיק ארוכה‪ ,‬נוכל לנפח אותה ע"י הכפלת קטע‬
‫בתוכה‪ ,‬באופן כזה שגם מילה זו תתקבל ע"ׁ האוטומט‪.‬‬
‫איך נשתמש בלמת הניפוח?‬
‫נניח שברשותנו שפה ‪ ,L‬ונרצה להוכיח כי ‪ L‬אינה רגולרית‪ .‬נוכל להניח בשלילה כי השפה כן רגולרית‪ .‬ניקח מילה‬
‫מספיק גדולה‪ ,‬ונסיק בעזרת למת הניפוח כי ניתן לנפח אותה‪ ,‬אך לכל חלוקה שלה ‪ x = uvw‬נראה כי למת הניפוח‬
‫אינה מתקיימת‪ ,‬ולכן ההנחה כי השפה שלנו רגולרית שגויה‪.‬‬
‫נציג כעת בעזרת למת הניפוח כי השפה שהראינו לעיל אינה רגולרית‪.‬‬
‫משפט ‪ 3.2‬השפה }‪ L = {ai bi | i ≥ 0‬אינה רגולרית‪.‬‬
‫הוכחה‪ .‬נניח בשלילה ש־‪ L‬רגולרית‪ .‬אזי‪ ,‬קיים אס"ד ‪ M‬כך ש־) ‪ .L = L(M‬יהי ‪ m‬מספר המצבים ב־ ‪.M‬‬
‫נבחר את המילה ‪ .x = am bm‬לפי למת הניפוח‪ ,‬ניתן לפרק ‪ ,x = uvw‬כך ש־‪.uw ∈ L(M ) ,|v| > 0 ,|uv| ≤ m‬‬
‫בגלל ש־‪ ,|uv| ≤ m‬ורצף ‪ m‬התווים הראשונים הוא ‪ ,am‬בהכרח נקבל ש־‪ v‬הוא רצף ‪ aj‬כאשר ‪.7 j > 0‬‬
‫∈ ‪ ,L(M ) 3 uw = am−j bj‬בסתירה‪.‬‬
‫ולכן‪ ,‬נקבל כי ) ‪/ L(M‬‬
‫‪7‬כי ‪.|v| > 0‬‬
‫‪7‬‬
‫חלק ‪III‬‬
‫אוטומטים לא דטרמיניסטים‬
‫‪4‬‬
‫המודל הלא דטרמיניסטי‬
‫בניגוד לאס"ד‪ ,‬בו כל שלב מוגדר היטב‪ ,‬באוטומט לא דטרמיניסטי עבור מחרוזת אחת ‪ ,w‬יכול להיות וקיים יותר‬
‫ממסלול ריצה אחד אפשרי של האוטומט על ‪ .w‬נציג זאת ע"י דוגמא‪,‬‬
‫‪a, b‬‬
‫‪a‬‬
‫‪q0‬‬
‫‪q1‬‬
‫‪a‬‬
‫‪a, b‬‬
‫‪start‬‬
‫‪b‬‬
‫‪q3‬‬
‫‪b‬‬
‫‪q2‬‬
‫למשל‪ ,‬עבור המחרוזת ‪ w = abaab‬קיימת ריצה שמתקבלת‪,‬‬
‫‪q0 → q0 → q0 → q1 → q3 → q3‬‬
‫נאמר שאוטומט ל"ד מקבל מילה ‪ w‬אם קיימת ריצה של האוטומט המקבלת את המילה‪.‬‬
‫שימו לב כי השפה שאותה מזהה המכונה לעיל היא } ∗‪.L = {ua2 v ∪ ub2 v | u, v ∈ Σ‬‬
‫נגדיר כעת פורמלית את האוטומט הל"ד‪,‬‬
‫הגדרה ‪ 4.1‬אוטומט סופי לא דטרמיניסטי ‪ M 8‬מורכב מחמישיה )‪ (Σ, Q, q0 , F, δ‬כאשר ‪ Σ, Q, q0 , F‬מוגדרים באותו אופן כמו‬
‫באס"ד‪ ,‬אך ‪ δ‬היא פונקציה )‪.9 δ : Q × Σ → P (Q‬‬
‫כפי שעשינו עבור אס"ד‪ ,‬גם עבור אסל"ד נגדיר את ∗ ‪ δ‬כדי להרחיב קריאה של אות לקריאה של מחרוזת‪ ,‬ע"י הכלל‬
‫הרקורסיבי‬
‫}‪δ ∗ (q, ε) = {q‬‬
‫)‪δ(q 0 , a‬‬
‫[‬
‫= )‪δ ∗ (q, wa‬‬
‫)‪q 0 ∈δ ∗ (q,w‬‬
‫למעשה‪ δ ∗ ,‬מחזירה את קבוצת כל המצבים האפשריים שניתן להגיע אליהם עם המחרוזת ‪ w‬וממצב ‪.q‬‬
‫‪8‬ובקיצור‪ ,‬אסל"ד‪.‬‬
‫‪9‬כלומר‪ ,‬בהינתן מצב ‪ q‬ואות ‪ ,σ‬הפונקציה ‪ δ‬שולחת אותנו לקבוצה של מצבים אפשריים אליהם האוטומט יכול להתקדם באופן ל"ד‪.‬‬
‫‪8‬‬
‫הגדרה ‪ 4.2‬השפה המתקבלת ע"י האסל"ד ‪ M‬היא‬
‫∗‬
‫}∅ =‪L(M ) = {w | δ (q0 , w) ∩ F 6‬‬
‫שאלה מרכזית שעומדת בפנינו היא האם האוטומט הלא דטרמיניסטי הוא חזק יותר מן המודל הדטרמיניסטי‪.‬‬
‫כלומר‪ ,‬האם נוכל כעת לזהות שפות שלא היו רגולריות במובן של אוטומט דטרמיניסטי?‬
‫המשפט הבא יענה על התשובה‪ ,‬שהיא כי לא הוספנו כלל כוח חישובי‪.‬‬
‫משפט ‪ 4.3‬יהי ‪ M‬אסל"ד )‪ .(Σ, Q, q0 , F, δ‬אזי קים אס"ד ‪ M 0‬כך ש־) ‪.L(M 0 ) = L(M‬‬
‫הוכחה‪ .‬נבנה אס"ד שלמעשה "יסמלץ" את ריצת ‪ ,M‬כך ש־) ‪ .L(M ) = L(M 0‬נגדיר ) ‪.M 0 = (Σ0 , Q0 , q00 , F 0 , δ 0‬‬
‫נגדיר כעת את רכיביי החמישיה‪,‬‬
‫} ‪Σ0 = Σ, Q0 = P (Q), q00 = {q0‬‬
‫כעת‪ ,‬נגדיר את פונקצית המעברים‪ ,‬עבור ‪ R ∈ P (Q) = Q0‬להיות‬
‫[‬
‫= )‪δ 0 (R, a‬‬
‫)‪δ(q, a‬‬
‫‪q∈R‬‬
‫כלומר‪ ,‬עבור מצב ב־ ‪ ,M 0‬שהוא קבוצת מצבים ב־ ‪ δ 0 ,M‬תעביר אותנו אל קבוצת המצבים שמהם ניתן להגיע מכל‬
‫המצבים שיש ב־‪.10 R‬‬
‫כמו כן‪.F 0 = {q 0 | q 0 ∩ F 6= ∅} ,‬‬
‫כעת‪ ,‬נניח כי ) ‪ .w ∈ L(M‬אזי‪ ,‬קיים מסלול חישוב של ‪ M‬המקבל את ‪ .w‬באופן אותו בנינו את ‪ ,M 0‬ריצה של‬
‫‪ M 0‬מדמה ריצה של כל המסלולים על ‪ .w‬בהכרח נגיע כאן למצב ב־ ‪ Q0‬המכיל את המצב המקבל את ‪ w‬ב־‪,Q‬‬
‫ולכן לפי ההגדרה של ‪ M 0 ,F 0‬תקבל את ‪.w‬‬
‫∈ ‪ ,w‬אזי כל מסלול חישוב על ‪ w‬אינו מתקבל ב־ ‪ .M‬ולכן‪ ,‬בריצה של ‪ M‬על ‪ ,w‬אין מצב מקבל‬
‫אם ) ‪/ L(M‬‬
‫‪ qacc ∈ F‬המקבל את ‪ .w‬ולכן‪ ,‬בריצת ‪ M 0‬לא ייתכן שבשלב מסוים נגיע למצב מקבל ‪ ,q 0 ∈ Q0‬שכן זה אומר‬
‫כי קיים ‪ qacc ∈ F‬כך ש־ ‪ ,qacc ∈ q 0‬ומאופן הבנייה זה אומר כי קיים מסלול ריצה של ‪ w‬על ‪ M‬שמגיע ל־ ‪,qacc‬‬
‫בסתירה‪.‬‬
‫ולכן‪ ,‬הוכחנו סה"כ כי ) ‪ ,L(M ) = L(M 0‬כנדרש‪.‬‬
‫‪4.1‬‬
‫סגירות השפות הרגולריות‬
‫ברצוננו להראות כי קבוצת השפות הרגולריות סגורה תחת פעולות שונות‪ .‬כלומר‪ ,‬אם ברשותנו שפה רגולרית ‪ L‬או‬
‫שתי שפות רגולריות ‪ ,L1 , L2‬מה נוכל לומר על הרגולריות של השפות ‪.11 L∗ ,L ,L1 ∩ L2 ,L1 ∪ L2‬‬
‫∈ ‪.ε‬‬
‫שימו לב! ∗‪ 12 ε ∈ L‬ללא תלות אם ‪ ε ∈ L‬או ‪/ L‬‬
‫‪10‬נציין ששם אחר לאוטומט שבנינו עכשיו הוא אוטומט החזקה‪.‬‬
‫‪11‬תזכורת ‪L∗ = {x1 x2 . . . xl | ∀i = 1, . . . , l : xi ∈ L, l ≥ 0} :‬‬
‫‪12‬וזאת כי ניתן לקחת בהגדרת הקבוצה את ‪.l = 0‬‬
‫‪9‬‬
‫‪4.1.1‬‬
‫מעברי ‪ε‬‬
‫עד עתה‪ ,‬הפונקציה ‪ δ‬הוגדרה עבור זוג של מצב ואות‪ .‬נוסיף ל־‪ δ‬את האפשרות לעבור ממצב ‪ qi‬למצב ‪ qj‬ללא‬
‫קריאה של קלט‪.‬‬
‫איך נוכל להגדיר זאת במודל הלא דטרמיניסטי‪ ,‬מבלי לשנות את הגדרתו?‬
‫אם אנחנו רוצים להוסיף מעבר ‪ ε‬של ‪ ,δ(qi , ε) = qj‬ונניח כי ‪ .δ(q, a) = qi‬אזי‪ ,‬נוסיף את המעבר הל"ד‬
‫} ‪.13 δ(q, a) = {qi , qj‬‬
‫אם המצב ההתחלתי הוא ‪ ,qi‬אז למעשה מעבר ‪ ε‬הוא כמו מצב התחלתי נוסף‪.‬‬
‫נשים לב לתכונה חשובה בה נשתמש‪ ,‬כי אם שפה ‪ L‬רגולרית באמצעות אס"ד החוזר למצב ההתחלתי שלו‪ ,‬אזי ‪ L‬רגולרית גם‬
‫‪14‬‬
‫באמצעות אס"ד שלא חוזר למצב ההתחלתי שלו‪ .‬כיצד ניתן להוכיח זאת?‬
‫‪4.1.2‬‬
‫סגירויות‬
‫משפט ‪ 4.4‬תהיינה ‪ L1‬ו־ ‪ L2‬שפות רגולריות‪ .‬אזי‪ L1 ∪ L2 ,‬היא שפה רגולרית‪.‬‬
‫הוכחה‪ .‬יהיו האוטומטים ) ‪ M2 = (Σ2 , Q2 , q02 , F2 , δ2 ) ,M1 = (Σ1 , Q1 , q01 , F1 , δ1‬אוטומטים סופיים דטרמיניסטים‬
‫כך ש־) ‪ .L2 = L(M2 ) ,L1 = L(M1‬נניח בה"כ כי ∅ = ‪.15 Q1 ∩ Q2‬‬
‫נמצא אסל"ד ‪ M‬כך ש־ ‪ ,L(M ) = L1 ∪ L2‬ומן השקילות שהוכחנו‪ ,‬יהיה קיים אס"ד ˆ‬
‫‪ M‬המקבל את ‪.L1 ∪ L2‬‬
‫מה יהיה רעיון הבניה? נבחר באופן ל"ד האם להריץ את ‪ M1‬או את ‪ ,M2‬באמצעות שימוש במעברי ‪.16 ε‬‬
‫באופן פורמלי‪ ,‬נגדיר )‪ M = (Σ, Q, q0 , F, δ‬כך‪,‬‬
‫‪.Σ = Σ1 ∪ Σ2‬‬
‫} ‪.Q = Q1 ∪ Q2 ∪ {q0‬‬
‫‪.F = F1 ∪ F2‬‬
‫לכל ‪ ,a ∈ Σ‬נגדיר את פונקציית המעברים‬
‫(‬
‫‪δ1 (q, a) q ∈ Q1‬‬
‫= )‪δ(q, a‬‬
‫‪δ2 (q, a) q ∈ Q2‬‬
‫ו־} ‪.δ(q0 , ε) = {q01 , q02‬‬
‫הוכחת הנכונות מושארת כתרגיל‪.‬‬
‫‪13‬בהתאם לכך ניתן להוסיף עוד מצבי מעבר ל"ד‪.‬‬
‫‪14‬ניתן לשכפל את המצב ההתחלתי‪ ,‬כאשר כל מצב שניגש אל המצב ההתחלתי ייגש אל המצב החדש‪ ,‬והקשתות היוצאות מהמצב ההתחלתי‬
‫הן בדיוק הקשתות היוצאות מן המצב ההתחלתי‪.‬‬
‫‪15‬חשבו מדוע אפשר להניח זאת‪.‬‬
‫‪16‬שימו לב‪ ,‬ניתן גם להימנע משימוש במעברי ‪ ,ε‬חישבו כיצד ניתן לעשות זאת‪.‬‬
‫‪10‬‬
‫` ‪ 4.5‬תהי ‪ L‬שפה רגולרית‪ ,‬אזי ‪ L‬רגולרית‪.‬‬
‫ˆ‪e‬‬
‫`‪o‬‬
‫‪uˆı‬‬
‫‪ .a‬יהי )‪ M = (Σ, Q, q0 , F, δ‬אס"ד כך ש־) ‪.L = L(M‬‬
‫˚‪e‬‬
‫¨‪a‬‬
‫‪a‬‬
‫¨‪¨¸c‬‬
‫נגדיר )‪ .17 M = (Σ, Q, q0 , F , δ‬הוכחת הנכונות מושארת כתרגיל‪.‬‬
‫` ‪ 4.6‬יהיו ‪ L1 , L2‬שפות רגולריות‪ .‬אזי‪ L1 ∩ L2 ,‬רגולרית‪.‬‬
‫ˆ‪e‬‬
‫`‪o‬‬
‫‪uˆı‬‬
‫‪ .a‬לפי כללי דה־מורגן‪ ,L1 ∩ L2 = L1 ∪ L2 ,‬ולכן לפי המשפטים הקודמים‪ ,‬נקבל את הדרוש‪.‬‬
‫˚‪e‬‬
‫¨‪a‬‬
‫‪a‬‬
‫¨‪¨¸c‬‬
‫` ‪ 4.7‬יהיו ‪ L1 , L2‬שפות רגולריות‪ .‬אזי‪ L1 · L2 ,‬רגולרית‪.‬‬
‫ˆ‪e‬‬
‫`‪o‬‬
‫‪uˆı‬‬
‫‪ .a‬יהיו ) ‪ M2 = (Σ2 , Q2 , q02 , F2 , δ2 ) ,M1 = (Σ1 , Q1 , q01 , F1 , δ1‬אס"ד כך ש־) ‪.L2 = L(M2 ) ,L1 = L(M1‬‬
‫˚‪e‬‬
‫¨‪a‬‬
‫‪a‬‬
‫¨‪¨¸c‬‬
‫נבנה אסל"ד )‪ M = (Σ, Q, q0 , F, δ‬כך ש־ ‪.L(M ) = L1 · L2‬‬
‫רעיון הבנייה יהיה לבנות אוטומט שבתחילה מריץ את ‪ ,M1‬ולאחר מכן עובר ממצבי הקבלה של ‪ M1‬אל המצב‬
‫ההתחלתי של ‪ ,M2‬ע"י שימוש במעבר ‪.ε‬‬
‫באופן פורמלי‪,‬‬
‫‪.Σ = Σ1 ∪ Σ2‬‬
‫‪18‬‬
‫‪. Q = Q1 ∪ Q2‬‬
‫‪.q0 = q01‬‬
‫‪.F = F2‬‬
‫נגדיר כעת את פונקציית המעברים‪,‬‬
‫‪q ∈ Q1‬‬
‫‪q ∈ Q2‬‬
‫(‬
‫)‪δ1 (q, a‬‬
‫= )‪δ(q, a‬‬
‫)‪δ2 (q, a‬‬
‫ולכל מצב מקבל ‪ q ∈ F1‬של ‪ ,M1‬נגדיר ‪.δ(q, ε) = q02‬‬
‫הוכחת הנכונות מושארת כתרגיל‪.‬‬
‫` ‪ 4.8‬תהי ‪ L‬שפה רגולרית‪ .‬אזי ∗‪ L‬רגולרית‪.‬‬
‫ˆ‪e‬‬
‫`‪o‬‬
‫‪uˆı‬‬
‫‪ .a‬הוכחה‪ .‬יהי )‪ M = (Σ, Q, q0 , F, δ‬כך ש־) ‪ ,L = L(M‬וכך ש־ ‪ M‬אינו חוזר למצב ההתחלתי ‪.19‬‬
‫˚‪e‬‬
‫¨‪a‬‬
‫‪a‬‬
‫¨‪¨¸c‬‬
‫נבנה ) ∗ ‪ M ∗ = (Σ, Q, q0 , F ∗ , δ‬אסל"ד עם מעברי ‪ ε‬כך ש־ ∗‪.L(M ∗ ) = L‬‬
‫נגדיר } ‪ ,δ ∗ (q, a) = δ(q, a) ,F ∗ = F ∪ {q0‬ולכל מצב מקבל ‪.δ ∗ (q, ε) = q0 ,q ∈ F‬‬
‫‪17‬כלומר‪ ,‬הפכנו כל מצב מקבל למצב לא מקבל‪ ,‬וכל מצב לא מקבל למצב מקבל‪.‬‬
‫‪18‬בה"כ נניח כי ∅ = ‪Q1 ∩ Q2‬‬
‫‪19‬זה אפשרי לפי השקילות שהוכחנו לעיל‪.‬‬
‫‪11‬‬
‫רעיון הבנייה הוא שהאוטומט יורץ‪ ,‬ואם הגיע מתישהו לשלב מאשר‪ ,‬האוטומט מחליט באופן ל"ד האם להתחיל‬
‫מההתחלה על הסיפא של המילה ‪.20‬‬
‫הוכחת הנכונות מושארת כתרגיל‪.‬‬
‫חלק ‪IV‬‬
‫ביטויים רגולריים‬
‫ביטויים רגולרים ־ הגדרות וכוח הביטוי‬
‫‪5‬‬
‫עד כה‪ ,‬ע"מ להראות כי שפה היא רגולרית‪ ,‬נדרשנו למצוא אוטומט המקבל אותה‪ .‬נציג כעת צורה מעט שונה‬
‫לאפיין שפות רגולריות‪.‬‬
‫‪5.1‬‬
‫הגדרת הביטויים הרגולרים‬
‫הגדרה ‪ 5.1‬הגדרה‪) .‬ביטוי רגולרי( נגדיר באופן אינדוקטיבי ביטוי רגולרי‪,‬‬
‫‪ .1‬לכל ‪ {a} ,a ∈ Σ‬הוא ביטוי רגולרי‪.‬‬
‫‪ .2‬אם ‪ α, β‬הם ביטויים רגולרים‪ ,‬אזי ‪21 α ∪ β‬הוא ביטוי רגולרי‪ α · β ,‬הוא ביטוי רגולרי‪.‬‬
‫‪ .3‬אם ‪ α‬הוא ביטוי רגולרי‪ ,‬אזי ∗‪ α‬הוא ביטוי רגולרי‪.‬‬
‫דוגמא ‪ 5.2‬דוגמא‪ .‬נביט בביטוי הרגולרי ∗}‪ .{a}∗ · {b‬כיצד נוכל לתרגם זאת אל שפה? עבור ביטוי רגולרי ‪,α‬‬
‫השפה ש־‪ α‬מייצג מוגדרת באופן האינדוקטיבי‪:‬‬
‫‪ .1‬אם }‪ ,α = {a‬אזי השפה המתאימה תהיה השפה }‪.Lα = {a‬‬
‫‪ .2‬אם ‪ ,α = β · γ‬אזי ‪ .Lα = Lβ · Lγ‬אם ‪ ,α = β ∪ γ‬אזי ‪.Lα = Lβ ∪ Lγ‬‬
‫‪ .3‬אם ∗ ‪ ,α = β‬אזי ∗) ‪.Lα = (Lβ‬‬
‫מכאן‪ ,‬השפה המיוצגת ע"י הביטוי ∗}‪ {a}∗ · {b‬היא‬
‫}‪L = {ai bj | i, j ≥ 0‬‬
‫כל ביטוי רגולרי מייצג שפה כלשהי באופן אותו הגדרנו לעיל‪ .‬לעומת זאת‪ ,‬לא לכל שפה קיים ביטוי רגולרי המייצג אותה‪.‬‬
‫דוגמאות נוספות לביטויים רגולרים‪ ,‬עבור שפת כל המילים מאורך זוגי מעל }‪ ,Σ = {a‬הוא ∗)‪ ,(a · a‬ומאורך אי־זוגי ‪.(a · a)∗ · a‬‬
‫‪20‬הרי‪ ,‬מילה ∗‪ w ∈ L‬בנויה משרשור של ‪ n ∈ N‬מילים ‪ .w1 , . . . , wn ∈ L‬האוטומט למעשה מנחש באופן ל"ד את החלוקה הנ"ל‪.‬‬
‫‪21‬סימון נוסף‪ ,‬שהוגדר כך בהרצאותיו של פרופ' פלד ב"אוטומטים ושפות פורמליות"‪ ,‬הוא ע"י ‪ +‬ולא ∪‪.‬‬
‫‪12‬‬
‫נוכיח כעת‪ ,‬כי כוח הביטוי של הביטויים הרגולרים הוא בדיוק קבוצת השפות הרגולריות‪ ,‬בעזרת המשפט הבא‪.‬‬
‫‪5.2‬‬
‫כוח הביטוי של הביטויים הרגולרים‬
‫משפט ‪ 5.3‬תהי ‪ L‬שפה‪ .‬אזי‪ L ,‬רגולרית ⇒⇐ קיים ביטוי רגולרים ‪ α‬כך ש־‪ α‬מייצג את ‪.L‬‬
‫הוכחה‪ (⇒) .‬נניח כי ‪ α‬הוא ביטוי רגולרי המייצג את ‪ .L‬נוכיח כי ‪ L‬רגולרית‪ ,‬באינדוקציה על הבנייה‪.‬‬
‫בסיס‪ .‬לכל ‪ ,a ∈ Σ‬השפה }‪ {a‬היא רגולרית ‪.22‬‬
‫האינדוקציה‪.‬‬
‫‪ .1‬נניח ש־‪ .α = β · γ‬לפי הנחת האינדוקציה‪ ,‬השפות המיוצגות ע"י ‪ β, γ‬רגולריות‪ ,‬ושרשור שפות רגולריות‬
‫הינו שפה רגולרית‪.‬‬
‫‪ .2‬נניח ש־‪ .α = β ∪ γ‬לפי הנחת האינדוקציה‪ ,‬השפות המיוצגות ע"י ‪ β, γ‬רגולריות‪ ,‬ואיחוד שפות רגולריות‬
‫הינו שפה רגולרית‪.‬‬
‫‪ .3‬נניח ש־ ∗ ‪ .α = β‬לפי הנחת האינדוקציה‪ ,‬השפה המיוצגת ע"י ‪ β‬רגולרית‪ ,‬והוכחנו סגירות של השפות‬
‫הרגולריות עבור האופרטור ∗‪.‬‬
‫סה"כ‪ ,‬הוכחנו באינדוקציה על הבנייה כי הביטוי הרגולרי ‪ α‬מייצג שפה רגולרית‪.‬‬
‫‬
‫)⇐( תהי ‪ L‬שפה רגולרית‪ .‬נמצא ביטוי רגולרי ‪ α‬המייצג את ‪.L‬‬
‫‪ L‬רגולרית‪ ,‬ולכן קיים ‪ M‬אס"ד )‪ (Σ, Q = {q1 , . . . qm }, q1 , F, δ‬כך ש־‪.L(M ) = L‬‬
‫נגדיר‬
‫‪k‬‬
‫‪Ri,j‬‬
‫}‪= {w | δ ∗ (qi , w) = qj ∧ M doesn’t pass on a state ql , l > k while passing over w‬‬
‫ובאופן פורמלי‪,‬‬
‫‪k‬‬
‫‪Ri,j‬‬
‫}‪= {w = a1 . . . ar | δ(qi , a1 ) = qi1 , . . . δ(qir−1 , ar ) = qj : i1 , . . . , ir−1 ≤ k‬‬
‫שימו לב ־ לא התחייבנו ש־ ‪ qi , qj‬מקיימים את המגבלה‪ .‬המצבים החסומים הם המצבים שבינהם‪.‬‬
‫‪k‬‬
‫‪ Ri,j‬קיים ביטוי רגולרי‪.‬‬
‫טענה‪ .‬לכל ‪ i, j, k‬לשפה‬
‫הוכחה‪ .‬באינדוקציה על ‪,k‬‬
‫‪0‬‬
‫‪ Ri,j‬תהיה שפה של אותיות בודדות בלבד‪ ,‬כי קוראים מילה במצב ‪ qi‬ומסיימים ב־ ‪ qj‬ללא מצבי ביינים‪.‬‬
‫בסיס‪.‬‬
‫מכאן‪ ,‬קל לבנות ביטוי רגולרי עבורה‪.‬‬
‫‪22‬שפה המכילה מילה אחת היא בהכרח רגולרית‪.‬‬
‫‪13‬‬
‫‪k+1‬‬
‫‪k‬‬
‫‪ .Ri,j‬מתקיים‬
‫‪ Ri,j‬קיים ביטוי רגולרי‪ ,‬ונוכיח זאת עבור‬
‫האינדוקציה‪ .‬נניח כי ל־‬
‫‬
‫‬
‫∗‬
‫‪k+1‬‬
‫‪k‬‬
‫‪k‬‬
‫‪k‬‬
‫‪k‬‬
‫‪Ri,j‬‬
‫‪= Ri,j‬‬
‫‪∪ Ri,k+1‬‬
‫‪· Rk+1,k+1‬‬
‫‪· Rk+1‬‬
‫‪,j‬‬
‫וזאת כי‪ ,‬עבור מילה מסוימת הרצה על האוטומט כך שלא עוברת במצב יותר גדול מ־‪ ,k + 1‬או שהיא תעבור‬
‫במצבים בלי לעבור את ‪ ,k‬או שתעבור בתחילה עד המצב ‪,k + 1‬‬
‫משם תחזור מספר פעמים כלשהו אל ‪ k + 1‬אך ורק בשימושים במצבים שלא גדולים מ־‪ ,k‬ואז תלך‬
‫אל ‪ j‬מ־‪ k + 1‬אך ורק ע"י מצבים שלא גדולים מ־‪.k‬‬
‫לפי הנחת האינדוקציה‪ ,‬לכל השפות בשיוויון יש ביטוי רגולרי‪ .‬הביטוי הרגולרי של‬
‫הנ"ל‪.‬‬
‫‪k+1‬‬
‫‪Ri,j‬‬
‫יבנה בדיוק את השיוויון‬
‫לכן‪ ,‬הוכחנו את הטענה‪.‬‬
‫‬
‫כעת‪ ,‬מתקיים כי‬
‫‪m‬‬
‫‪R1,j‬‬
‫[‬
‫= ) ‪L(M‬‬
‫‪qj ∈F‬‬
‫‪m‬‬
‫‪ R1,j‬קיים ביטוי רגולרי‪ .‬לכן‪ ,‬הביטוי הרגולרי עבור ‪ L‬יהיה איחוד על הביטויים הללו‪.‬‬
‫מדוע? ‪ .23‬הוכחנו כי לכל‬
‫ולכן‪ ,‬ל־) ‪ L(M‬יש ביטוי רגולרי‪.‬‬
‫חלק ‪V‬‬
‫משפט נרוד‬
‫נציג אפיון נוסף לרגולריות של שפה‪ ,‬באמצעות אלמנטים מתורת הקבוצות‪.‬‬
‫קבוצות פורשות‬
‫‪6‬‬
‫‪6.1‬‬
‫הגדרת יחס השקילות על ∗‪Σ‬‬
‫הגדרה ‪ 6.1‬תהי ‪ L‬שפה‪ .‬נאמר ששתי מילים ∗‪ x, y ∈ Σ‬שקולות ב־‪ ,L‬ונסמן זאת ע"י ‪ ,x ≡L y‬אם לכל ∗‪ ,w ∈ Σ‬מתקיים‬
‫‪.xw ∈ L ⇐⇒ yw ∈ L‬‬
‫נשים לב‪ ,‬כי היחס שהגדרנו לעיל הינו יחס שקילות ב־ ∗‪.Σ‬‬
‫דוגמא ‪ 6.2‬עבור השפה })‪ ,Σ = {a} ,L3 = {w | |w| ≡ 0(mod3‬אזי ‪.a ≡L3 a4‬‬
‫‪23‬מילה מתקבלת כמסלול באוטומט מהמצב ההתחלתי אל מצב מקבל‪ ,‬שם ניתן להשתמש בכל מצב בלי הגבלה‪.‬‬
‫‪14‬‬
‫הגדרה ‪ 6.3‬תהי ∗‪ .S ⊆ Σ‬נאמר ש־‪ S‬היא קבוצה פורשת ‪ 24‬אם לכל מילה ∗‪ x ∈ Σ‬קיים ‪ y ∈ S‬כך ש־‪.x ≡L y‬‬
‫למעשה‪ ,‬קבוצה פורשת היא קבוצת נציגים מכל מחלקת שקילות ביחס השקילות‪ ,‬או בשם אחר‪ ,‬קבוצת המנה‪.‬‬
‫דוגמא ‪ 6.4‬עבור ‪ L3‬מהדוגמא הקודמת‪ S = {a, aa, aaa} ,‬הינה קבוצה פורשת‪ .‬שימו לב כי לא דרשנו מינימליות‬
‫עבור ‪ .S‬למשל‪ S = {a, aa, aaa, a4 } ,‬גם היא קבוצה פורשת‪.‬‬
‫‪24‬באנגלית ‪.Spanning Set‬‬
‫‪15‬‬
‫‪6.2‬‬
‫משפט ‪Myhill Nerode‬‬
‫משפט ‪(Myhill Nerode) 6.5‬‬
‫השפה ‪ L‬רגולרית ⇒⇐ קיימת עבורה קבוצה פורשת סופית‪.‬‬
‫הוכחה‪ .‬הוכחה‪ (⇐) .‬נניח כי ‪ L‬רגולרית‪ .‬ולכן‪ ,‬קיים אס"ד )‪ M = (Σ, Q = {q0 , . . . , qm }, q0 , F, δ‬כך‬
‫ש־) ‪.L = L(M‬‬
‫בה"כ נניח כי לכל ‪ ,i‬קיימת מילה ‪ xi‬כך ש־ ‪ .25 δ ∗ (q0 , xi ) = qi‬נגדיר } ‪.S = {x0 , . . . , xm‬‬
‫טענה‪ S .‬קבוצה פורשת‪.‬‬
‫הוכחה‪ .‬תהי ∗‪ .y ∈ Σ‬נוכיח שקיימת ‪ xi ∈ S‬כך ש־‪.xi ≡L y‬‬
‫נניח ש־ ‪ .δ ∗ (q0 , y) = qj‬נוכיח כי ‪ .xj ≡L y‬כלומר‪ ,‬נוכיח כי לכל ∗‪.xj w ∈ L ⇐⇒ yw ∈ L ,w ∈ Σ‬‬
‫‪xw ∈ L ⇐⇒ δ ∗ (q0 , xj w) ∈ F ⇐⇒ δ ∗ (qj , w) ∈ F ⇐⇒ δ ∗ (q0 , yw) ∈ F ⇐⇒ yw ∈ L‬‬
‫ולכן הוכחנו כי ‪ S‬פורשת‪ ,‬והרי סופית‪.‬‬
‫‬
‫)⇒( תהי ‪ S‬קבוצה פורשת סופית עבור השפה ‪ .L‬בה"כ נניח כי ‪ S‬היא פורשת מינימלית ‪.26‬‬
‫נבנה אס"ד ‪ M‬כך ש־) ‪ .L = L(M‬נסמן } ‪ S = {x0 , . . . , xm‬כך ש־‪.27 x0 ≡L ε‬‬
‫נגדיר } ‪ ,Q = {q0 , . . . , qm‬כאשר כל מצב ‪ qi‬מסמל את המילה ‪.xi ∈ S‬‬
‫נגדיר }‪ ,F = {qi | xi ∈ L‬ונגדיר את פונקציית המעברים‬
‫‪when xi · a ≡L xj‬‬
‫‪n‬‬
‫‪δ(qi , a) = qj‬‬
‫כלומר‪ ,‬ההתקדמות ממצב ‪ qi‬בראיית האות ‪ ,a‬תהיה למצב אשר מילתו שקולה ‪.28 xi · a‬‬
‫הרחבת פונקציית המעברים ∗ ‪ δ‬תהיה‬
‫‪29‬‬
‫‪xi w ≡L xj‬‬
‫‪n‬‬
‫‪δ ∗ (qi , w) = qj‬‬
‫נוכיח כעת כי ) ‪.L = L(M‬‬
‫) ‪y ∈ L ⇐⇒ εy ∈ L ⇐⇒ x0 y ∈ L ⇐⇒ xr ∈ L ⇐⇒ qr ∈ F ⇐⇒ δ ∗ (q0 , y) ∈ F ⇐⇒ y ∈ L(M‬‬
‫‪25‬זה אפשרי כי במידה וקיים מצב שאין עבורו מילה שכזאת‪ ,‬ניתן למחוק את המצב מן האוטומט‪ ,‬והאוטומט יזהה את אותה השפה‪.‬‬
‫‪26‬כלומר‪ ,‬לא קיימים ‪ xi , xj ∈ S‬כך ש־ ‪ ,xi ≡L xj‬או בניסוח אחר‪ ,‬לכל ∗‪ y ≡L xk ,y ∈ Σ‬עבור ‪ xk ∈ S‬אחד ויחיד‪.‬‬
‫‪27‬זה אפשרי כי הרי ‪ S‬פורשת‪.‬‬
‫‪28‬ובהכרח קיים מצב כזה‪ ,‬כי ‪ S‬פורשת‪ ,‬והאוטומט שלנו אכן דטרמיניסטי‪ ,‬לפי ההנחה כי ‪ S‬מינימלית‪.‬‬
‫‪29‬ניתן להוכיח זאת באינדוקציה‪.‬‬
‫‪16‬‬
‫חלק ‪VI‬‬
‫דקדוקים‬
‫דקדוקים והגדרתם‬
‫‪7‬‬
‫הגדרה ‪ 7.1‬דקדוק ‪ Γ 30‬מורכב מהרביעיה )‪(Σ, V, S, Π‬כאשר‬
‫)א(‪Σ‬־ הוא הא"ב‪ ,‬לאיברי ‪ Σ‬נקרא טרמינלים‪.‬‬
‫)ב( ‪V‬־ קבוצה סופית של משתנים ‪.Xi , Yi , Zi‬‬
‫)ג( ‪ S ∈ V‬משתנה התחלתי‪.‬‬
‫)ד( ‪Π‬־ קבוצה סופית של‬
‫הפקות ‪hi }li=1 31‬‬
‫∗‬
‫→ ‪ {gi‬כאשר )‪.gi , hi ∈ (V ∪ Σ‬‬
‫דוגמא ‪ 7.2‬נגדיר את הדקדוק הבא ע"י הצגת פרטי הרביעייה‬
‫}‪Σ = {a, b‬‬
‫}‪V = {S, X‬‬
‫}‪Π = {S → aXb, X → aXb, X → ε‬‬
‫איך הדקדוק יוצר מילים? ‪ .S → aXb → aaXbb → aabb‬למעשה‪ ,‬בהמשך נגדיר את שפת הדקדוק כשפת‬
‫המילים ב־ ∗‪ Σ‬שניתן להגיע אליהן מ־‪ S‬ע"י ההפקות הנתונות‪ .‬במקרה זה‪ ,‬השפה שתתקבל תהיה }‪.{ai bi | i ≥ 1‬‬
‫באופן אינטואיטיבי‪ ,‬אנו מתחילים במעין משתנה התחלה‪ ,‬ממנו מתקדמים ע"י כללי גזירה‪ ,‬ומילה מעל ∗‪ Σ‬שייכת‬
‫לדקדוק אם יצרנו אותה בעזרת ההפקות‪.‬‬
‫הגדרה ‪ 7.3‬עבור ∗) ‪ ,u, v ∈ (Σ ∪ V‬נאמר ש־‪ u ⇒ v‬אם קיימת הפקה ‪ gi → hi ∈ Π‬כך ש־‪ u = r · gi · s‬ו־‪,v = r · hi · s‬‬
‫‪Π‬‬
‫∗) ‪.r, s ∈ (Σ ∪ V‬‬
‫כלומר‪ ,‬ניתן להגיע מתבנית אחת אל תבנית אחרת אם ניתן לגזור מתת־מילה שלה אל מילה אחרת ע"י הפקה‪.‬‬
‫∗‬
‫הגדרה ‪ 7.4‬עבור ∗) ‪ ,u, v ∈ (Σ ∪ V‬נאמר ש־‪ u ⇒ v‬אם קיימות ∗) ‪ u1 , . . . , un ∈ (Σ ∪ V‬כך ש־‪.u ⇒ u1 ⇒ . . . ⇒ un ⇒ v‬‬
‫‪Π‬‬
‫‪7.1‬‬
‫‪Π‬‬
‫שפת הדקדוק‬
‫הגדרה ‪ 7.5‬יהי )‪ Γ = (Σ, V, S, Π‬דקדוק‪ .‬השפה המתקבלת ע"י ‪ Γ‬היא‬
‫‪o‬‬
‫‪n‬‬
‫∗‬
‫‪w ∈ Σ∗ | S ⇒ w‬‬
‫‪Π‬‬
‫‪30‬ובאנגלית ‪.Grammar‬‬
‫‪31‬או "כללי גזירה"‪ .‬באנגלית ‪.Productions‬‬
‫‪17‬‬
‫= )‪L(Γ‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪8‬‬
‫‪8.1‬‬
‫דקדוקים רגולריים‬
‫הגדרת דקדוק רגולרי‬
‫הגדרה ‪ 8.1‬דקדוק ‪ Γ‬קרוי דקדוק רגולרי אם כל ההפקות ב־‪ Γ‬הן מהצורות‬
‫‪U, W ∈ V, a ∈ Σ‬‬
‫‪U ∈ V, a ∈ Σ‬‬
‫‪U → aW‬‬
‫‪U →a‬‬
‫(‬
‫בדקדוק רגולרי‪ ,‬בצד שמאל של ההפקה מותר אך ורק משתנה ובצד ימין תמיד יהיה טרמינל בודד או טרמינל‬
‫ולאחריו משתנה‪.‬‬
‫דוגמא ‪ 8.2‬עבור דקדוק עם } ‪ Σ = {a, b} ,V = {S, X, Y‬וההפקות‬
‫‪S → aX, S → aY‬‬
‫‪X → aY, X → aX, Y → bY, Y → b‬‬
‫∗‬
‫∗‬
‫זהו דקדוק רגולרי‪ .‬שפת דקדוק היא }‪ L(Γ) = {ai bj | i > 0, j > 0‬וזאת כי ‪.S ⇒ aX ⇒ ai X ⇒ ai bY ⇒ ai bj‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫נציג כעת את הקשר בין דקדוקים רגולרים לשפות רגולריות‪ ,‬במשפט הבא‪.‬‬
‫‪8.2‬‬
‫שקילות לשפות הרגולריות‬
‫משפט ‪ 8.3‬שפה ‪ L‬היא רגולרית ⇒⇐ קיים דקדוק רגולרי ‪ Γ‬כך ש־)‪.L = L(Γ‬‬
‫הוכחה‪ (⇒) .‬יהי )‪.V = {V1 (= S), . . . , Vm } ,Γ = (Σ, V, S, Π‬‬
‫נוכיח כי קיים אסל"ד )‪ M = (Σ, Q, q1 , F, δ‬המזהה את )‪ ,L(Γ‬כלומר‪ ,L(M ) = L(Γ) ,‬ופרטי החמישייה הם‬
‫} ‪Q = {q1 , . . . , qm } ∪ {qF‬‬
‫} ‪F = {qF‬‬
‫כעת‪ ,‬נרצה לבנות את האוטומט ‪ M‬כך שידמה את יצירת המילה באמצעות הדקדוק ‪ .Γ‬נגדיר ‪ δ1 , δ2‬חלק‬
‫מפונקצית המעברים שלנו באופן הבא‪:‬‬
‫}‪δ1 (qi , a) = {qj | Vi → aVj ∈ Π‬‬
‫‪18‬‬
‫כלומר‪ ,‬נמשיך ממצב ‪ qi‬עם האות ‪ a‬אל כל המצבים המתאימים למשתנים מהם ניתן להגיע ע"י הפקה‪ .‬אך עדיין‬
‫לא התייחסנו אל הפקה בה משתנה הולך לאות אחת בלבד‪ ,‬ולשם כך נגדיר את ‪ δ2‬באופן הבא‪:‬‬
‫(‬
‫‪qF Vi → a ∈ Π‬‬
‫= )‪δ2 (qi , a‬‬
‫∅‬
‫‪otherwise‬‬
‫ולבסוף נגדיר )‪.δ(qi , a) = δ1 (qi , a) ∪ δ2 (qi , a‬‬
‫∗‬
‫כעת נוכיח כי אכן )‪ .L(M ) = L(Γ‬תהי מילה )‪ .w = u1 . . . ul ∈ L(Γ‬לפי הגדרת שפת הדקדוק‪,V1 ⇒ w ,‬‬
‫‪Π‬‬
‫כלומר‪,‬‬
‫‪V1 ⇒ u1 Vi1 ⇒ u1 u2 Vi2 ⇒ . . . ⇒ u1 . . . ul−1 Vl−1 ⇒ w‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫ולכן קיימות ב־‪ Π‬ההפקות‬
‫‪V1 → u1 Vi1 , Vi1 → u2 Vi2 , . . . , Vl−1 → ul‬‬
‫ולכן קיימים ב־ ‪ M‬המעברים‬
‫) ‪qi1 ∈ δ(q1 , u1 ), qi2 ∈ δ(qi1 , u2 ), . . . qF ∈ δ(ql−1 , ul‬‬
‫וזאת כי לפי הגדרת ‪ ,δ1‬אם קיימת הפקה היא תתבטא במעבר אפשרי בין המצבים‪ ,‬וקיום ההפקות מגיע מן ההנחה‬
‫כי )‪.w ∈ L(Γ‬‬
‫סה"כ נקבל כי ) ‪ ,qF ∈ δ ∗ (q1 , u1 . . . ul‬ולכן נקבל כי ) ‪ .w ∈ L(M‬בכיוון השני‪ ,‬אם מילה שייכת ל־) ‪ ,L(M‬אזי‬
‫קיים מסלול המקבל את המילה באסל"ד‪ ,‬ולפי ההגדרה‪ ,‬כל מעבר מסמל הפקה ב־‪ ,Π‬ולכן באופן דומה נקבל סדרת‬
‫הפקות היוצרת את ‪ ,w‬ולכן )‪.w ∈ L(Γ‬‬
‫‬
‫)⇐( נניח כי ‪ L‬רגולרית‪ .‬יהי )‪ M = (Σ, Q = {q1 , . . . qm }, q1 , F, δ‬אס"ד כך ש־) ‪ .L = L(M‬נבנה דקדוק‬
‫רגולרי )‪ Γ = (Σ, V, S, Π‬כך ש־) ‪.L(Γ) = L(M‬‬
‫נגדיר ) ‪ ,V = (V1 (= S), . . . , Vm‬ונגדיר את ההפקות‬
‫‪Vi → aVj ∈ Π if δ(qi , a) = qj‬‬
‫‪Vi → a ∈ Π if δ(qi , a) ∈ F‬‬
‫∗‬
‫נוכיח כעת כי )‪ .L(M ) = L(Γ‬תהי )‪ V1 ⇒ w .w = u1 . . . ul ∈ L(Γ‬ולכן‬
‫‪Π‬‬
‫‪V1 ⇒ u1 Vi1 ⇒ u1 u2 Vi2 ⇒ . . . ⇒ u1 . . . ul−1 Vl−1 ⇒ w‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫‪Π‬‬
‫ולכן קיימות ב־‪ Π‬ההפקות‬
‫‪V1 → u1 Vi1 , Vi1 → u2 Vi2 , . . . , Vl−1 → ul‬‬
‫ולכן לפי הגדרת הדקדוק‪,‬‬
‫‪δ(q1 , u1 ) = qi1 , δ(qi1 , u2 ) = qi2 , . . . δ(qil−1 , ul ) ∈ F‬‬
‫ולכן סה"כ ‪ ,δ ∗ (q1 , u1 . . . ul ) ∈ F‬ולכן ) ‪ .w ∈ L(M‬הכיוון השני דומה‪.‬‬
‫‪19‬‬
‫שפות חסרות הקשר‬
‫‪9‬‬
‫את השפות הרגולריות הגדרנו בעזרת מושגים המבוססים על מודל חישובי המזהה אותן‪ ,‬ולבסוף למדנו דקדוקים‪.‬‬
‫כעת‪ ,‬נעבוד בכיוון ההפוך ־ נגדיר את המושג "שפה חסרת הקשר" על בסיס דקדוק חסר הקשר ולבסוף נציג את‬
‫המודל החישובי המקבל אותן ‪.32‬‬
‫‪9.1‬‬
‫דקדוק חסר הקשר‬
‫הגדרה ‪ 9.1‬דקדוק ‪ Γ‬קרוי דקדוק חסר הקשר ‪ 33‬אם כל ההפקות ב־‪ Γ‬הן מהצורה‬
‫∗)‪α ∈ (V ∪ E‬‬
‫‬
‫‪V →α‬‬
‫נציין כי דקדוק ח"ה לא בודק מי נמצא מימינו או משמאלו של ‪ ,V‬כלומר‪ ,‬מתעלם מההקשר של ‪.V‬‬
‫הגדרה ‪ 9.2‬שפה ‪ L‬קרויה שפה חסרת הקשר אם קיים דקדוק ח"ה ‪ Γ‬כך ש־)‪.L = L(Γ‬‬
‫‪9.2‬‬
‫רגולרית מול חסרת הקשר‬
‫משפט ‪ 9.3‬כל שפה רגולרית היא ח"ה‪.‬‬
‫זה מתקיים באופן טריוויאלי שהרי כל דקדוק רגולרי הוא ח"ה ולכן לפי הגדרה כל שפה רגולרית היא ח"ה‪.‬‬
‫משפט ‪ 9.4‬קיימת שפה ח"ה שאיננה רגולרית‪.‬‬
‫הוכחה‪ .‬ידוע כי }‪ L = {ai bi | i > 0‬אינה רגולרית‪ .‬נוכיח כי ‪ L‬ח"ה‪ .‬הדקדוק חסר ההקשר היוצר אותה הוא‬
‫‪S → aSb‬‬
‫‪S → ab‬‬
‫דוגמא ‪ 9.5‬נציג דוגמא לדקדוק ח"ה‪ ,‬עם ‪ X, Y, S‬כמשתנים‪,‬‬
‫‪a, b ∈ Σ‬‬
‫‪Y → bY‬‬
‫‪Y →b‬‬
‫‪S → aXbY‬‬
‫‪X → aX‬‬
‫‪X→a‬‬
‫זה דקדוק ח"ה‪ .‬נרצה להראות איך גוזרים באמצעות דקדוק ח"ה זה את ‪.a2 b3‬‬
‫‪S ⇒ aXbY ⇒ aabY ⇒ aabbY ⇒ a2 b3‬‬
‫‪S ⇒ aXbY ⇒ aXbbY ⇒ aXbbb ⇒ a2 b3‬‬
‫‪S ⇒ aXbY ⇒ aXbbY ⇒ aabbY ⇒ a2 b3‬‬
‫‪32‬שייקרא אוטומט מחסנית‪.‬‬
‫‪33‬ובקיצור‪ ,‬ח"ה‬
‫‪20‬‬
‫כעת‪ ,‬אם נוסיף לדקדוק את ההפקה ‪ S → aabbb‬תתקבל הגזירה‬
‫‪S ⇒ aabbb‬‬
‫נבנה כעת עץ גזירה ל־‪:S‬‬
‫‪S‬‬
‫‪b‬‬
‫‪Y‬‬
‫‪Y‬‬
‫‪a‬‬
‫‪X‬‬
‫‪a‬‬
‫‪b‬‬
‫‪b‬‬
‫‪ 2‬שורש העץ תמיד יהיה המשתנה ההתחלתי‪.‬‬
‫‪ 2‬הבנים של כל קודקוד שהוא משתנה תמיד יהיו הצד הימני של הפקה‪.‬‬
‫‪ 2‬העלים יהיו האותיות‪.‬‬
‫‪ 2‬את העלים קוראים משמאל לימין ומקבלים את הגזירה‪.‬‬
‫עץ גזירה זה זהה ל־‪ 3‬הגזירות הראשונות‪ ,‬אך עבור הגזירה האחרונה נקבל את עץ הגזירה הבא‪:‬‬
‫‪S‬‬
‫‪b‬‬
‫‪9.3‬‬
‫‪b‬‬
‫‪b‬‬
‫‪a‬‬
‫דקדוק בצורת חומסקי‬
‫הגדרה ‪ 9.6‬הדקדוק ‪ Γ‬קרוי דקדוק בצורת חומסקי אם כל ההפקות ב־‪ Γ‬הן מהצורות‬
‫‪V, V1 , V2 ∈ V‬‬
‫‪a∈Σ‬‬
‫‪21‬‬
‫‪V → V1 V2‬‬
‫‪V →a‬‬
‫‪a‬‬
‫נשים לב כי דקדוק מצורה זו הוא ח"ה‪.‬‬
‫משפט ‪ 9.7‬יהי ‪ Γ‬דקדוק ח"ה‪ .‬אזי קיים דקדוק ‪ Γ0‬בצורת חומסקי כך ש־) ‪.34 L(Γ) = L(Γ0‬‬
‫הגדרה ‪ 9.8‬דקדוק ח"ה ‪ Γ‬קרוי דקדוק ח"ה חיובי אם אין בו הפקות מהצורה ‪.V → ε‬‬
‫משפט עזר‪ .‬יהי ‪ Γ‬דקדוק ח"ה‪ .‬אזי קיים דקדוק ח"ה חיובי ‪ Γ0‬כך ש־) ‪ L(Γ) = L(Γ0‬או }‪.35 L(Γ) = L(Γ0 ) ∪ {ε‬‬
‫הגדרה ‪ 9.9‬דקדוק ח"ה ‪ Γ‬קרוי דקדוק ח"ה מסתעף אם אין ב־‪ Γ‬הפקות מהצורה ‪.V1 → V2 : V1 , V2 ∈ V‬‬
‫מדוע אנו רוצים להוכיח שקילות בין צורת חומסקי לצורה חסרת הקשר? ראינו כי ניתן לייצג גזירה של מילה בשפה‬
‫חסרת הקשר ע"י עץ גזירה‪ .‬אם נעבור לדקדוק בצורת חומסקי‪ ,‬נקבל עץ גזירה בינארי‪ ,‬שאותו קל יותר לחקור ‪.36‬‬
‫משפט ‪ 9.10‬יהי ‪ Γ‬דקדוק ח"ה‪ .‬אזי קיים דקדוק ח"ה מסתעף ‪ Γ0‬כך ש־) ‪.L(Γ) = L(Γ0‬‬
‫הוכחה‪ .‬נחלק את ההוכחה לשני שלבים‪,‬‬
‫‪ .1‬ראשית נמחוק לולאות‪ .‬נניח שיש ב־‪ Γ‬את ההפקות‬
‫‪X1 → X2 , X2 → X3 , . . . , Xn → X1‬‬
‫נמחק את כל ההפקות הללו ונחליף כל הופעה של ‪ X1 , . . . , Xn‬במשתנה חדש ‪.X‬‬
‫‪ .2‬כעת‪ ,‬נניח כי בידינו המקרה‬
‫‪X1 → X2 , X2 → X3 , . . . , Xn−1 → Xn‬‬
‫מספיק להוכיח שניתן למחוק את ‪ .Xn−1 → Xn‬לכל הפקה ‪ Xn → α‬נוסיף הפקה ‪ .Xn−1 → α‬כך נוכל‬
‫לדאוג שמחיקת‬
‫המשתנה לא תזיק לדקדוק‪.‬‬
‫כעת‪ ,‬בעזרת שני הסעיפים הנ"ל יצרנו דקדוק ‪ Γ0‬כנדרש‪.‬‬
‫כעת‪ ,‬נחזור להוכחת שקילות הדקדוק חסר ההקשר לדקדוק בצורת חומסקי‪ .‬הוכחה‪ .‬מספיק שנוכיח שניתן להעביר‬
‫דקדוק ח"ה חיובי מסתעף לצורת חומסקי‪.‬‬
‫יהי ‪ X → α‬הפקה ב־‪ Γ‬כך ש־ ∗) ‪ α ∈ (Σ ∪ V‬אבל לא בצורה חוקית‪ .‬נניח ‪ α = V1 V2 . . . Vn‬כך ש־) ‪.Vi ∈ (Σ ∪ V‬‬
‫נגדיר את המשתנים ‪ Z1 . . . Zn−1‬עם הכללים‬
‫‪X → V1 Z1 , Z1 → V2 Z2 , . . . Zn−1 → Vn−1 Vn‬‬
‫ובכך יצרנו דקדוק בצורת חומסקי השקול‪ ,‬כנדרש‪.‬‬
‫‪34‬נציין כי בדקדוק ח"ה לא בצורת חומסקי כן ניתן לקבל את ‪ ,ε‬אך בצורת חומסקי נתעלם מ־‪.ε‬‬
‫‪35‬כלומר‪ ,‬איסור על הפקות ‪ V → ε‬מונעות קבלת המילה ‪ ,ε‬אך לא פוגמות בשפות אותן ניתן לקבל ע"י הדקדוק‪.‬‬
‫‪36‬למשל‪ ,‬אם עומק העץ הוא ‪ n‬אז רוחבו הוא לכל היותר ‪.2n‬‬
‫‪22‬‬
‫‪9.4‬‬
‫משפט בר הילל ־ למת הניפוח לשפות חסרות הקשר‬
‫כעת‪ ,‬נציג את המטרה המרכזית שלשמה הוכחנו את שקילות דקדוק חומסקי לדקדוקים חסרי ההקשר‪ ,‬ע"י הצגה‬
‫של למת ניפוח בעלת משמעות דומה ללמת הניפוח בשפות הרגולריות‪.‬‬
‫משפט ‪ 9.11‬יהי ‪ Γ‬דקדוק חומסקי בעל ‪ n‬משתנים‪ .‬תהי )‪ z ∈ L(Γ‬כך ש־ ‪ .|z| > 2n‬אזי ניתן לפרק את ‪z‬‬
‫ל־‪ z = uvwxy‬כך ש־‬
‫‪.|vx| > 0 .1‬‬
‫‪.|vwx| ≤ 2n .2‬‬
‫‪ .3‬לכל ‪.uv i wxi y ∈ L(Γ) ,i ∈ N0‬‬
‫הוכחה‪ .‬עבור עץ גזירה בעומק ‪ ,n‬האורך המקסימלי של מילה נגזרת הוא ‪.2n−1‬‬
‫תהי )‪ z ∈ L(Γ‬כך ש־ ‪ .|z| > 2n‬אזי‪ ,‬המסלול הארוך ביותר בעץ הגזירה של ‪ z‬כולל לפחות ‪ n + 1‬משתנים‪.‬‬
‫מכיוון שיש ב־‪ Γ‬רק ‪ n‬משתנים‪ ,‬אזי במסלול הארוך ביותר בעץ הגזירה קיים לפחות משתנה אחד שמופיע לפחות‬
‫פעמיים‪ .‬נתחיל בקודקוד התחתון במסלול הארוך ביותר בעץ הגזירה ונמשיך לפעם הראשונה שאותו משתנה מופיע‬
‫בדיוק פעמיים‪.‬‬
‫נסמן את הקודקוד עם המופע הראשון של המשתנה ב־‪ β‬ואת הקודקוד עם המופע השני של המשתנה ב־‪ .α‬כעת‪,‬‬
‫נגדיר‬
‫‪hTα i = w‬‬
‫‪hTβ i = v hTα i x‬‬
‫‪hT i = u hTβ i y = uvwxy‬‬
‫כעת‪ ,‬נוכיח כי הפירוק שהגדרנו אכן עונה על הדרישות‪.‬‬
‫‪ .|vx| > 0 .1‬מכיוון של־‪ β‬יש שני בנים ו־‪ α‬הוא צאצא של ‪ ,β‬רק מאחד מהם בהכרח יש צאצאים של ‪β‬‬
‫שאינם של ‪.α‬‬
‫‪ .|vwx| ≤ 2n .2‬כלומר‪ .| < Tβ > | ≤ 2n ,‬עפ"י הגדרת ‪ β‬העומק של ‪ Tβ‬הוא לפחות ‪ n + 1‬משתנים‪ ,‬ולכן‬
‫‪.| < Tβ > | ≤ 2n‬‬
‫‪ .3‬מכיוון שהשורש של ‪ Tα‬והשורש של ‪ Tβ‬שווים‪ ,‬נוכל להמיר את ‪ Tα‬ב־ ‪ .Tβ‬או הפוך ועדיין יהיה לנו עץ גזירה‬
‫ב־‪.Γ‬‬
‫)‪ u < Tβ > y ∈ L(Γ‬ולכן )‪ ,u < Tα > y ∈ L(Γ‬אבל‬
‫)‪uv 0 wx0 = uvw = u < Tα > y ∈ L(Γ‬‬
‫וגם מתקיים )‪ ,uv < Tα > y ∈ L(Γ‬אזי גם )‪ .uv < Tβ > xy ∈ L(Γ‬אבל‬
‫)‪uv 2 wx2 y = uvvwxxy = uv < Tβ > xy ∈ L(Γ‬‬
‫נמשיך ונקבל את תנאי למת הניפוח לכל ‪.i ∈ N0‬‬
‫‪23‬‬
‫משפט ‪ 9.12‬השפה }‪ L = {ai bi ci | i > 0‬אינה חסרת הקשר‪.‬‬
‫‪n‬‬
‫‪n‬‬
‫‪n‬‬
‫הוכחה‪ .‬נניח ש־‪ L‬היא ח"ה‪ .‬אזי קיים דקדוק חומסקי בעל ‪ n‬משתנים כך ש־‪ .L(Γ) = L‬תהי ‪.z = a2 b2 c2‬‬
‫לפי בר־הילל מתקיים ‪ z = uvwxy‬כך ש־)‪ uwy ∈ L(Γ‬ו־ ‪ .|vwx| ≤ 2n‬לכן‪ vwx ,‬כולל לכל היותר ‪ 2‬אותיות‬
‫מתוך ‪ a, b, c‬ולכן כשנמחק מופר האיזון בין שלוש האותיות‪ ,‬בסתירה‪.‬‬
‫כעת‪ ,‬נוכיח כמה מסקנות חשובות על דקדוקים בצורת חומסקי‪.‬‬
‫משפט ‪ 9.13‬יהי ‪ Γ‬דקדוק בצורת חומסקי בעל ‪ n‬משתנים‪ .‬אזי קיימת מילה )‪ w ∈ L(Γ‬כך ש־ ‪⇐⇒ |w| ≤ 2n‬‬
‫)‪ L(Γ‬אינה ריקה‪.‬‬
‫הוכחה‪ .‬נוכיח את הכיוון )⇒( ‪.‬‬
‫‪n‬‬
‫נניח ש־)‪ L(Γ‬אינה ריקה‪ .‬נניח בשלילה שהמילה הקטנה ביותר ב־)‪ ,L(Γ‬שנסמנה ב־‪ ,t‬מקיימת ‪ .|t| > 2‬אזי‪ ,‬לפי‬
‫בר־הילל ‪ ,t = uvwxy‬כך ש־)‪ .uwy ∈ L(Γ‬אבל |‪ ,|t| > |uwy‬בסתירה למינימליות של ‪.t‬‬
‫משפט ‪ 9.14‬יהי ‪ Γ‬דקדוק בצורת חומסקי בעל ‪ n‬משתנים‪ .‬אזי‪ ,‬קיימת )‪ w ∈ L(Γ‬כך ש־ ‪⇐⇒ 2n < |w| ≤ 2n+1‬‬
‫)‪ L(Γ‬אינסופית‪.‬‬
‫הוכחה‪ (⇐) .‬כיוון זה טריוויאלי‪ ,‬שכן ניתן לנפח את המילה ובכך ליצור אינסוף מילים שונות‪.‬‬
‫)⇒( נניח ש־)‪ L(Γ‬אינסופית‪ .‬תהי ‪ t‬המילה הקטנה ביותר המקיימת‬
‫‪.t ∈ L(Γ) .1‬‬
‫‪.|t| > 2n+1 .2‬‬
‫לפי בר־הילל ‪ t = uvwxy‬כך ש־)‪ .uwy ∈ L(Γ‬נוכיח כעת כי ‪ .2n < |uwy| ≤ 2n+1‬בהכרח ‪|uwy| ≤ 2n+1‬‬
‫בגלל מינימליות של ‪.t > 2n+1‬‬
‫כעת‪ ,‬מתקיים‬
‫‪n‬‬
‫‪n‬‬
‫‪−2 =2‬‬
‫‪9.5‬‬
‫‪n+1‬‬
‫‪− |vwx| ≥ 2‬‬
‫‪n+1‬‬
‫‪|uwy| = |t| − |vx| ≥ |t| − |vwx| > 2‬‬
‫סגירויות של שפות חסרות הקשר‬
‫משפט ‪ 9.15‬תהיינה ‪ L1 , L2‬שפות חסרות הקשר‪ .‬אזי ‪ L1 ∪ L2‬חסרת הקשר‪.‬‬
‫הוכחה‪ .‬יהי ‪ Γ1 , Γ2‬דקדוקים ח"ה היוצרים את ‪ L1 , L2‬בהתאמה‪ .‬נניח בלי הגבלת הכלליות ש־∅ = ‪.37 V1 ∩ V2‬‬
‫נבנה את הדקדוק ‪ Γ‬כך ש־ ‪.L(Γ) = L1 ∪ L2‬‬
‫}‪V = V1 ∪ V2 ∪ {S‬‬
‫‪Π = Π1 ∪ Π2 ∪ {S → S1 , S → S2 },‬‬
‫נשים לב שהדקדוק שבנינו אכן חסר הקשר והוא אכן יוצר את ‪.L1 ∪ L2‬‬
‫‪ V1 , V2 37‬קבוצת המשתנים של הדקדוקים ‪ Γ1 , Γ2‬בהתאמה‪.‬‬
‫‪24‬‬
‫משפט ‪ 9.16‬קיימות שפות חסרות הקשר ‪ L1 , L2‬כך ש־ ‪ L1 ∩ L2‬אינה חסרת הקשר‪.‬‬
‫הוכחה‪ .‬יהיו }‪ .L2 = {aj bi ci | i, j > 0} ,L1 = {ai bi cj | i, j > 0‬מתקיים }‪L1 ∩ L2 = {ai bi ci | i > 0‬‬
‫והוכחנו שזו אינה חסרת הקשר‪.‬‬
‫כעת נוכיח ש־ ‪ L1 , L2‬חסרות הקשר‪.‬‬
‫עבור ‪ ,L1‬הדקדוק המתאים יהיה‬
‫‪Y → cY‬‬
‫‪Y →c‬‬
‫‪S → XY‬‬
‫‪X → aXb‬‬
‫‪X → ab‬‬
‫ועבור ‪ ,L2‬הדקדוק המתאים יהיה‬
‫‪S → XY‬‬
‫‪Y → bY c‬‬
‫‪Y → bc‬‬
‫‪X → aX‬‬
‫‪X→a‬‬
‫משפט ‪ 9.17‬קיימת שפה חסרת הקשר ‪ L‬כך ש־‪ L‬אינה חסרת הקשר‪.‬‬
‫הוכחה‪ .‬נניח בשלילה שלכל שפה ח"ה ‪ L ,L‬חסרת הקשר‪ .‬אזי‪ ,‬לפי דה־מורגן לשתי שפות חסרות הקשר ‪,L1 , L2‬‬
‫מתקיים‬
‫‪L1 ∩ L2 = L1 ∪ L2‬‬
‫גם חסרת הקשר‪ ,‬בסתירה למשפט הקודם‪.‬‬
‫משפט ‪ 9.18‬תהי ‪ R‬שפה רגולרית ו־‪ L‬שפה חסרת הקשר‪ .‬אזי ‪ L ∩ R‬היא חסרת הקשר‪.‬‬
‫הוכחה‪ .‬יהי ‪ Γ‬דקדוק חומסקי חסר הקשר )‪ (Σ, V, S, Π‬כך ש־)‪ .L = L(Γ‬יהי )‪ M = (Σ, Q, q0 , F, δ‬אס"ד כך‬
‫ש־) ‪.R = L(M‬‬
‫ˆ‬
‫ˆ‬
‫נבנה דקדוק חסר הקשר ‪ Γ‬כך ש־‪ .L(Γ) = R ∩ L‬נגדיר‬
‫}‪Vˆ = {Sˆ ∪ θpq | θ ∈ Σ ∪ V, p, q ∈ Q‬‬
‫המשמעות של המשתנים ‪ θpq‬היא ש־ ‪ θpq‬גוזרת מילה ‪ w‬בדקדוק ‪ Γ‬כך ש־‪.δ(p, w) = q‬‬
‫נוסיף את כללי הגזירה הבאים‪,‬‬
‫‪ Sˆ → S q0 q .1‬לכל ‪.q ∈ F‬‬
‫‪ X pq → Y pr Z rq .2‬לכל ‪ X → Y Z ∈ Π‬לכל ‪.p, q, r ∈ Q‬‬
‫‪ apq → a .3‬לכל ‪ ,a ∈ Σ‬ולכל ‪ p, q ∈ Q‬כך ש־‪.δ(p, a) = q‬‬
‫כעת נוכיח כי אכן ‪ˆ = L ∩ R‬‬
‫)‪.L(Γ‬‬
‫הוכחת הנכונות נובעת בדיוק מן הבנייה ‪.38‬‬
‫‪38‬אם המילה בחיתוך‪ ,‬אזי היא גם נוצרת ע"י הדקדוק וגם מתקבלת ע"י האוטומט‪ ,‬וגזירה שתסמלץ את המסלול תתאים לדרוש‪ .‬לכיוון‬
‫ההפוך‪ ,‬אופן הגזירה יציג את המילה כמילה בדקדוק והמצבים שבכל אות מייצגים את המסלול באוטומט‪.‬‬
‫‪25‬‬
‫חלק ‪VII‬‬
‫אוטומטי מחסנית ושפות תלויות הקשר‬
‫מפאת קוצר הזמן אין ביכולתי לסכם את חלק זה‪ ,‬שהוא אכן בחומר הלימוד‪ .‬אני מקווה שכל הסיכום עד כה עזר‪,‬‬
‫ומאחל בהצלחה לכולם‪:) .‬‬
‫‪26‬‬