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

בתורת השפות הפורמליות, משפט מייהיל-נרוד הוא משפט אשר מספק אפיון של משפחת השפות הרגולריות ומסייע להבנת המבנה של האוטומט המינימלי אשר מקבל אותן. המשפט נקרא על שם אניל נרוד וג'ון מייהיל אשר הוכיחו אותו בשנת 1958. המשפט מתבסס על יחס שקילות המוגדר בצורה הבאה: בהינתן שפה L {\displaystyle L} מעל אלפבית Σ {\displaystyle \Sigma } , היחס R L {\displaystyle R_{L}} מוגדר מעל Σ ∗ {\displaystyle \Sigma ^{*}} בצורה הבאה: x R L y {\displaystyle xR_{L}y} אם ורק אם לכל z ∈ Σ ∗ {\displaystyle z\in \Sigma ^{*}} המילים x z , y z {\displaystyle xz,yz} שייכות שתיהן לשפה L {\displaystyle L} או ששתיהן אינן שייכות לשפה L {\displaystyle L} . כלומר: x R L y ⇔ ∀ z ∈ Σ ∗ ( x z ∈ L ⇔ y z ∈ L ) {\displaystyle xR_{L}y\Leftrightarrow \forall z\in \Sigma ^{*}(xz\in L\Leftrightarrow yz\in L)} . מילה z ∈ Σ ∗ {\displaystyle z\in \Sigma ^{*}} שאינה מקיימת תנאי זה נקראת מילה מפרידה או זנב מפריד בין x , y {\displaystyle x,y} . משפט מייהיל-נרוד אומר כי מספר המצבים המינימלי באוטומט סופי דטרמיניסטי אשר מקבל את L {\displaystyle L} הוא כמספר מחלקות השקילות של R L {\displaystyle R_{L}} . בפרט, אם קיימות אינסוף מחלקות שקילות לא קיים אוטומט שכזה, ולכן השפה אינה רגולרית. המשפט גם מתאר את מבנה האוטומט המינימלי המקבל את השפה במקרה שמספר מחלקות השקילות הוא סופי, ומספק דרך קונסטרוקטיבית לבנות אוטומט כזה במקרה שמחלקות השקילות ידועות לנו: מצבי האוטומט יהיו מחלקות השקילות (כשהמצב ההתחלתי הוא [ ϵ ] {\displaystyle \left[\epsilon \right]} ), המצבים המקבלים יהיו מחלקות שמיוצגות בידי מילים השייכות לשפה L {\displaystyle L} ופונקציית המעברים של האוטומט תוגדר על ידי δ ( [ x ] , a ) = [ x a ] {\displaystyle \delta (\left[x\right],a)=\left[xa\right]} (קל להראות כי פונקציה זו מוגדרת היטב). עבור שפת כל המילים שאורכן זוגי (כולל אורך אפס), קיימות עבור היחס R L {\displaystyle R_{L}} בדיוק שתי מחלקות שקילות - מחלקה אחת היא קבוצת כל המילים מאורך זוגי, והמחלקה השנייה היא קבוצת כל המילים מאורך אי זוגי. כדי לראות זאת די לשים לב כי אם הזוגיות של אורך המילים x , y {\displaystyle x,y} זהה, היא נותרת כזו גם כאשר מוסיפים לשתיהן סיפא z {\displaystyle z} כלשהי. לכן, עבור כל שתי מילים בעלות זוגיות זהה מתקיים היחס R L {\displaystyle R_{L}} . (ועבור מילים בעלות זוגיות שונה, לא מתקיים היחס). מכאן ניתן גם ללמוד שהאוטומט המינימלי שמקבל את השפה מכיל שני מצבים, שהראשון שבהם הוא מקבל, והאוטומט מחליף מצב עם כל אות שהוא קורא. ישנן מספר הוכחות לכך שהשפה L = { a n b n | n ∈ N } {\displaystyle L=\left\{a^{n}b^{n}|n\in \mathbb {N} \right\}} אינה רגולרית. הוכחה המתבססת על משפט נרוד מראה כי עבור היחס R L {\displaystyle R_{L}} קיימות אינסוף מחלקות שקילות. לשם כך אין צורך למצוא את כל מחלקות השקילות או לכתוב אותן במפורש, אלא די להציג קבוצה אינסופית של מילים כך שאין שתי מילים מתוכה הנמצאות באותה מחלקת שקילות. בהקשר של השפה הנוכחית, קבוצה כזו היא למשל { a , a 2 , a 3 , … , } {\displaystyle \left\{a,a^{2},a^{3},\dots ,\right\}} . כדי לראות זאת די להראות כי עבור m , n {\displaystyle m,n} שרירותיים השונים זה מזה, a n {\displaystyle a^{n}} ו- a m {\displaystyle a^{m}} אינם שייכים לאותה מחלקת שקילות - כלומר, קיימת מילה z {\displaystyle z} שמפרידה בינן. דוגמה למילה z {\displaystyle z} שכזו היא z = b n {\displaystyle z=b^{n}} , שכן a n z = a n b n ∈ L {\displaystyle a^{n}z=a^{n}b^{n}\in L} ואילו a m z = a m b n ∉ L {\displaystyle a^{m}z=a^{m}b^{n}\notin L} . אם מספר מחלקות השקילות של R L {\displaystyle R_{L}} הוא סופי, האוטומט שהוצג לעיל שמצביו הם מחלקות השקילות של R L {\displaystyle R_{L}} מקבל את L {\displaystyle L} . כדי לראות זאת די להוכיח באינדוקציה כי לאחר קריאת המילה w {\displaystyle w} האוטומט יגיע למצב [ w ] {\displaystyle [w]} . מכיוון שהמצבים המקבלים הוגדרו בתור המחלקות שמיוצגות על ידי המילים ששייכות לשפה, ומכיוון שאם במחלקה יש מילה השייכת לשפה כל המילים בה שייכות לשפה, הדבר מבטיח את נכונות האוטומט. מינימליות מספר המצבים של האוטומט הזה מתבססת על שימוש ביחס שקילות נוסף. בהינתן אוטומט כלשהו A {\displaystyle A} , היחס R A {\displaystyle R_{A}} מתקיים עבור כל שתי מילים שקריאתן מביאה את האוטומט לאותו המצב. כלומר: x R A y ⇔ δ ^ ( q 0 , x ) = δ ^ ( q 0 , y ) {\displaystyle xR_{A}y\Leftrightarrow {\hat {\delta }}(q_{0},x)={\hat {\delta }}(q_{0},y)} . מספר מצבי האוטומט A {\displaystyle A} הוא לפחות כמספר מחלקות השקילות של היחס R A {\displaystyle R_{A}} , כי לכל מצב שניתן להגיע אליו באוטומט ניתן להתאים מחלקת שקילות שנציגתה היא מילה שמביאה את האוטומט למצב זה. אם L {\displaystyle L} היא שפה רגולרית ו- A {\displaystyle A} אוטומט כלשהו שמקבל אותה, ניתן להראות כי היחס R A {\displaystyle R_{A}} מעדן את היחס R L {\displaystyle R_{L}} , כלומר R A ⊆ R L {\displaystyle R_{A}\subseteq R_{L}} . מכך נובע שמספר מחלקות השקילות של R L {\displaystyle R_{L}} קטן ממספר מחלקות השקילות של R A {\displaystyle R_{A}} . בפרט, הוא סופי, ומספר מצבי האוטומט שמושרה על ידי R L {\displaystyle R_{L}} קטן או שווה למספר מצבי האוטומט A {\displaystyle A} . האבחנה לפיה R A ⊆ R L {\displaystyle R_{A}\subseteq R_{L}} נובעת מכך שאם x R A y {\displaystyle xR_{A}y} אז לאחר קריאת שתי המילים יגיע האוטומט A {\displaystyle A} לאותו מצב, ועל כן לכל סיפא z {\displaystyle z} שקורא האוטומט לאחר מכן הוא יגיע גם כן לאותו מצב. כלומר, האוטומט יחזיר תשובה זהה על x z {\displaystyle xz} ועל y z {\displaystyle yz} לכל z {\displaystyle z} , ועל כן x R L y {\displaystyle xR_{L}y} . שמואל זקס ונסים פרנסיז, ‏אוטומטים ושפות פורמליות א, האוניברסיטה הפתוחה, 2000, עמ' 249-287 גדי אלכסנדרוביץ', משפט מייהיל-נרוד, באתר "לא מדויק", 11 בפברואר 2015 גדי אלכסנדרוביץ, משפט נרוד, מתוך הרצאה בקורס "אוטומטים ושפות פורמליות", טכניון, 2018