הנושאים שנעבור שפות פורמאליות אוטומטים שפות פורמאליות מכונות/אוטומטים דקדוקים תורת הקומפילציה אהרון נץ מבוסס על השקפים של עומר ביהם שמבוססים על שקפי הרצאה מהקורס אוטומטים ושפות פורמאליות בטכניון, פרופ' שמואל זקס 1 2 אוניברסיטת חיפה - חורף 2009 - מילה הגדרות הגדרות אות אלף בית, - אלף בית Σ,הינו קבוצה סופית כלשהי. דוגמאות: Σ1 = {a,b,c} Σ2 = {0,1} Σ3= {(x,y) x {0,1}, y {a,b,c}} אות σ Σ,הינה איבר מתוך א"ב נתון. מילה מעל א"ב Σ הינה סידרה סופית של אותיות. סימון מקובל w דוגמאות: {a} היא מילה מעל aaa {&,%,#,$,1,3,d} היא מילה מעל 1313d3$$# {(x,y) x {1,2,3}, y {a,b,c}} היא מילה מעל (2,c)(1,b)(3,a) 3 אוניברסיטת חיפה - חורף 2009 4 אוניברסיטת חיפה - חורף 2009
- שרשור מילים מילה הגדרות תהי.w=s1,s2, sn נסמן את אורכה ב- w, כלומר w =n מילה שאינה מכילה שום אות נקראת המילה הריקה נסמן ב את המילה הריקה. 0= בהנתן שתי מילים w1=a1a2 an, w2=b1b2 bm שרשור מילים (concatenation) מוגדר כהדבקת המילה השנייה למילה הראשונה זו לזו (חשיבות לסדר) w1 w2 = a1 a2 anb1b2 bm שרשור המילים "פר" ו "פר" נותן "פרפר" באותו אופן,שרשור המילים "אינ" ו "טל" נותן "אינטל" 5 אוניברסיטת חיפה - חורף 2009 6 אוניברסיטת חיפה - חורף 2009 שפות פורמאליות חזקה והיפוך חזקה של מילה w w i =, if i = 0 w i = w i-1 w, otherwise יותר אינטואיטיבי w n = ww w (n times) היפוך של מילה w מסומן w R אם w=a1a2 an אז w R = anan-1 a1 שפה פורמאלית L, מעל א"ב Σ היא קבוצת מילים מעל אותו א"ב. דוגמאות לשפות מעל א"ב Σ={a,b} {a}, {aaab,b} {w #a(w) = #b(w) }, {a n b n n N } {}, {}, 7 אוניברסיטת חיפה - חורף 2009 8 אוניברסיטת חיפה - חורף 2009
פעולות על שפות שפה הופכית L R = {w R w L} L R שרשור של שפות L1 L2 L1 L2 = {w v w L1, v L2} L i = {}, if i = 0 L i = L i-1 L, otherwise חזקה של שפה L i פעולות על שפות איחוד של שפות,L1 L2 מעל א"ב Σ L1 U L2 = {w w L1 U w L2} סגור קלין של שפה L, המסומן L, מוגדר כשרשור של 0 או יותר עותקים של L L מוגדר כשרשור של 1 או יותר עותקים של +L, את שפת המילים מעל א"ב Σ מסמנים Σ 9 אוניברסיטת חיפה - חורף 2009 10 אוניברסיטת חיפה - חורף 2009 דוגמא אוטומטים אוטומט אבסטרקציה למערכת המגיבה לקלטים. קלט סופי, בקרה סופית, מעבר יחיד. אופן הפעולה: בכל שלב האוטומט נמצא באחד המצבים (התחלה מצב התחלתי) עם קריאת אות קלט, ה"ראש הקורא" מתקדם לאות הקלט הבאה, והאוטומט משנה את מצבו כתלות (פונקציה של) במצב הנוכחי, ואות הקלט פלט האוטומט מוגדר ע"י מצב האוטומט בסיום קריאת הקלט 11 אוניברסיטת חיפה - חורף 2009 12 אוניברסיטת חיפה - חורף 2009
המשך - אינטואיציה אוטומט סופי הינו מודל מופשט המגיב לקלטים. תגובתו לקלטים (הפלט) מוגדר ע"י סוג המצב אליו מגיע האוטומט בסיום קריאת הקלט. אנו מגדירים שני סוגי מצבים: מצבים מקבלים. מצבים לא מקבלים. מכאן שאוטומט יכול להגיב באחת משתי צורות: לקבל מילה. לדחות מילה. תגובתו של אוטומט לאות קלט הינה פונקציה של המצב הנוכחי ואות הקלט הנוכחית. פונקציה זו קובעת מצב יחיד אליו האוטומט הדטרמיניסטי יעבור. c - Q0 Q1 Q2 אוטומט סופי הצגה ע"י טבלת מעברים הטבלה מגדירה פונקציה δ : QХΣ Q אשר בהנתן קלט של זוג (מצב ומילה) מחזירה מצב חדש. המצב החדש לאו דווקא שונה! b a Q0 Q1 Q0 Q1 Q2 Q1 Q2 Q2 Q2 13 אוניברסיטת חיפה - חורף 2009 14 אוניברסיטת חיפה - חורף 2009 - השפה המתקבלת ע"י אוטומט אוטומט סופי דטרמיניסטי הגדרה פורמאלית אוטומט סופי דטרמיניסטי הינו החמישייה A=(Q,Σ,q0,δ,F) {...,q2,q={q0,,q1 קבוצה סופית של מצבים,Σ={a,b,...} א"ב הקלט (קבוצה סופית של סימנים), q0 המצב ההתחלתי היחיד δ : QХΣ Q : פונקצית המעברים, δ δ(q,σ)=p q p באופן כללי,,δ(q,w)=p כאשר w היא מילה, q המצב לפני קריאת המילה, ו- p המצב בסיום קריאת המילה ע"י האוטומט F={q0, q3,...} Q קבוצת מצבים סופיים/מקבלים - F בהינתן אוטומט סופי דטרמיניסטי A, שפת האוטומט L(A) היא קבוצת המילים המתקבלת על ידו L(A) := {w Σ δ(q 0,w) F} בכל שלב האוטומט נמצא באחד המצבים (התחלה מצב התחלתי) עם קריאת אות קלט, ה"ראש הקורא" מתקדם לאות הקלט הבאה, והאוטומט משנה את מצבו כתלות (פונקציה של) במצב הנוכחי, ואות הקלט פלט האוטומט מוגדר ע"י מצב האוטומט בסיום קריאת הקלט. 15 אוניברסיטת חיפה - חורף 2009 16 אוניברסיטת חיפה - חורף 2009
- אי דטרמיניזם השפה המתקבלת ע"י אוטומט הוכחה ע"מ להוכיח כי אוטומט A מקבל שפה L, יש להוכיח כי L(A) = L עושים זאת בדרך כלל באינדוקציה באופן הבא: כיוון א של ההכלה L(A) L אינדוקציה על מספר צעדי החישוב של האוטומט כיוון ב של ההכלה L(A) L אינדוקציה על אורך המילה (או מבנה המילה) עד כה, עבור מילה נתונה, מעבר האוטומט בתגובה לקריאת אות היה מוגדר באופן חד-ערכי ניתן להגדיר את פעולת האוטומט כאי-דטרמיניסטית כלומר בתגובה לקריאת אות, או אפילו בלי - מעבר, יתכנו מספר מעברים (כולל 0) דוגמא למסע 17 אוניברסיטת חיפה - חורף 2009 18 אוניברסיטת חיפה - חורף 2009 אי דטרמיניזם דוגמא אי דטרמיניזם - הכוונה במסע היא לכך שהאוטומט עובר ממצב q ל p ללא קריאת אף אות קלט. ניתן להסתכל על מסעי כעל מעבר האוטומט בין האותיות, לצורך התארגנות מחודשת אנו נאמר שמילה מתקבלת ע"י אוטומט אי-דטרמיניסטי אמ"מ קיים עבורה חישוב המוביל למצב מקבל. נתבונן בשפה {0,1}} {w1 w L = להלן אוטומט סופי דטרמיניסטי המקבל אותה להלן אוטומט סופי אי-דטרמיניסטי (לאותה השפה) 19 אוניברסיטת חיפה - חורף 2009 20 אוניברסיטת חיפה - חורף 2009
- שקילות המודלים אוטומט סופי דטרמיניסטי הגדרה פורמאלית אוטומט סופי דטרמיניסטי הינו החמישייה A=(Q,Σ,q0,δ,F) {...,q2,q={q0,,q1 קבוצה סופית של מצבים,Σ={a,b,...} א"ב הקלט (קבוצה סופית של סימנים), q0 המצב ההתחלתי היחיד δ : QХΣ 2 Q : פונקצית המעברים, δ באופן כללי,,δ(q,w)=P כאשר w היא מילה, q המצב לפני קריאת המילה, ו- P קבוצת המצבים האפשריים בסיום קריאת המילה ע"י האוטומט F={q0, q3,...} Q קבוצת מצבים סופיים/מקבלים - F השינוי היחיד לעומת האוטומט הדטרמיניסטי שאלה מרכזית שמעניינת אותנו בעת הצגת מודל חישובי חדש היא מה כוחו ביחס למודלים שאנו מכירים. משמעות השאלה: האם קיימות שפות שמודל אחד יכול לקבל והשני לא? מסתבר כי שני השינויים שהוצגו, אי-דטרמיניזם ומסעי אינם משנים את הכוח החישובי של האוטומט 21 אוניברסיטת חיפה - חורף 2009 22 אוניברסיטת חיפה - חורף 2009 שפות רגולריות שפות רגולריות ראינו כי אוטומט סופי דטרמיניסטי מזהה (מקבל) שפות מעל א"ב נתון חלק משאלות בהן נתעניין האם קיימת שפה שאס"ד אינו מסוגל לזהותה? אילו תכונות יש לקבוצת השפות אותן יכול אס"ד לקבל? אילו מודלים נוספים קיימים המקבלים את אותה קבוצת שפות? שפה L נקראת רגולרית אמ"מ קיים עבורה אס"ד A, כך ש L(A) = L השפה הריקה,,היא רגולרית. השפה המכילה את המילה הריקה, {є},היא רגולרית. 23 אוניברסיטת חיפה - חורף 2009 24 אוניברסיטת חיפה - חורף 2009
- סגירות השפות הרגולריות לפעולות שפות רגולריות דוגמאות לכל σ Σ השפה {σ} רגולרית. לכל Σ w השפה {w} רגולרית השפות הרגולריות סגורות תחת חיתוך. השפות הרגולריות סגורות תחת השלמה. השפות הרגולריות סגורות תחת איחוד. כל שפה סופית היא רגולרית. השפות הרגולריות אינן סגורות תחת איחוד אינסופי. השפות הרגולריות אינן סגורות תחת חיתוך אינסופי. 25 אוניברסיטת חיפה - חורף 2009 26 אוניברסיטת חיפה - חורף 2009 ביטויים רגולרים ביטויים רגולרים השפות הרגולריות ניתנות לתיאור ע"י בניית אוטומט, וכן ע"י סימוני קבוצות רגילים כלומר תיאור תכונות שונות של המילים השייכות לקבוצה באמצעות תיאור כקבוצה ניתן כמובן לתאר גם שפות שאינן רגולריות, לדוגמא: 0} i L = {a i b i הוכחת רגולריות של שפה דורשת מציאת אוטומט המקבל אותה, או שימוש בתכונות סגירות נציג עתה דרך נוספת לתיאור שפות רגולריות. דרך סימון זו מבטיחה כי כל שפה הניתנת לתיאור באמצעותה היא רגולרית ההגדרה הבאה היא תחבירית בלבד, אין לה משמעות אוסף הביטויים הרגולרים (מעל א"ב, Σ) המסומן, R מוגדר באינדוקציית מבנה באופן הבא: אטומים:, R σ Σ, σ R פעולות יצירה: r1, r2 R => (r1+r2) R and (r1 r2) R r R => (r) R 27 אוניברסיטת חיפה - חורף 2009 28 אוניברסיטת חיפה - חורף 2009
ביטויים רגולרים לכל ביטוי רגולרי r נתאים משמעות: שפה L[r] L[ ] =, L[] = { }, σ Σ, L[σ] = {σ} r1, r2 R L[(r1 + r2)] = L[r1] L[r2] L[(r1 r2)] = L[r1] L[r2] r R L[(r)] = (L[r]) שקילות ביטויים רגולריים לאוטומטים נזכור כי המוטיבציה להגדרת ביטויים רגולריים הייתה לתת צורת ייצוג (נוספת) לשפות רגולריות. שני המשפטים הבאים מתקיימים: לכל r R מתקיים כי L(R) היא שפה רגולרית לכל שפה רגולרית L קיים ביטוי רגולרי r כך ש L[r] = L דוגמא: שפת המילים הזוגיות מעל {a,b} מתאימה לביטוי הרגולרי (a+b)) ((a+b) 29 אוניברסיטת חיפה - חורף 2009 30 אוניברסיטת חיפה - חורף 2009 בניית אוטומט מביטוי רגולרי בניית אוטומט מביטוי רגולרי r=0 r=0 0 0 31 אוניברסיטת חיפה - חורף 2009 32 אוניברסיטת חיפה - חורף 2009
בניית אוטומט מביטוי רגולרי בניית אוטומט מביטוי רגולרי r=0 r=01 0 0 1 r=1 1 33 אוניברסיטת חיפה - חורף 2009 34 אוניברסיטת חיפה - חורף 2009 בניית אוטומט מביטוי רגולרי בניית אוטומט מביטוי רגולרי r=01 r=01+10 0 1 0 1 1 0 r=10 1 0 35 אוניברסיטת חיפה - חורף 2009 36 אוניברסיטת חיפה - חורף 2009
דוגמאות לביטויים רגולריים ומשמעותם משמעות השפה המוגדרת היא קבוצת בת 2 מילים a b השפה אותה הוא מייצג הביטוי הרגולרי a+b (a+b) (a+b) a (a+b) {a,b} {aa,ab,ba,bb} {є,a,aa,aaa,...} {a, b, ab, aaab, bbb, baabab,...} כיוון שלשרשור יש עדיפות גבוהה יותר מאופרטור "או", השפה המוגדרת מכילה מילים שהם שרשור של 2 אותיות. השפה המתקבלת היא השפה המכילה את כל המילים שמתקבלות ע"י שרשור של 0 או יותר פעמים של a שפת כל המילים שיש בהן a או b 37 אוניברסיטת חיפה - חורף 2009