1 / 75

דקדוקים

דקדוקים. 6. q 0. לא. A  a B  b. w. w 1 , w 2…. q 1. q 1. כן. q 1. מודל אנליטי. מודל סינטטי. דקדוקים – מבוא (1). בתחילת הקורס הזכרנו כי נעשות בשלוש דרכים להגדרת שפה: הדרך הישירה, ע"י שימוש בכלים מתמטיים, וסימון קבוצות

shirin
Télécharger la présentation

דקדוקים

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. דקדוקים 6

  2. q0 לא A  a B  b w w1, w2… q1 q1 כן q1 מודל אנליטי מודל סינטטי דקדוקים – מבוא (1) • בתחילת הקורס הזכרנו כי נעשות בשלוש דרכים להגדרת שפה: • הדרך הישירה, ע"י שימוש בכלים מתמטיים, וסימון קבוצות • הגדרת המכונה שמקבלת בדיוק את השפה – עד כה היו אלה אוטומטים סופיים • סימון המגדר נוהל פורמלי "היוצר" את כל המילים בשפה • עד כה התרכזנו בשתי הדרכים הראשונות • לביטויים רגולריים יש דמיון לסוג השלישי

  3. דקדוקים – מבוא (2) • אנו נתענין עתה ב"מחוללי שפות" מהסוג השלישי לעיל. • נתרכז במודל המכונה "דקדוק-שכתוב". • במודל זה כל צעד בנוהל ליצירת מילים הינו שיכתוב חלק מהמילה, עפ"י קבוצת כללי שכתוב מודרים היטב. • התהליך מפסיק כאשר מגיעים ל"מילה טרמינלי", כלומר מילה שלא ניתן לשכתב אותה עוד.

  4. דקדוקים – דוגמא 1 • נהוג לציין מספרים עשרוניים עם פסיקים המפרידים בין כל שלוש ספרות עוקבות (מימין), כגון: • 1,984 • 345 • 314,159,265 • נבנה דקדוק היוצר שפה זו מעל הא"בS* = {0,1, …9}{,} • נתבונן במבנה של מספר זה: • במקרה הפשוט – יש עד 3 ספרות, ללא פסיקים • במקרה היותר מסובך – יש קבוצות תלת ספרתיות מופרדות ע"י פסיקים • אנו נתיחס לחמש קטגוריות: ספרה אחת, שתי ספרות, שלוש ספרות, מספר עד שלוש ספרות, מספר כללי

  5. גם 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 נקרא משתנה דקדוקי – כיוון שניתן להחליפו עפ"י אחד מהכללים. . . .

  6. דוגמא 1 (המשך 2) • נעבור עתה למספרים דו ספרתיים. מספר דו סיפרתי מורכב משתי ספרות חד ספרתיות • מכאן, נוסיף את הכלל: • N2 N1N1 (כלל שכתוב 11) • כל משתנה N1יכול להיות מוחלף בכל סיפרה עפ"י כללי השכתוב 1 – 10. נראה דוגמא ל"יצירת" מספר דו ספרתי מ N2: • N2  N1N1  3N1  36 אנו משתמשים בסימן  לציון כללי שכתוב, ובסימן  לציון הפעלת כללי שכתוב (11) (4) (7) N2 ניתן לציין את יצירת המילה בדרך גרפית ע"י "עץ גזירה" N1 N1 3 6

  7. דוגמא 1 (המשך 3) • עבור מספרים תלת ספרתיים נוסיף את הכללN3  N1N1N1 (כלל שכתוב 13) • עתה מספר בין אחת לשלוש ספרות הוא אחת האפשרויות שפרטנו, לכן נקבל: • N1-3 N1| N2| N3 • נשים לב, כי עתה ניתן להשיגאותם מספרים ע"י הפעלת כללי שכתוב שונים, וקבלת עצי גזירה שונים, לדוגמא: N1-3 N2 N1 N1 3 3

  8. דוגמא 1 (המשך 4) • כעת נשאר להגדיר את הקטגוריה העיקרית N– מספר כללי בכתיב עם פסיקים. • נשים לב כי במספר כזה יש שני חלקים – חלק של שלשות שלמות, ורישא (כאשר קוראים מימין לשמאל) של אפס עד שלוש ספרות. עבור הרישא – יש לנו את הקטגוריה N1-3. • עבור השלשות השלמות נבנה קטגורית עזר חדשה L, עם הכללים הבאים: • L N3 | L,N3 • בחוק החדש קיימת תופעה חדשה – הופעה רקורסיבית של המשתנה L, כלומר הופעה בצד שמאל וימין של הכלל.

  9. דוגמא 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

  10. דוגמא 2 – ביטויים אריתמטיים • נציג דקדוק ליוצר ביטויים אריתמטיים בסגנון המקובל בשפות תכנות רבות, כגון: • (a+b)*c, a/z - c • הא"ב אשר מעליו תוגדר השפה הוא: {+,-,*,/,(,)}S = {a,b, … ,z} • בשפה שלנו לא יהיו קבועים מספריים, והמשתנים יכללו אות אחת בלבד

  11. דוגמא 2 (המשך 1) • להלן הדקדוק עבור הביטויים האריתמטיים, יש להתייחס למילים בתוך ה<> כאל משתנה דקדוקי אחד: (1) <Expression>  <Variable> (2) | <Expression> + <Expression> (3) | <Expression> - <Expression> (4) | <Expression> * <Expression> (5) | <Expression> / <Expression> (6) | (<Expression>) (7) <Variable>  a | b | … | z

  12. < 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 פעמים

  13. < Expression.> * < Expression > < Expression > + <Variable> <Variable> <Variable> a b c דוגמא 2 (המשך 3) • נשים לב כי ניתן לקבל את הביטוי הנ"ל גם ע"י עץ גזירה שונה: • העצים השונים מרמזים על סדר חישוב שונה • לתופעה של קיום שני עצי גזירה עבור אותה מילה קוראים "דו משמעות"

  14. 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

  15. דקדוקים – מסכמות סימון מוסכמות סימון: • בד"כ נשתמש ב 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*כלומר מילים טרמינליות.

  16. גזירה הגדרה • יהי דקדוק 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)*, ו ab Pכךש:1 = yacו 2 = ybc • במילים אחרות – ניתן לעבור מ 1 ל 2ע"י הפעלת כלל אחד מ P • נסמן 1 *2 אמ"מ ניתן לעבור מ 1 ל 2ע"י מספר סופי של הפעלות כללים מ P (לרבות 0 כללים ואז 1 = 2 ) • הסימון 1 i2 יציין גזירה ב i שלבים G G G • בד"כ נרשום פשוט 1  2 כאשר ברור על איזה דקדוק מדובר

  17. שפה של דקדוק הגדרה • השפה הנוצרת ע"י דקדוק G = (V,T,P,S) והמסומנת ע"י L(G) מוגדרת ע"י:L(G) = {x  T* | S *x} • מילה a (TV)* נקראת תבנית פסוקית אמ"מ S *a • a אינה חייבת להיות מילה טרמינלית! • נאמר כי שני דקדוקים G1ו-G2הם שקולים אמ"מL(G1) = L(G2)

  18. 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

  19. הוכחת יצירת שפה ע"י דקדוק • נוכיח כי השפה L = {anbn | n  1}אכן נוצרת ע"י הדקדוק שהראנו. טענה L = L(G) הוכחה • כיוון א' - L  L(G) • נוכיח באינדוקציה על nשלכל nanbn L • עבור n = 1, S  abולכן ab = a1b1 L (2)

  20. הנחת האינדוקציה יצירת שפה ע"י דקדוק (המשך 1) • צעד האינדוקציה – נניח כי הטענה נכונה עבור n ונראה שנובעת מכך נכונותה עבור n + 1 • ראשית – מתקיים S  aSb. • בנוסף, לפי הנחת האינדוקציה S *anbn • לכן נוכל לרשום:S  aSb *a anbn b = an+1bn+1 • ומכאן – המילה נגזרת כנדרש (1) (1)

  21. יצירת שפה ע"י דקדוק (המשך 2) • כיוון ב' – L(G)  L • נוכיח טענה חזקה יותר: לכל n  1 ולכל צורה פסוקית a  (VT)*, אם S na, אז a = anSbn או a = anbn • נוכיח באינדוקציה על n • בסיס – עבור n = 1, aצריכה להיגזר ישירות מ S ולכך יש בדיוק שתי אפשרויות: S 1aSb = a(עפ"י כלל 1) אוS 1ab = a(עפ"י כלל 2)

  22. יצירת שפה ע"י דקדוק (המשך 3) • צעד - נניח כי הטענה נכונה עבור n ונראה שנובעת מכך נכונותה עבור n + 1 • אם S n+1aאז קיימת b כך ש S nb 1aוב b יש לפחות משתנה אחד, כלומר b  (VT)*V(VT)* • לפי הנחת האינדוקציה, 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

  23. ההיררכיה של חומסקי • אנו נמיין כעת את הדקדוקים השוניםלפי הצורה של כללי השכתוב שלהם. • כל צורה מתקבלת ע"י הטלת אילוציםנוספים על הצורה הקודמת. • אנו נציג ארבע קבוצות של דקדוקים אשר יקיימוG3 G2  G1  G0 • שפה תקרא מטיפוס i אם קיים דקדוק מטיפוס i היוצר אותה, נסמן אותן ב i ונראה כי 3 2 1 0 • למעשה ההכלות הנ"ל הן הכלות ממש, ועבור חלק מהמקרים נוכיח זאת בקורס זה.

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

  25. ההיררכיה של חומסקי – טיפוס 0 דקדוקים בלתי-מוגבלים • זוהי הקטגוריה הכללית ביותר של הדקדוקים • נשים לב כי בדקדוקים כלליים אפשריים כללים המקצרים את אורך הצורה הפסוקית, כגון:aBa • כוח הביטוי של דקדוקים כלליים הוא כה רב עד כי הוא שקול למודל החישובי הכללי ביותר המכונה "מכונת טיורינג" • מכונת טיורינג מצידה, שקולה חישובית לכל מחשב • מכונות טיורינג ודקדוקים כלליים נלמדים בקורסים העוסקים בחישוביות

  26. ההיררכיה של חומסקי – טיפוס 1 דקדוקים תלויי-הקשר • דקדוק נקרא תלוי-הקשר אמ"מ כל כלל בו הוא מהצורהj y כאשר |j|  |y| • כמו כן מותר הכלל S e • המודל החישובי המתאים לדקדוקים תלויי הקשר הינו מכונת טיורינג עם מגבלות מסוימות

  27. ההיררכיה של חומסקי – טיפוס 2 דקדוקים חופשיי הקשר • דקדוק נקרא חופשי הקשר אמ"מ כל כלל בו הוא מהצורה A aכאשר a (VT)*, A V • בדקדוקים אלה באגף שמאל של הגזירה מופיע תמיד משנה בודד, לכן הגזירה אינה תלויה בהקשר בה הוא מופיעה, ומכאן שמם של הדקדוקים • על מנת שדקדוקים ח"ה יהיו מקרה פרטי של הדקדוקים תלויי ההקשר יש להתיר גזירת e רק מהמשתנה ההתחלתי: A e . ואולם אנו נראה כי מגבלה זו אינה משנה את כוח הביטוי של דקדוקים אלו • המודל החישובי המתאים לדקדוקים אלה הוא אוטומט המחסנית • המשך הקורס יעסוק בעיקר בדקדוקים אלה, ובאוטומט המחסנית • למשפחת דקדוקים זאת חשיבות מיוחדת כיוון שחלק גדול מהתחביר של שפות התכנות ניתן לתיאור באמצעות דקדוקים חופשיי הקשר

  28. ההיררכיה של חומסקי – טיפוס 3 דקדוק רגולרי • זהו סוג הדקדוק המוגבל ביותר בהיררכיה הגדרה • דקדוק ייקרא ליניארי ימני אם כל הכללים בו הם מהצורה:A  aBאו A  a, כאשר A, B  V , a  T כמו כן מותר הכלל S  e • דקדוק ייקרא ליניארי שמאלי אם כל הכללים בו הם מהצורה:A  Baאו A  a. כמו כן מותר הכללS  e • דקדוק ייקרא רגולרי אמ"מ הוא ליניארי ימני או ליניארי שמאלי • כלומר יש בו רק סוג אחד מהכללים הנ"ל

  29. ההיררכיה של חומסקי - סיכום

  30. S a B b A B a A b a דקדוקים רגולריים • נעבור עתה לטיפול בדקדוקים הרגולריים, והוכחת שקילותם לשפות הרגולריות • נתחיל בדוגמא של דקדוק ליניארי ימני G: (1,2) SaB | a (3,4) A aB | a (5) B  bA • להלן דוגמא לגזירת מילה:S  aB  abA  abaB  ababA  ababa

  31. הנחת האינדוקציה דקדוקים רגולריים – המשך דוגמא • נוכיח עתה כי עבור הדקדוק הנ"ל מתקיים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)

  32. 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 • תרגיל בית

  33. a q0 q2 b a q1 a, b מעבר מאס"ד לדקדוק רגולרי • אנו מבקשים להוכיח כי לכל אוטומט סופי קיים דקדוק רגולרי היוצר את שפת האוטומט. נמחיש את רעיון הבניה בדוגמא: • יהי M האוטומט הבא, נשים לב כי L(M) = ab* • אנו נבנה דקדוק כך שלכל מצב qiנתאים משתנה Viונקבע כללים שיקיימו V0 *xVid(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

  34. 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

  35. שקילות שפות רגולריות לדקדוקים רגולריים משפט • לכל שפה רגולרית L קיים דקדוק ליניארי ימני Gכך ש L(G) = L • בהמשך נוכיח שקילות בין הדקדוקים הליניאריים הימנים לשמאליים, לכן כעת נדון רק בימניים משפט עזר • כל תבנית פסוקית בדקדוק ליניארי ימני היא מהצורה wA או w כאשר A  V, w  T*

  36. שקילות שפות רגולריות לדקדוקים רגולריים (המשך 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. בשני המקרים קבלנו את הצורה המבוקשת

  37. שקילות שפות רגולריות לדקדוקים רגולריים (המשך 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

  38. שקילות שפות רגולריות לדקדוקים רגולריים (המשך 2) טענה • לכל w  S*,p *wq אמ"מ d(p, w) = q • הוכחה האינדוקציה על אורך המילה בכיוון אחד, ועל אורך הגזירה בכיוון השני • נסתמך על הטענה ע"מ להוכיח כי L(GM) = L • כיוון א' L  L(GM) • נניח כי y  L(M), y eונרשום y = xs, xS*,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

  39. שקילות שפות רגולריות לדקדוקים רגולריים (המשך 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

  40. שקילות שפות רגולריות לדקדוקים רגולריים (המשך 3) • נותר לטפל במקרה בו q0  F • במקרה זה e  L. במהלך ההוכחה הראנו למעשה כי L(GM) = L – {e} • נוסיף לדקדוק את הכלל q0  e אז eתהיה מילה הדקדוק החדש, וזאת המילה היחידה אותה כלל זה מוסיף. • מכאן – הדקדוק החדש מקיים L(GM) = L

  41. שקילות שפות רגולריות לדקדוקים רגולריים– כיוון ב' • נבנה עתה אוטומט סופי (לא דטרמיניסטי) עבור דקדוק ליניארי ימני נתון משפט • יהי G = (V, T, P, S) דקדוק ליניארי ימני. אז קיים אוטומט סופי MGמעל הא"ב T כך ש L(MG) = L(G) הוכחה • נבנה אוטומט סופי MGאשר בעת קריאת מילה x יבצע סימולציה של גזירת x ע"י הדקדוק G

  42. שקילות שפות רגולריות לדקדוקים רגולריים– כיוון ב' (המשך 1) • MG = (T, V  {qf}, S, {qf}, d), כלומר מצבי האוטומט הם משתני G בתוספת מצב חדש שישמש כמצב מקבל יחיד. המצב ההתחלתי יהיה המשתנה ההתחלתי של הדקדוק S. • פונקצית המעברים d: • לכל A,B V ולכל a  T , Bd(A,a) אמ"מ A aB  P • qf d(A,a) אמ"מ A a  P • qf d(S,e) אמ"מ S  e P

  43. שקילות שפות רגולריות לדקדוקים רגולריים– כיוון ב' (המשך 1) • להלן מספר טענות עזר הנובעות מהגדרת האוטומט: • לכל xe, S* xA אמ"מ Ad(S,x) • לכל xe, S* x אמ"מ qf d(S,x) • S =>e אמ"מ qf d(S, e) • טענה שלוש נובעת ישירות מההגדרה, טענות 1 ו-2 ניתנות להוכחה באינדוקציה על |x| בכיוון אחד, ובאינדוקציה על אורך הגזירה בכיוון השני (נוכיח כיוון אחד ב 1 כדוגמא) • מהטענות נובע מיד כי L(G) = L(MG)

  44. הוכחת טענת עזר 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, ומבניית האוטומט נקבל כי קיים כלל BaA • על שילוב שתי העובדות הנ"ל נוכל לרשום:S * xB xaA = yAכנדרש

  45. הוכחת טענת עזר 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)

  46. שקילות דקדוק ליניארי שמאלי וימני משפט • שפה Lנצרת ע"י דקדוק ליניארי ימני אמ"מ היא נוצרת ע"י דקדוק ליניארי שמאלי הוכחה • נניח כי L נוצרת ע"י דקדוק ליניארי ימני. לפי המשפט הקודם נובע מכך שL רגולרית. • מתכונות הסגירות של השפות הרגולריות נובע מכך שגם LRרגולרית, ולכן שוב לפי המשפט הקודם קיים דקדוק ליניארי ימני Grכך ש LR = L(Gr) • נתאים ל Grדקדוק ליניארי שמאלי Glכך: • לכל כלל מהצורה AaB ב Grנתאים כלל ABa ב Gl • כל הכללים מהצורה Aa ב Grיהיו גם כללים בGl

  47. שקילות דקדוק ליניארי שמאלי וימני (המשך 1) טענה • x  L(Gl) אמ"מ xR L(Gr) • הוכחה באינדוקציה על אורך הגזירה • עתה כיוון שלכל שפה מתקיים (LR)R = Lנקבל:L(Gl) = (L(Gr))R = (LR)R = L • כיוון ב' – התאמת דקדוק ליניארי ימני לדקדוק לינארי שמאלי – סימטרי לחלוטין

  48. דקדוק ליניארי ימני מורחב • דקדוק יקרא ליניארי ימני מורחב אם כל הכללים בו הם מהצורה A  w, AwB, כאשר 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 . • הדקדוק החדש הוא דקדוק לינארי ימני רגיל. כעת נותר להוכיח כי הוא שקול לדקדוק המורחב

  49. דקדוק ליניארי • דקדוק יקרא לינארי אמ"מ כל כלליו הם מהצורה: A w1Bw2 או A  wכאשר A  Vw,w1,w2 T* • נשים לב כי שפות הנוצרות ע"י דקדוק לינארי אינן בהכרח רגולריות. • לדוגמא – ראינו כי הדקדוק שכלליו הם: (1) S  aSb (2) S  ab יוצר את {anbn | n  1},וזו אינה שפה רגולרית • שימו לב כי הדקדוק הנ"ל הוא כמובן לינארי

  50. דקדוקים חופשיי-הקשר • נעבור כעת לסוג הדקדוקים המרכזי בחלק זה של הקורס • תזכורת – דקדוק הוא חפשי הקשר עם כל כלליו הם מהצורה A aכאשר a (VT)*, A V • אנו נגדיר בשלב זה באופן פורמלי את מושג עצי הגזירה שהינו מרכזי לדקדוקים חופשיי-ההקשר, ונבחן את ההתאמה שבין גזירה ספציפית לעץ גזירה המתאים לה

More Related