חומרי לימוד - מדעי המחשב
Transcription
חומרי לימוד - מדעי המחשב
ט"ז/טבת/תשע"ה שפות רגולריות שפה שניתן לבנות עבורה אוטומט סופי כלשהו המקבל אותה ,ורק אותה ,נקראת שפה רגולרית. שפות רגולריות -סיכום 1 שפות רגולריות וסופיות כלל סופיות ורגולריות שפה סופית שפה רגולרית. (הכיוון ההפוך אינו נכון ,שפה רגולרית לא בהכרח סופית) שפות רגולריות -סיכום 2 1 ט"ז/טבת/תשע"ה רגולריות של שפות – הוכחה איך מוכיחים באופן מלא ששפה היא: רגולרית (אחת מהדרכים ,לפי סדר עדיפות) – א- ב- ג- הוכחה שהשפה סופית (מספר תווים מקסימלי למילה) – כמובן ,רק עבור שפות סופיות. חלוקת השפה לשפות "קטנות" יותר (ציון במפורש מהן השפות) שפעולות עליהן יוצרות את השפה המקורית (להראות במפורש). על השפות "קטנות" יותר עדיין יש להוכיח שרגולריות ע"י א' ,ב' ,או ג'. בניית אוטומט סופי (מלא/לא מלא דטרמיניסטי/לא דטרמיניסטי) המקבל את השפה. לא רגולרית – קצת ארוך ,תבנית בעמוד 57 -בספר מודלים (מבט לחלונות). שפות רגולריות -סיכום 3 רגולריות של שפות – נימוק איך מנמקים (באופן לא מלא) ששפה היא: לא רגולרית – ע"י הסבר שישנה תלות אינסופית בין חלקי השפה .חייבים להראות בדיוק מהי התלות. למשל – עבור השפה – א"ב – }L1 = {anbn | n > 0}, {a, b השפה אינה רגולרית ,כיוון שישנה תלות אינסופית בין מספר ה a-בתחילת המילה למספר ה b-בסופה כך שהמספר חייב להיות זהה. שימו לב – נימוק ≠ הוכחה שפות רגולריות -סיכום 4 2 ט"ז/טבת/תשע"ה רגולריות של שפות – נימוק איך מנמקים (באופן לא מלא) ששפה היא: רגולרית – ע"י הסבר שמראה שאין תלות אינסופית בין חלקי השפה. למשל – עבור השפה – א"ב – }L2 = {anbm | n, m > 0}, {a, b השפה רגולרית ,כיוון שאין תלות אינסופית בין חלקי השפה. שימו לב – נימוק ≠ הוכחה שפות רגולריות -סיכום 5 שפות רגולריות – סגירות סגירות -שומר על התכונה -לעניין רגולריות הכלה (חלקיות) • כל המילים בשפה המוכלת גם בשפה המכילה • אין סגירות • הסבר L1 -רגולרית L1 L ,או L1 Lעדיין לא ידוע כלום לגבי L איחוד (או) • מספיק שעונה לתנאי אחת מהשפות • יש סגירות • הסבר L1, L2 -רגולריות L L1 L2 = L רגולרית חיתוך (וגם) • עונה לכל תנאי השפות • יש סגירות • הסבר L1, L2 -רגולריות L L1 L2 = L רגולרית שפות רגולריות -סיכום 6 3 ט"ז/טבת/תשע"ה שפות רגולריות – סגירות סגירות -שומר על התכונה -לעניין רגולריות משלים הופכי Reverse שרשור • לא בשפה המקורית • יש סגירות Lרגולרית • הסבר L -רגולרית ¯ • כל המילים הפוכות • יש סגירות • הסבר L -רגולרית R(L) רגולרית • כל המילים מהשפה הראשונה משורשות לכל המילים בשנייה • יש סגירות • הסבר L1, L2 -רגולריות L L1 L2 = L רגולרית שפות רגולריות -סיכום 7 שפות רגולריות – סגירות •אם השאלה היא רק האם השפה רגולרית ,מומלץ לבדוק האם ניתן לחלק אותה לרכיבים ולהיעזר בטבלת הסגירות לעניין רגולריות. שפות רגולריות -סיכום 8 4 ט"ז/טבת/תשע"ה שיטות לבניית אוטומטים לשפות מורכבות • ללא קשר ישיר לנושא הרגולריות (קשור רק להוכחות כללי הסגירות אותן אתם לא נדרשים להוכיח) ,בשקפים הבאים מתוארות השיטות לבניית אוטומטים לשפות מורכבות. יכול לעזור בבניית אוטומט. שפות רגולריות -סיכום 9 בניית אוטומט עבור שפת המשלים אם האוטומט אינו מלא – יש להופכו למלא. הפיכת כל מצב מקבל באוטומט המקורי ,למצב שאינו מקבל באוטומט החדש. הפיכת כל מצב שאינו מקבל באוטומט המקורי ,למצב מקבל באוטומט החדש. שפות רגולריות -סיכום 10 5 ט"ז/טבת/תשע"ה בניית אוטומט עבור שפת ההיפוך ()Reverse הפיכת כיוון כל החצים. המצב ההתחלתי הופך למצב מקבל. קבוצת המצבים המקבלים הופכת לקבוצת המצבים התחלתים. אם קבוצת המצבים ההתחלתיים כוללת יותר מאשר מצב אחד. יש ליצור מצב חדש -רק הוא יהיה מצב התחלתי. יש לשחזר כל המעברים שיצאו מקודם ממצבים שהיו התחלתיים. כלומר ,יש לשחזר כל אחת מהאפשרויות לעבור מהמצב שהיה התחלתי קודם למצבים אחרים ,כך שניתן יהיה לעבור מהמצב ההתחלתי החדש לכל המצבים שניתן היה להגיע אליהם מקודם עם אותו קלט. יתכן שעבור אוטומט דטרמיניסטי ,יתקבל אחרי התהליך אחד שאינו דטרמיניסטי. שפות רגולריות -סיכום 11 בניית אוטומט עבור שפת השרשור המצב ההתחלתי של השפה הראשונה הוא המצב ההתחלתי של האוטומט החדש. קבוצת המצבים המקבלים של השפה השניה היא קבוצת המצבים המקבלים של האוטומט החדש. מכל מצב שהיה מצב מקבל בשפה הראשונה ,יש ליצור מעברים חדשים ,כך שכל המעברים שיצאו ממנו יוכלו להגיע אל המצב שהיה המצב התחלתי בשפה השניה. כך שניתן יהיה לקרוא את כל מילות השרשור מהמצב ההתחלתי החדש ,ועד למצבים המקבלים החדשים. שפות רגולריות -סיכום 12 6 ט"ז/טבת/תשע"ה בניית אוטומט עבור שפת האיחוד (דרך ב') יצירת מצב התחלתי חדש. באופן לא דטרמיניסטי ,יש לשחזר עבור כל אחד משני המצבים ההתחלתיים של שני האוטומטים את כל המעברים שיצאו מהם. כלומר ,יש לשחזר כל אחת מהאפשרויות המעבר מהמצב שהיה התחלתי קודם (בכל אחד משני האוטומטים) לשכניו ,כך שניתן יהיה לעבור מהמצב ההתחלתי החדש לכל המצבים שניתן היה להגיע אליהם מקודם (בכל אחד משני האוטומטים) עבור אותה מילה. האוטומט החדש שיתקבל אחרי התהליך יהיה כמובן לא דטרמיניסטי. שפות רגולריות -סיכום 13 7