790 likes | 1.27k Views
דקדוקים. 6. q 0. לא. A a B b. w. w 1 , w 2…. q 1. q 1. כן. q 1. מודל אנליטי. מודל סינטטי. דקדוקים – מבוא (1). בתחילת הקורס הזכרנו כי נעשות בשלוש דרכים להגדרת שפה: הדרך הישירה, ע"י שימוש בכלים מתמטיים, וסימון קבוצות
E N D
דקדוקים 6
q0 לא A a B b w w1, w2… q1 q1 כן q1 מודל אנליטי מודל סינטטי דקדוקים – מבוא (1) • בתחילת הקורס הזכרנו כי נעשות בשלוש דרכים להגדרת שפה: • הדרך הישירה, ע"י שימוש בכלים מתמטיים, וסימון קבוצות • הגדרת המכונה שמקבלת בדיוק את השפה – עד כה היו אלה אוטומטים סופיים • סימון המגדר נוהל פורמלי "היוצר" את כל המילים בשפה • עד כה התרכזנו בשתי הדרכים הראשונות • לביטויים רגולריים יש דמיון לסוג השלישי
דקדוקים – מבוא (2) • אנו נתענין עתה ב"מחוללי שפות" מהסוג השלישי לעיל. • נתרכז במודל המכונה "דקדוק-שכתוב". • במודל זה כל צעד בנוהל ליצירת מילים הינו שיכתוב חלק מהמילה, עפ"י קבוצת כללי שכתוב מודרים היטב. • התהליך מפסיק כאשר מגיעים ל"מילה טרמינלי", כלומר מילה שלא ניתן לשכתב אותה עוד.
דקדוקים – דוגמא 1 • נהוג לציין מספרים עשרוניים עם פסיקים המפרידים בין כל שלוש ספרות עוקבות (מימין), כגון: • 1,984 • 345 • 314,159,265 • נבנה דקדוק היוצר שפה זו מעל הא"בS* = {0,1, …9}{,} • נתבונן במבנה של מספר זה: • במקרה הפשוט – יש עד 3 ספרות, ללא פסיקים • במקרה היותר מסובך – יש קבוצות תלת ספרתיות מופרדות ע"י פסיקים • אנו נתיחס לחמש קטגוריות: ספרה אחת, שתי ספרות, שלוש ספרות, מספר עד שלוש ספרות, מספר כללי
גם N2 וכו' הם משתנים דקדוקיים, ומיד נראה את כללי השכתוב המתאימים להם דוגמא 1 (המשך) • נסמן את הקטגוריות הנ"ל: N1, N2, N3, N1-3, N. • הקטגוריה הראשונה "יוצרת"ספרות בודדות, נרשום: • N1 0 (כלל שכתוב 1) • N1 1 (כלל שכתוב 2) • N1 9 (כלל שכתוב 10) • ניתן לכתוב את הנ"ל בקיצור כך:N1 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 N1 נקרא משתנה דקדוקי – כיוון שניתן להחליפו עפ"י אחד מהכללים. . . .
דוגמא 1 (המשך 2) • נעבור עתה למספרים דו ספרתיים. מספר דו סיפרתי מורכב משתי ספרות חד ספרתיות • מכאן, נוסיף את הכלל: • N2 N1N1 (כלל שכתוב 11) • כל משתנה N1יכול להיות מוחלף בכל סיפרה עפ"י כללי השכתוב 1 – 10. נראה דוגמא ל"יצירת" מספר דו ספרתי מ N2: • N2 N1N1 3N1 36 אנו משתמשים בסימן לציון כללי שכתוב, ובסימן לציון הפעלת כללי שכתוב (11) (4) (7) N2 ניתן לציין את יצירת המילה בדרך גרפית ע"י "עץ גזירה" N1 N1 3 6
דוגמא 1 (המשך 3) • עבור מספרים תלת ספרתיים נוסיף את הכללN3 N1N1N1 (כלל שכתוב 13) • עתה מספר בין אחת לשלוש ספרות הוא אחת האפשרויות שפרטנו, לכן נקבל: • N1-3 N1| N2| N3 • נשים לב, כי עתה ניתן להשיגאותם מספרים ע"י הפעלת כללי שכתוב שונים, וקבלת עצי גזירה שונים, לדוגמא: N1-3 N2 N1 N1 3 3
דוגמא 1 (המשך 4) • כעת נשאר להגדיר את הקטגוריה העיקרית N– מספר כללי בכתיב עם פסיקים. • נשים לב כי במספר כזה יש שני חלקים – חלק של שלשות שלמות, ורישא (כאשר קוראים מימין לשמאל) של אפס עד שלוש ספרות. עבור הרישא – יש לנו את הקטגוריה N1-3. • עבור השלשות השלמות נבנה קטגורית עזר חדשה L, עם הכללים הבאים: • L N3 | L,N3 • בחוק החדש קיימת תופעה חדשה – הופעה רקורסיבית של המשתנה L, כלומר הופעה בצד שמאל וימין של הכלל.
דוגמא 1 (המשך 5) N • נרשום לסיכום את כל הכללים: N N1-3| N1-3,L L N3 | L,N3 N1-3 N1| N2| N3 N3 N1N1N1 N2 N1N1 N1 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 • נציגעוד עץ גזירה לדוגמא: , N1-3 L , N3 L N1 1 N1 N1 N1 N3 0 0 0 N * 1,000,000 N1 N1 N1 נשים לב כי עפ"י הדקדוק, גם 000,100 הוא מספר חוקי 0 0 0
דוגמא 2 – ביטויים אריתמטיים • נציג דקדוק ליוצר ביטויים אריתמטיים בסגנון המקובל בשפות תכנות רבות, כגון: • (a+b)*c, a/z - c • הא"ב אשר מעליו תוגדר השפה הוא: {+,-,*,/,(,)}S = {a,b, … ,z} • בשפה שלנו לא יהיו קבועים מספריים, והמשתנים יכללו אות אחת בלבד
דוגמא 2 (המשך 1) • להלן הדקדוק עבור הביטויים האריתמטיים, יש להתייחס למילים בתוך ה<> כאל משתנה דקדוקי אחד: (1) <Expression> <Variable> (2) | <Expression> + <Expression> (3) | <Expression> - <Expression> (4) | <Expression> * <Expression> (5) | <Expression> / <Expression> (6) | (<Expression>) (7) <Variable> a | b | … | z
< Expression.> + < Expression > < Expression > * <Variable> <Variable> <Variable> c a b דוגמא 2 (המשך 2) • דוגמת גזירה: <Expression> <Expression> + <Expression> <Expression> * <Expression> + <Expression> … <Variable> * <Variable> + <Variable> … a*b + c 3 פעמים 3 פעמים
< Expression.> * < Expression > < Expression > + <Variable> <Variable> <Variable> a b c דוגמא 2 (המשך 3) • נשים לב כי ניתן לקבל את הביטוי הנ"ל גם ע"י עץ גזירה שונה: • העצים השונים מרמזים על סדר חישוב שונה • לתופעה של קיום שני עצי גזירה עבור אותה מילה קוראים "דו משמעות"
P = דקדוק – הגדרה פורמלית הגדרה • דקדוקG הינו הרביעייה הבאה: G = (V,T,P,S) כאשר: • Vקבוצה סופית לא ריקה של משתנים דקדוקיים • Tקבוצה סופית לא ריקה של סימנים טרמינליים הזרה ל V. • Sמשתנה התחלתי, S V. • Pקבוצה סופית של כללי שכתוב (או כללי גזירה) מהצורה ba כאשר a (V T)*V(V T)*ו b (V T)* • למשל – בדוגמא הראשונה: • V = {N, N1-3, N3, N2, N1, L} • T = {0,1,2,3,4,5,6,7,8,9} {,} • S = {N} • P הם כללי השכתוב 1 - 19 N N1-3| N1-3,L L N3 | L,N3 N1-3 N1| N2| N3 N3 N1N1N1 N2 N1N1 N1 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
דקדוקים – מסכמות סימון מוסכמות סימון: • בד"כ נשתמש ב Tלסימון קבוצת הסימנים הטרמינליים. בדומה ל S בחלקים קודמים של הקורס. • נשתמש באותיות לטיניות גדולות מתחילת הא"ב כגון A,B,C לציון סימנים מתוך קבוצת המשתנים הדקדוקיים V • נשתמש בדרך כלל באותיות לטיניות קטנות מתחילת הא"ב כגון a,b,cלציון סימנים מתוך קבוצת הטרמינלים T • נשתמש באותיות לטיניות גדולות מסוף הא"ב כגון X,Y,Z לציון סימנים מתוך (V T) • נשתמש באותיות יווניות קטנות כגון a,b,g,,,xלציון איברים מ (V T)*כלומר סדרות של טרמינלים ומשתנים דקדוקיים. • נשתמש באותיות לטיניות קטנות מסוף הא"ב כגון x,y,z לציון איברים מ T*כלומר מילים טרמינליות.
גזירה הגדרה • יהי דקדוק G = (V,T,P,S) ויהיו 1, 2 (V T)*נאמר כי 2 נגזר ישירות מ1 ונסמן 1 2 אמ"מ קיימים y,c,a,b(V T)*, a (V T)*V(V T)*, ו ab Pכךש:1 = yacו 2 = ybc • במילים אחרות – ניתן לעבור מ 1 ל 2ע"י הפעלת כלל אחד מ P • נסמן 1 *2 אמ"מ ניתן לעבור מ 1 ל 2ע"י מספר סופי של הפעלות כללים מ P (לרבות 0 כללים ואז 1 = 2 ) • הסימון 1 i2 יציין גזירה ב i שלבים G G G • בד"כ נרשום פשוט 1 2 כאשר ברור על איזה דקדוק מדובר
שפה של דקדוק הגדרה • השפה הנוצרת ע"י דקדוק G = (V,T,P,S) והמסומנת ע"י L(G) מוגדרת ע"י:L(G) = {x T* | S *x} • מילה a (TV)* נקראת תבנית פסוקית אמ"מ S *a • a אינה חייבת להיות מילה טרמינלית! • נאמר כי שני דקדוקים G1ו-G2הם שקולים אמ"מL(G1) = L(G2)
S a b S a b S a b דוגמא • כזכור, השפה L = {anbn | n 1}אינה רגולרית, נראה כי ניתן ליצור אותה בעזרת דקדוקG = ({S}, {a,b}, P, S) כאשר כללי Pהם: (1) S aSb (2) S ab • נראה עץ גזירה לדוגמא: S * aaabbb
הוכחת יצירת שפה ע"י דקדוק • נוכיח כי השפה L = {anbn | n 1}אכן נוצרת ע"י הדקדוק שהראנו. טענה L = L(G) הוכחה • כיוון א' - L L(G) • נוכיח באינדוקציה על nשלכל nanbn L • עבור n = 1, S abולכן ab = a1b1 L (2)
הנחת האינדוקציה יצירת שפה ע"י דקדוק (המשך 1) • צעד האינדוקציה – נניח כי הטענה נכונה עבור n ונראה שנובעת מכך נכונותה עבור n + 1 • ראשית – מתקיים S aSb. • בנוסף, לפי הנחת האינדוקציה S *anbn • לכן נוכל לרשום:S aSb *a anbn b = an+1bn+1 • ומכאן – המילה נגזרת כנדרש (1) (1)
יצירת שפה ע"י דקדוק (המשך 2) • כיוון ב' – L(G) L • נוכיח טענה חזקה יותר: לכל n 1 ולכל צורה פסוקית a (VT)*, אם S na, אז a = anSbn או a = anbn • נוכיח באינדוקציה על n • בסיס – עבור n = 1, aצריכה להיגזר ישירות מ S ולכך יש בדיוק שתי אפשרויות: S 1aSb = a(עפ"י כלל 1) אוS 1ab = a(עפ"י כלל 2)
יצירת שפה ע"י דקדוק (המשך 3) • צעד - נניח כי הטענה נכונה עבור n ונראה שנובעת מכך נכונותה עבור n + 1 • אם S n+1aאז קיימת b כך ש S nb 1aוב b יש לפחות משתנה אחד, כלומר b (VT)*V(VT)* • לפי הנחת האינדוקציה, b = anSbn או b = anbn • כאמור – לא יתכן כי b = anbn, לכן b = anSbn. • על מנת לגזור צעד נוסף ניתן להשתמש בכלל 1, ואז:S nb = anSbn 1 an+1Sbn+1 • או בכלל 2 ואז: S nb = anSbn 1 an+1bn+1 • בכל מקרה – המילה היא מהצורה המבוקשת! • מטענת העזר ברור מידית כי אם S *w ו w T* אז w = anbn
ההיררכיה של חומסקי • אנו נמיין כעת את הדקדוקים השוניםלפי הצורה של כללי השכתוב שלהם. • כל צורה מתקבלת ע"י הטלת אילוציםנוספים על הצורה הקודמת. • אנו נציג ארבע קבוצות של דקדוקים אשר יקיימוG3 G2 G1 G0 • שפה תקרא מטיפוס i אם קיים דקדוק מטיפוס i היוצר אותה, נסמן אותן ב i ונראה כי 3 2 1 0 • למעשה ההכלות הנ"ל הן הכלות ממש, ועבור חלק מהמקרים נוכיח זאת בקורס זה.
ההיררכיה של חומסקי (המשך) • ההיררכיה של חומסקי מגדירה משפחות של שפות במונחי הדקדוק שיוצר אותן • אחת העובדות המעניינות היא, שעבור כל משפחה של שפות בהיררכיה, קיים מודל חישובי סוג של אוטומטים, אשר כוחם מספיק בדיוק לקבלת שפות מהמשפחה המתאימה. • ראינו סוג כזה והאוטומט המתאים לו בחלק הראשון של קורס – השפות הרגולריות, והאוטומטים הסופיים • בהמשך נוכיח כי משפחה זו אכן מתאימה למשפחת ה"דקדוקים הרגולריים"
ההיררכיה של חומסקי – טיפוס 0 דקדוקים בלתי-מוגבלים • זוהי הקטגוריה הכללית ביותר של הדקדוקים • נשים לב כי בדקדוקים כלליים אפשריים כללים המקצרים את אורך הצורה הפסוקית, כגון:aBa • כוח הביטוי של דקדוקים כלליים הוא כה רב עד כי הוא שקול למודל החישובי הכללי ביותר המכונה "מכונת טיורינג" • מכונת טיורינג מצידה, שקולה חישובית לכל מחשב • מכונות טיורינג ודקדוקים כלליים נלמדים בקורסים העוסקים בחישוביות
ההיררכיה של חומסקי – טיפוס 1 דקדוקים תלויי-הקשר • דקדוק נקרא תלוי-הקשר אמ"מ כל כלל בו הוא מהצורהj y כאשר |j| |y| • כמו כן מותר הכלל S e • המודל החישובי המתאים לדקדוקים תלויי הקשר הינו מכונת טיורינג עם מגבלות מסוימות
ההיררכיה של חומסקי – טיפוס 2 דקדוקים חופשיי הקשר • דקדוק נקרא חופשי הקשר אמ"מ כל כלל בו הוא מהצורה A aכאשר a (VT)*, A V • בדקדוקים אלה באגף שמאל של הגזירה מופיע תמיד משנה בודד, לכן הגזירה אינה תלויה בהקשר בה הוא מופיעה, ומכאן שמם של הדקדוקים • על מנת שדקדוקים ח"ה יהיו מקרה פרטי של הדקדוקים תלויי ההקשר יש להתיר גזירת e רק מהמשתנה ההתחלתי: A e . ואולם אנו נראה כי מגבלה זו אינה משנה את כוח הביטוי של דקדוקים אלו • המודל החישובי המתאים לדקדוקים אלה הוא אוטומט המחסנית • המשך הקורס יעסוק בעיקר בדקדוקים אלה, ובאוטומט המחסנית • למשפחת דקדוקים זאת חשיבות מיוחדת כיוון שחלק גדול מהתחביר של שפות התכנות ניתן לתיאור באמצעות דקדוקים חופשיי הקשר
ההיררכיה של חומסקי – טיפוס 3 דקדוק רגולרי • זהו סוג הדקדוק המוגבל ביותר בהיררכיה הגדרה • דקדוק ייקרא ליניארי ימני אם כל הכללים בו הם מהצורה:A aBאו A a, כאשר A, B V , a T כמו כן מותר הכלל S e • דקדוק ייקרא ליניארי שמאלי אם כל הכללים בו הם מהצורה:A Baאו A a. כמו כן מותר הכללS e • דקדוק ייקרא רגולרי אמ"מ הוא ליניארי ימני או ליניארי שמאלי • כלומר יש בו רק סוג אחד מהכללים הנ"ל
S a B b A B a A b a דקדוקים רגולריים • נעבור עתה לטיפול בדקדוקים הרגולריים, והוכחת שקילותם לשפות הרגולריות • נתחיל בדוגמא של דקדוק ליניארי ימני G: (1,2) SaB | a (3,4) A aB | a (5) B bA • להלן דוגמא לגזירת מילה:S aB abA abaB ababA ababa
הנחת האינדוקציה דקדוקים רגולריים – המשך דוגמא • נוכיח עתה כי עבור הדקדוק הנ"ל מתקייםL(G) = (ab)*a • כיוון א' - (ab)*a L(G) • נוכיח טענת עזר: לכל k 1 מתקיים S * (ab)kA • אינדוקציה על k. • עבור k = 1 מתקיים S aB abA • נניח שהטענה נכונה עבור kונוכיח שנובעת מכך נכונותה עבור k+1:S * (ab)kA (ab)kaB (ab)kabA (ab)k+1A • בזאת הוכחה טענת העזר (1) (4) (3) (4)
L(G) = (ab)*a(המשך) • עתה אם x (ab)*a אז קיים k 0 כך ש x = (ab)ka • אם k = 0 אז S a = x • אםk > 0 אז לפי טענת העזר:(ab)ka = xS (ab)kA • כיוון ב' - L(G) (ab)*a • תרגיל בית
a q0 q2 b a q1 a, b מעבר מאס"ד לדקדוק רגולרי • אנו מבקשים להוכיח כי לכל אוטומט סופי קיים דקדוק רגולרי היוצר את שפת האוטומט. נמחיש את רעיון הבניה בדוגמא: • יהי M האוטומט הבא, נשים לב כי L(M) = ab* • אנו נבנה דקדוק כך שלכל מצב qiנתאים משתנה Viונקבע כללים שיקיימו V0 *xVid(q0,x) = qi: b • עבור d(q0,b) = q1נקבע V0 bV1 • עבור d(q0,a) = q2נקבע V0 aV2 • כיוון ש q2 מצב מקבל נקבע V0 a • ובדומה V1 aV1 | bV1 V2 bV2 | b | aV1
b a V2 V1 b a V1 V2 b מעבר מאס"ד לדקדוק רגולרי (המשך) V0 bV1 V0 aV2 V0 a V1 aV1 | bV1 V2 bV2 | b | aV1 a q0 q2 b b a נדגים גזירה בדקדוק יחד עם החישוב המקביל ע"י האוטומט, על המילה abb: V0 b a b q1 a, b q0 q2 q2 q2 V0 a b עבור חישוב שאינו מקבל – הגזירה המתאימה אינה טרמינלית q0 q1 q1
שקילות שפות רגולריות לדקדוקים רגולריים משפט • לכל שפה רגולרית L קיים דקדוק ליניארי ימני Gכך ש L(G) = L • בהמשך נוכיח שקילות בין הדקדוקים הליניאריים הימנים לשמאליים, לכן כעת נדון רק בימניים משפט עזר • כל תבנית פסוקית בדקדוק ליניארי ימני היא מהצורה wA או w כאשר A V, w T*
שקילות שפות רגולריות לדקדוקים רגולריים (המשך 1) הוכחת משפט עזר • אינדוקציה על אורך הגזירה • עבור גזירה שאורה 0 נקבל כי הצורה הפסוקית היא S ואז זהו המקרה הראשון כאשרw = e, A =S • נניח כי הטענה נכונה עבור גזירה באורך n ונראה שנובעת מכך נכונותה עבור n + 1 • תהי S a0 a1 … an an+1גזירה באורך n +1 • עפ"י הנחת האינדוקציה an= wA (לא יתכן כי an= wכיוון שיש עוד גזירה) • מכאן הצעד האחרון הופעל על Aכלל מהצורה:A aBאו A a • ומכאן an+1 = waB או an+1 = wa. בשני המקרים קבלנו את הצורה המבוקשת
שקילות שפות רגולריות לדקדוקים רגולריים (המשך 1) • נוכיח כעת את המשפט העיקרי - לכל שפה רגולרית L קיים דקדוק ליניארי ימני Gכך ש L(G) = L • יהי M = (, Q, q0, F,) אוטומט סופי ללא מסעי e, כך ש L(M) = L • נניח ראשית כי q0 F (כלומר Le) • נגדיר דקדוק GM(Q, , P, q0) כך ש:לכל מעבר d(p,a) = q ניצור כלל p aq, ואם q F אז ניצור גם p a
שקילות שפות רגולריות לדקדוקים רגולריים (המשך 2) טענה • לכל w S*,p *wq אמ"מ d(p, w) = q • הוכחה האינדוקציה על אורך המילה בכיוון אחד, ועל אורך הגזירה בכיוון השני • נסתמך על הטענה ע"מ להוכיח כי L(GM) = L • כיוון א' L L(GM) • נניח כי y L(M), y eונרשום y = xs, xS*,s S • נניח כי d(q0, x) = p, אזי עפ"י הטענה q0 *xp • כמו כן d(p, s) = q F ולכן קיים ב G כלל p sומכאן:q0 * xp xs = y • כלומר L(GM)y GM GM GM GM
שקילות שפות רגולריות לדקדוקים רגולריים (המשך 3) • כיוון ב' LL(GM) • נניח כי xs =y L(GM) , כלומר q0 *xs • אורך הגזירה לא יכול להיות 0 לכן קיימת תבנית פסוקית a כך ש q0 *a xs • כיוון שב a חייב להיות משתנה אחד לפחות, עפ"י משפט העזר aהיא מהצורה wp, וw = x • מכאן q0 *xp xs • על סמך האמור לעיל והטענה הקודמת d(q0, x) = pוכיוון שp sהנו כלל ב GMרק אם d(p, s) = q Fנקבל:d(q0, xs) = d(p, s) = q F, כלומר L(M)y = xs
שקילות שפות רגולריות לדקדוקים רגולריים (המשך 3) • נותר לטפל במקרה בו q0 F • במקרה זה e L. במהלך ההוכחה הראנו למעשה כי L(GM) = L – {e} • נוסיף לדקדוק את הכלל q0 e אז eתהיה מילה הדקדוק החדש, וזאת המילה היחידה אותה כלל זה מוסיף. • מכאן – הדקדוק החדש מקיים L(GM) = L
שקילות שפות רגולריות לדקדוקים רגולריים– כיוון ב' • נבנה עתה אוטומט סופי (לא דטרמיניסטי) עבור דקדוק ליניארי ימני נתון משפט • יהי G = (V, T, P, S) דקדוק ליניארי ימני. אז קיים אוטומט סופי MGמעל הא"ב T כך ש L(MG) = L(G) הוכחה • נבנה אוטומט סופי MGאשר בעת קריאת מילה x יבצע סימולציה של גזירת x ע"י הדקדוק G
שקילות שפות רגולריות לדקדוקים רגולריים– כיוון ב' (המשך 1) • MG = (T, V {qf}, S, {qf}, d), כלומר מצבי האוטומט הם משתני G בתוספת מצב חדש שישמש כמצב מקבל יחיד. המצב ההתחלתי יהיה המשתנה ההתחלתי של הדקדוק S. • פונקצית המעברים d: • לכל A,B V ולכל a T , Bd(A,a) אמ"מ A aB P • qf d(A,a) אמ"מ A a P • qf d(S,e) אמ"מ S e P
שקילות שפות רגולריות לדקדוקים רגולריים– כיוון ב' (המשך 1) • להלן מספר טענות עזר הנובעות מהגדרת האוטומט: • לכל xe, S* xA אמ"מ Ad(S,x) • לכל xe, S* x אמ"מ qf d(S,x) • S =>e אמ"מ qf d(S, e) • טענה שלוש נובעת ישירות מההגדרה, טענות 1 ו-2 ניתנות להוכחה באינדוקציה על |x| בכיוון אחד, ובאינדוקציה על אורך הגזירה בכיוון השני (נוכיח כיוון אחד ב 1 כדוגמא) • מהטענות נובע מיד כי L(G) = L(MG)
הוכחת טענת עזר 1 • כיוון א'לכל x e, אם A d(S,x) אז S * xA • נוכיחבאינדוקציה על |x| • בסיס. עבור |x| = 1x = a Tולכן אם A d(S,x) עפ"י הגדרת האוטומט קיים בדקדוק כלל S aAולכן S aA = xA • נניח כי הטענה נכונה עבור n ונוכיח שמובעת מכך נכונותה עבור|y| = n+1 • נניח כי y = xa, |y| = n+1 וכן A d(S,y) • כלומר A d(S,xa) . • מכאן קיים B V כך ש B d(S,x) וכן A d(B, a) • מכאן ומהנחת האינדוקציה נקבל כי S * xB, ומבניית האוטומט נקבל כי קיים כלל BaA • על שילוב שתי העובדות הנ"ל נוכל לרשום:S * xB xaA = yAכנדרש
הוכחת טענת עזר 1 (המשך) • כיוון א'לכל x e,אם S * xA אז A d(S,x) • נוכיח באינדוקציה על אורך הגזירה. • בסיס.אם xAנגזרת בצעד יחיד אזx = a Tוקיים ב G כלל מהצורה S aA(בגלל צורת חוקי הדקדוק הליניארי הימני). • לכן אם עפ"י הגדרת האוטומט מתקיים A d(S,a) = d(S,x) • צעד. נניח כי הטענה מתקימת עבור גזירה באורך nונוכיח שנובעת מכך נכונותה עבור n+1 • תהי S a0 a1 … an an+1גזירה באורךn +1, ו an+1 = yB • מתוך משפט עזר שהוכחנו anהיא מהצורה xAולפי הנחת האינדוקציה A d(S,x) • מכאן – הגזירה האחרונה פועלת על A, והכלל היחיד שיכול להיות מופעל הוא מהצורה A aB • לכן עפ"י בניית האוטומט נקבל כי B d(A,a), ולסיכום נרשום: • d(d(S,x), a)
שקילות דקדוק ליניארי שמאלי וימני משפט • שפה Lנצרת ע"י דקדוק ליניארי ימני אמ"מ היא נוצרת ע"י דקדוק ליניארי שמאלי הוכחה • נניח כי L נוצרת ע"י דקדוק ליניארי ימני. לפי המשפט הקודם נובע מכך שL רגולרית. • מתכונות הסגירות של השפות הרגולריות נובע מכך שגם LRרגולרית, ולכן שוב לפי המשפט הקודם קיים דקדוק ליניארי ימני Grכך ש LR = L(Gr) • נתאים ל Grדקדוק ליניארי שמאלי Glכך: • לכל כלל מהצורה AaB ב Grנתאים כלל ABa ב Gl • כל הכללים מהצורה Aa ב Grיהיו גם כללים בGl
שקילות דקדוק ליניארי שמאלי וימני (המשך 1) טענה • x L(Gl) אמ"מ xR L(Gr) • הוכחה באינדוקציה על אורך הגזירה • עתה כיוון שלכל שפה מתקיים (LR)R = Lנקבל:L(Gl) = (L(Gr))R = (LR)R = L • כיוון ב' – התאמת דקדוק ליניארי ימני לדקדוק לינארי שמאלי – סימטרי לחלוטין
דקדוק ליניארי ימני מורחב • דקדוק יקרא ליניארי ימני מורחב אם כל הכללים בו הם מהצורה A w, AwB, כאשר w T*, A,B,V טענה • לכל דקדוק ליניארי ימני מורחב קיים דקדוק ליניארי ימני השקול לו תמצית הוכחה • לכל כלל בדקדוק הליניארי המורחב מהצורה A wB וw = a1…anנוסיף לדקדוק הלינארי המתאים את המשתנים:A1, …An-1ואת הכללים A a1A1, A1 a2A2, A2 a3A3, ... , An-1 anB ונוציא את הכלל A wB . • לכל כלל בדקדוק הליניארי המורחב מהצורה A w וw = a1…anנוסיף לדקדוק הלינארי המתאים את המשתנים:A1, …An-1ואת הכלליםA a1A1, A1 a2A2, A2 a3A3, ... , An-1 an ונוציא את הכלל A w . • הדקדוק החדש הוא דקדוק לינארי ימני רגיל. כעת נותר להוכיח כי הוא שקול לדקדוק המורחב
דקדוק ליניארי • דקדוק יקרא לינארי אמ"מ כל כלליו הם מהצורה: A w1Bw2 או A wכאשר A Vw,w1,w2 T* • נשים לב כי שפות הנוצרות ע"י דקדוק לינארי אינן בהכרח רגולריות. • לדוגמא – ראינו כי הדקדוק שכלליו הם: (1) S aSb (2) S ab יוצר את {anbn | n 1},וזו אינה שפה רגולרית • שימו לב כי הדקדוק הנ"ל הוא כמובן לינארי
דקדוקים חופשיי-הקשר • נעבור כעת לסוג הדקדוקים המרכזי בחלק זה של הקורס • תזכורת – דקדוק הוא חפשי הקשר עם כל כלליו הם מהצורה A aכאשר a (VT)*, A V • אנו נגדיר בשלב זה באופן פורמלי את מושג עצי הגזירה שהינו מרכזי לדקדוקים חופשיי-ההקשר, ונבחן את ההתאמה שבין גזירה ספציפית לעץ גזירה המתאים לה