אוטומטים ושפות פורמליות/תכונות של שפות רגולריות/משפט מיהיל-נרוד: הבדלים בין גרסאות בדף

תוכן שנמחק תוכן שנוסף
LaelN (שיחה | תרומות)
LaelN (שיחה | תרומות)
 
שורה 43:
 
האוטומט מוגדר באופן הבא:
* מצבי האוטומט הינם מחלקות השקילות השונות של L.
* המצב ההתחלתי הינו <math>[\epsilon]</math>.
* פונקציית המעברים מוגדרת על ידי <math>\delta([x],a)=[xa]</math>, לכל אות <math>a\in \Sigma</math> ולכל מחלקת שקילות <math>[x]\in Q</math>.{{ש}}:חשוב לציין כי פונקציה זו מוגדרת היטב מכיוון שמדובר במחלקות שקילות.: לא ייתכן ששתי מילים <math>x,y</math> נמצאות באותה מחלקת שקילות, ואילו אם נשרשר אות נוספת <math>z</math> נקבל שתי מחלקות שקילות שונות <math>[xz]\ne[yz]</math>, מכיוון שאם כך, הרי <math>z</math> הינה '''מילה מפרידה''', בסתירה לכך ש-<math>x,y</math> שייכות לאותה מחלקת שקילות.
* מצב מקבל הוא כל מצב <math>[x]</math> עבור מילה בשפה, <math>x\in L</math>.
 
נוכיח שהאוטמטשהאוטומט לעיל מקבל את השפה <math>L</math>. עובדה זו נובעת מטענת העזר הבאה:{{ש}}
===== טענה: טענת עזר =====
לאחר עיבוד המילה <math>w</math>, האוטומט נמצא במצב <math>[w]</math>.
 
{{הוכחה|
שורה 56:
# בסיס: <math>n=0</math>, המכונה מתחילה במצב <math>[\epsilon]</math> על פי הגדרתה, ולכן הטענה מתקיימת.
# צעד: נניח כי טענת העזר מתקיימת עבור מילים באורך <math>n=k</math>, ונראה כי מתקיימת למילים באורך <math>n=k+1</math>. תהי המילה <math>w=w_1w_2\ldots w_kw_{k+1}</math> קלט האוטומט. לפי הנחת האינדוקציה, לאחר עיבוד <math>w_1\ldots w_k</math> המכונה נמצאת במצב <math>[w_1\ldots w_k]</math>, כעת מתבצע המעבר <math>\delta([w_1\ldots w_k],w_{k+1}) </math> שעל-פי הגדרת האוטומט מוביל את המכונה למצב <math>[w]</math> כנדרש.}}
מכיוון שכל מילה <math>x\in L</math> הניתנת כקלט לאוטמטלאוטומט מובילה אותו למצב <math>[x]</math> ומצב זה הינו מצב מקבל לפי ההגדרה, הרי שהמכונה מקבלת את כל המילים ב-<math>L</math>, כלומר הראינו כי <math>L\subseteq L(M)</math>.
 
הכיוון השני קל להוכחה: אם מילה מסויימת <math>x</math> מתקבלת על-ידי האוטומט, אזי המצב <math>[x]</math> הוא מצב מקבל. נניח בשלילה ש<math>x\notin L</math>, אזי קיימת מילה <math>y\in L</math> כך ש<math>[y]=[x]</math> (אחרת לא ייתכן ש<math>[x]</math> הוא מצב מקבל, בהתאם להגדרת המצבים המקבלים). אבל, זו סתירה, מכיוון שהמילה <math>z=\epsilon</math> הינה מילה מפרידה בין <math>x,y</math>, כי <math>yz\in L</math> ואילו <math>xz \notin L</math>. מכאן נובע כי <math>L(M)\subseteq L</math>.
 
לסיום, נראה שהמכונה הנ"ל הינה '''מינימלית''', כלומר בעלת מספר המצבים הקטן ביותר האפשרי.
לשם כך נעשה שימוש ביחס שקילות נוסף (בדומה למה שהוסבר בפסקה "הרעיון הכללי"). בהינתן אוטומט כלשהו <math>\ A</math>, היחס <math>\ R_A</math> המוגדר מעל <math>\ \Sigma^*</math> מוגדר כך ששתי מילים נמצאות באותה מחלקת שקילות אם קריאתן מביאה את האוטומט לאותו המצב. מספר מצבי האוטומט <math>\ A</math> הוא לפחות כמספר מחלקות השקילות של היחס <math>\ R_A</math>, כי לכל מצב שניתן להגיע אליו באוטומט ניתן להתאים מחלקת שקילות שנציגתה היא מילה שמביאה את האוטומט למצב זה.
 
אם <math>\ L</math> היא שפה רגולרית ו-<math>\ A</math> אוטומט כלשהו עבורה, ניתן להראות כי היחס <math>\ R_A</math> מעדן את היחס <math>\ R_L</math>, כלומר <math>\ R_A\subseteq R_L</math>. מכך נובע שמספר מחלקות השקילות של <math>\ R_L</math> קטן ממספר מחלקות השקילות של <math>\ R_A</math> - בפרט, הוא סופי, ומספר מצבי האוטומט שמושרה על ידי <math>\ R_L</math> קטן או שווה למספר מצבי האוטומט <math>\ A</math>. [כדי למנוע בלבול, נדגיש כי ככל שהיחס מכיל יותר אלמנטים, יש בו פחות מחלקות שקילות. למשל, אם היחס הוא מקסימלי <math>R = A \times A</math>, אזי יש בו רק מחלקת שקילות אחת! כלל שמספר מחלקות השקילות גדל, יש יותר אברים שנמצאים בשתי מחלקות שונות, ולכן היחס <math>R</math> יהיה תת-קבוצה קטנה יותר.].
 
האבחנה לפיה <math>\ R_A\subseteq R_L</math> נובעת מכך שאם <math>\ xR_A y</math> אז לאחר קריאת שתי המילים יגיע האוטומט <math>\ A</math> לאותו מצב, ועל כן לכל סיפא <math>\ z</math> שקורא האוטומט לאחר מכן הוא יגיע גם כן לאותו מצב. כלומר, האוטומט יחזיר תשובה זהה על <math>\ xz</math> ועל <math>\ yz</math> לכל <math>\ z</math>, ולכן <math>xR_Ly</math>, לפי הגדרה.