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