משפט מייהיל-נרוד

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

בתורת השפות הפורמליות, משפט מייהיל-נרוד הוא משפט אשר מספק אפיון של מחלקת השפות הרגולריות ומסייע להבנת המבנה של האוטומט המינימלי אשר מקבל אותן. המשפט נקרא על שם אניל נרוד וג'ון מייהיל אשר הוכיחו אותו בשנת 1958.

ניסוח פורמלי[עריכת קוד מקור | עריכה]

המשפט מתבסס על יחס שקילות המוגדר בצורה הבאה: בהינתן שפה \ L מעל אלפבית \ \Sigma, היחס \ R_L מוגדר מעל \ \Sigma^* בצורה הבאה: \ xR_L y אם ורק אם לכל \ z\isin\Sigma^* המילים \ xz, yz שייכות שתיהן לשפה \ L או ששתיהן אינן שייכות לשפה \ L. מילה שאינה מקיימת תנאי זה נקראת מילה המפרידה בין \ x,y.

משפט נרוד אומר כי מספר המצבים המינימלי באוטומט סופי דטרמיניסטי אשר מקבל את \ L הוא כמספר מחלקות השקילות של \ R_L. בפרט, אם קיימות אינסוף מחלקות שקילות לא קיים אוטומט שכזה, ולכן השפה אינה רגולרית. המשפט גם מתאר את מבנה האוטומט המינימלי המקבל את השפה במקרה שמספר מחלקות השקילות הוא סופי, ומספק דרך קונסטרוקטיבית לבנות אוטומט כזה במקרה שמחלקות השקילות ידועות לנו: מצבי האוטומט יהיו מחלקות השקילות (כשהמצב ההתחלתי הוא \ \left[\epsilon\right]), המצבים המקבלים יהיו מחלקות שמיוצגות בידי מילים השייכות לשפה \ L ופונקציית המעברים של האוטומט תוגדר על ידי \ \delta(\left[x\right],a)=\left[xa\right] (קל להראות כי פונקציה זו מוגדרת היטב).

דוגמאות[עריכת קוד מקור | עריכה]

שפה רגולרית[עריכת קוד מקור | עריכה]

עבור שפת כל המילים שאורכן זוגי (כולל אורך אפס), קיימות עבור היחס \ R_L בדיוק שתי מחלקות שקילות - מחלקה אחת היא קבוצת כל המילים מאורך זוגי, והמחלקה השנייה היא קבוצת כל המילים מאורך אי זוגי. כדי לראות זאת די לשים לב כי אם הזוגיות של אורך המילים \ x,y זהה, היא נותרת כזו גם כאשר מוסיפים לשתיהן סיפא \ z כלשהי. לכן, עבור כל שתי מילים בעלות זוגיות זהה מתקיים היחס \ R_L. (ועבור מילים בעלות זוגיות שונה, לא מתקיים היחס).

מכאן ניתן גם ללמוד שהאוטומט המינימלי שמקבל את השפה מכיל שני מצבים, שהראשון שבהם הוא מקבל, והאוטומט מחליף מצב עם כל אות שהוא קורא.

שפה שאינה רגולרית[עריכת קוד מקור | עריכה]

ישנן מספר הוכחות לכך שהשפה \ L=\left\{a^nb^n|n\isin\mathbb{N}\right\} אינה רגולרית. הוכחה המתבססת על משפט נרוד מראה כי עבור היחס \ R_L קיימות אינסוף מחלקות שקילות. לשם כך אין צורך למצוא את כל מחלקות השקילות או לכתוב אותן במפורש, אלא די להציג קבוצה אינסופית של מילים כך שאין שתי מילים מתוכה הנמצאות באותה מחלקת שקילות.

בהקשר של השפה הנוכחית, הקבוצה הזו היא \ \left\{a,a^2,a^3,\dots,\right\}. כדי לראות זאת די להראות כי עבור \ m,n שרירותיים השונים זה מזה, \ a^n ו-\ a^m אינם שייכים לאותה מחלקת שקילות - כלומר, קיימת מילה \ z שמפרידה בינן. דוגמה למילה \ z שכזו היא \ z=b^n, שכן \ a^nz=a^nb^n\isin L ואילו \ a^mz=a^mb^n\notin L.

רעיון ההוכחה[עריכת קוד מקור | עריכה]

אם מספר מחלקות השקילות של \ R_L הוא סופי, האוטומט שהוצג לעיל שמצביו הם מחלקות השקילות של \ R_L מקבל את \ L. כדי לראות זאת די להוכיח באינדוקציה כי לאחר קריאת המילה \ w האוטומט יגיע למצב \ \left[w\right]. מכיוון שהמצבים המקבלים הוגדרו בתור המחלקות שמיוצגות על ידי המילים ששייכות לשפה, ומכיוון שאם במחלקה יש מילה השייכת לשפה כל המילים בה שייכות לשפה, הדבר מבטיח את נכונות האוטומט.

מינימליות מספר המצבים של האוטומט הזה מתבססת על שימוש ביחס שקילות נוסף. בהינתן אוטומט כלשהו \ A, היחס \ R_A מתקיים עבור כל שתי מילים שקריאתן מביאה את האוטומט לאותו המצב. מספר מצבי האוטומט \ A הוא לפחות כמספר מחלקות השקילות של היחס \ R_A, כי לכל מצב שניתן להגיע אליו באוטומט ניתן להתאים מחלקת שקילות שנציגתה היא מילה שמביאה את האוטומט למצב זה.

אם \ L היא שפה רגולרית ו-\ A אוטומט כלשהו עבורה, ניתן להראות כי היחס \ R_A מעדן את היחס \ R_L, כלומר \ R_A\subseteq R_L. מכך נובע שמספר מחלקות השקילות של \ R_L קטן ממספר מחלקות השקילות של \ R_A - בפרט, הוא סופי, ומספר מצבי האוטומט שמושרה על ידי \ R_L קטן או שווה למספר מצבי האוטומט \ A.

האבחנה לפיה \ R_A\subseteq R_L נובעת מכך שאם \ xR_A y אז לאחר קריאת שתי המילים יגיע האוטומט \ A לאותו מצב, ועל כן לכל סיפא \ z שקורא האוטומט לאחר מכן הוא יגיע גם כן לאותו מצב. כלומר, האוטומט יחזיר תשובה זהה על \ xz ועל \ yz לכל \ z, ועל כן \ xR_L y.

לקריאה נוספת[עריכת קוד מקור | עריכה]