הומומורפיזם (שפות פורמליות)

בתורת השפות הפורמליות, הומומורפיזם הוא פונקציה המעבירה אותיות מא"ב אחד למילים מעל א"ב אחר. באופן פורמלי, בהינתן Σ , Δ {\displaystyle \Sigma ,\Delta } שני א"ב, הומומורפיזם הוא פונקציה h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} . נוכל להרחיב את מושג ההומומורפיזם למילים ואף לשפות. יהיו Σ , Δ {\displaystyle \Sigma ,\Delta } שני א"ב ויהי הומומורפיזם h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} . ההרחבה למילים של h {\displaystyle h} היא פונקציה h ^ : Σ ∗ → Δ ∗ {\displaystyle {\hat {h}}\colon \Sigma ^{*}\to \Delta ^{*}} (כלומר, מעבירה מילים מעל Σ {\displaystyle \Sigma } למילים מעל Δ {\displaystyle \Delta } ) המוגדרת באופן הבא: h ^ ( ε ) := ε h ^ ( w σ ) := h ^ ( w ) ⋅ h ( σ ) {\displaystyle {\begin{aligned}{\hat {h}}(\varepsilon )&:=\varepsilon \\{\hat {h}}(w\sigma )&:={\hat {h}}(w)\cdot h(\sigma )\end{aligned}}} נשים לב שנובע שאם w = σ 1 σ 2 … σ n ∈ Σ ∗ {\displaystyle w=\sigma _{1}\sigma _{2}\dots \sigma _{n}\in \Sigma ^{*}} אז מההגדרה h ^ ( w ) = h ( σ 1 ) h ( σ 2 ) … h ( σ n ) {\displaystyle {\hat {h}}(w)=h(\sigma _{1})h(\sigma _{2})\dots h(\sigma _{n})} , כלומר זהו שרשור המילים אליהן הועתקו אותיות המילה w {\displaystyle w} על ידי h {\displaystyle h} (וכן נובעת הטענה השימושית כי לכל w 1 , w 2 ∈ Σ ∗ {\displaystyle w_{1},w_{2}\in \Sigma ^{*}} מתקיים h ^ ( w 1 w 2 ) = h ^ ( w 1 ) ⋅ h ^ ( w 2 ) {\displaystyle {\hat {h}}(w_{1}w_{2})={\hat {h}}(w_{1})\cdot {\hat {h}}(w_{2})} ). אם לכל ε ≠ w ∈ Σ ∗ {\displaystyle \varepsilon \neq w\in \Sigma ^{*}} (כאשר ε {\displaystyle \varepsilon } המילה הריקה) מתקיים h ( w ) ≠ ε {\displaystyle h(w)\neq \varepsilon } אז נאמר ש- h ^ {\displaystyle {\hat {h}}} היא ε {\displaystyle {\boldsymbol {\varepsilon }}} -חופשית. ההרחבה לשפות של h {\displaystyle h} היא פונקציה h ^ ^ : 2 Σ ∗ → 2 Δ ∗ {\displaystyle {\hat {\hat {h}}}\colon 2^{\Sigma ^{*}}\to 2^{\Delta ^{*}}} (כלומר, מעבירה שפות מעל Σ {\displaystyle \Sigma } לשפות מעל Δ {\displaystyle \Delta } ) המוגדרת: h ^ ^ ( L ) := { h ^ ( w ) : w ∈ L } {\displaystyle {\hat {\hat {h}}}(L):=\left\{{\hat {h}}(w):w\in L\right\}} לכל שפה L ⊆ Σ ∗ {\displaystyle L\subseteq \Sigma ^{*}} . נעיר שפעמים רבות, כשההקשר ברור משמיטים את סימני הכובעים. ניתן דוגמה להומומורפיזם ולהרחבותיו. יהיו הא"ב Σ = { a , b } , Δ = { 0 , 1 , 2 } {\displaystyle \Sigma =\{a,b\},\Delta =\{0,1,2\}} . נגדיר הומומורפיזם h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} באופן הבא: h ( a ) = 012 , h ( b ) = 21 {\displaystyle h(a)=012,h(b)=21} . לכן, מתקיים למשל כי h ^ ( b b a ) = h ( b ) h ( b ) h ( a ) = 2121012 {\displaystyle {\hat {h}}(bba)=h(b)h(b)h(a)=2121012} . נעיין בשפה L = { a i b j : i , j ≥ 0 } {\displaystyle L=\{a^{i}b^{j}:i,j\geq 0\}} . אז h ^ ^ ( L ) = { h ^ ( a i b j ) : i , j ≥ 0 } = { ( h ( a ) ) i ( h ( b ) ) j : i , j ≥ 0 } = { ( 012 ) i ( 21 ) j : i , j ≥ 0 } {\displaystyle {\hat {\hat {h}}}(L)=\left\{{\hat {h}}(a^{i}b^{j}):i,j\geq 0\right\}=\{(h(a))^{i}(h(b))^{j}:i,j\geq 0\}=\{(012)^{i}(21)^{j}:i,j\geq 0\}} . משפחת השפות הרגולריות סגורה תחת הומומורפיזם. כלומר, בהינתן L ⊆ Σ ∗ {\displaystyle L\subseteq \Sigma ^{*}} רגולריות ו- h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} הומומורפיזם, השפה h ( L ) ⊆ Δ ∗ {\displaystyle h(L)\subseteq \Delta ^{*}} גם רגולרית. למעשה ניתן להראות משפט חזק יותר, והוא סגירות שפות רגולריות תחת הצבה רגולרית. באופן דומה, גם משפחת השפות החסרות-הקשר סגורה תחת הומומורפיזם, וניתן להראות שהיא אף סגורה תחת הצבה חסרת-הקשר. ניתן להגדיר הומומורפיזם הפוך. ההגדרה תהיה בהתאם להגדרת מקור תחת פונקציה. בהינתן הומומורפיזם h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} , ההומומורפיזם ההפוך שלו h − 1 : Δ ∗ → 2 Σ ∗ {\displaystyle h^{-1}\colon \Delta ^{*}\to 2^{\Sigma ^{*}}} יוגדר להיות: h − 1 ( w ) := { x ∈ Σ ∗ : h ( x ) = w } {\displaystyle h^{-1}(w):=\{x\in \Sigma ^{*}:h(x)=w\}} לכל w ∈ Δ ∗ {\displaystyle w\in \Delta ^{*}} . אם כן, h − 1 {\displaystyle h^{-1}} מעבירה כל מילה מעל Δ {\displaystyle \Delta } לשפה מעל Σ {\displaystyle \Sigma } . ניתן לבצע הרחבה לשפות (כלומר h − 1 : 2 Δ ∗ → 2 Σ ∗ {\displaystyle h^{-1}\colon 2^{\Delta ^{*}}\to 2^{\Sigma ^{*}}} ונשתמש באותו הסימון למען הנוחות) על ידי ההגדרה: h − 1 ( L ) = { w ∈ Σ ∗ : h ( w ) ∈ L } {\displaystyle h^{-1}(L)=\{w\in \Sigma ^{*}:h(w)\in L\}} לכל L ⊆ Δ ∗ {\displaystyle L\subseteq \Delta ^{*}} . כלומר כעת, h − 1 {\displaystyle h^{-1}} מעבירה כל שפה מעל Δ {\displaystyle \Delta } לשפה מעל Σ {\displaystyle \Sigma } . נעיר שבאופן שקול יכולנו גם להגדיר h − 1 ( L ) = ⋃ w ∈ L h − 1 ( w ) {\displaystyle h^{-1}(L)=\bigcup _{w\in L}h^{-1}(w)} . משפחת השפות הרגולריות סגורה תחת הומומורפיזם הפוך, וכן משפחת השפות החסרות-הקשר סגורה תחת הומומורפיזם הפוך. משפט: יהיו h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} הומומורפיזם ו- L ⊆ Δ ∗ {\displaystyle L\subseteq \Delta ^{*}} שפה רגולרית. אז גם h − 1 ( L ) {\displaystyle h^{-1}(L)} רגולרית. הוכחה: מכיוון ש- L {\displaystyle L} רגולרית, לפי ההגדרה קיים אוטומט סופי דטרמיניסטי A = ( Δ , Q , q 0 , F , δ ) {\displaystyle A=(\Delta ,Q,q_{0},F,\delta )} שמקבל אותה (משמע L ( A ) = L {\displaystyle L(A)=L} ). נבנה אוטומט סופי A ′ {\displaystyle A'} שמקבל את h − 1 ( L ) {\displaystyle h^{-1}(L)} , ומכאן שהיא רגולרית. רעיון הבניה הוא כדלהלן: בהינתן w ∈ Σ ∗ {\displaystyle w\in \Sigma ^{*}} , על מנת לקבוע את שייכותה ל- h − 1 ( L ) {\displaystyle h^{-1}(L)} , נרצה להפעיל סימולציה של A {\displaystyle A} על h ( w ) {\displaystyle h(w)} כדי לקבוע את שייכותה ל- L {\displaystyle L} (וזה יהיה אופן פעילות A ′ {\displaystyle A'} ). אז אם w = σ 1 σ 2 … σ n {\displaystyle w=\sigma _{1}\sigma _{2}\dots \sigma _{n}} , נרצה לבדוק האם h ( w ) = h ( σ 1 ) h ( σ 2 ) … h ( σ n ) ∈ L {\displaystyle h(w)=h(\sigma _{1})h(\sigma _{2})\dots h(\sigma _{n})\in L} . נרצה אם כן, שכאשר האוטומט A ′ {\displaystyle A'} נמצא במצב q ∈ Q {\displaystyle q\in Q} ומקבל אות קלט σ ∈ Σ {\displaystyle \sigma \in \Sigma } , הוא "יפעיל" סימולציה של A {\displaystyle A} מהמצב q {\displaystyle q} עם מילת הקלט h ( σ ) {\displaystyle h(\sigma )} . מהמוטיבציה לעיל, נגדיר את האוטומט הסופי דטרמיניסטי A ′ = ( Σ , Q , q 0 , F , δ ′ ) {\displaystyle A'=(\Sigma ,Q,q_{0},F,\delta ')} עם פונקציית המעברים δ ′ ( q , σ ) := δ ^ ( q , h ( σ ) ) {\displaystyle \delta '(q,\sigma ):={\hat {\delta }}(q,h(\sigma ))} לכל q ∈ Q {\displaystyle q\in Q} ו- σ ∈ Σ {\displaystyle \sigma \in \Sigma } . כרגיל במשפטים כאלו, יהיה נוח להוכיח טענת עזר: טענת עזר: מתקיים δ ′ ^ ( q 0 , w ) = δ ^ ( q 0 , h ( w ) ) {\displaystyle {\hat {\delta '}}(q_{0},w)={\hat {\delta }}(q_{0},h(w))} לכל w ∈ Σ ∗ {\displaystyle w\in \Sigma ^{*}} . הוכחת טענת העזר: באינדוקציה על מבנה w {\displaystyle w} . בסיס: אם w = ε {\displaystyle w=\varepsilon } נקבל כי δ ′ ^ ( q 0 , ε ) = q 0 = δ ^ ( q 0 , ε ) = δ ( q 0 , h ( ε ) ) {\displaystyle {\hat {\delta '}}(q_{0},\varepsilon )=q_{0}={\hat {\delta }}(q_{0},\varepsilon )=\delta (q_{0},h(\varepsilon ))} מהגדרת פונקציית המעברים המורחבת וכן מהגדרת ההומומורפיזם. למילים באורך 1 {\displaystyle 1} הטענה מתקיימת ישירות מהגדרתנו ל- δ ′ {\displaystyle \delta '} . צעד: נניח נכונות למילים באורך n {\displaystyle n} ונראה נכונות למילים באורך n + 1 {\displaystyle n+1} . תהי w = u σ ∈ Σ ∗ {\displaystyle w=u\sigma \in \Sigma ^{*}} כאשר | w | = n {\displaystyle |w|=n} . אז δ ′ ^ ( q 0 , w ) = δ ′ ^ ( q 0 , u σ ) = δ ′ ( δ ′ ^ ( q 0 , u ) , σ ) = δ ′ ( δ ^ ( q 0 , h ( u ) ) , σ ) = δ ^ ( δ ^ ( q 0 , h ( u ) ) , h ( σ ) ) = δ ^ ( q 0 , h ( u ) h ( σ ) ) = δ ^ ( q 0 , h ( u σ ) ) = δ ^ ( q 0 , h ( w ) ) {\displaystyle {\hat {\delta '}}(q_{0},w)={\hat {\delta '}}(q_{0},u\sigma )=\delta '({\hat {\delta '}}(q_{0},u),\sigma )=\delta '({\hat {\delta }}(q_{0},h(u)),\sigma )={\hat {\delta }}({\hat {\delta }}(q_{0},h(u)),h(\sigma ))={\hat {\delta }}(q_{0},h(u)h(\sigma ))={\hat {\delta }}(q_{0},h(u\sigma ))={\hat {\delta }}(q_{0},h(w))} (הסבר למעברים: מעבר (2) הוא מהגדרת פונקציית המעברים המורחבת; מעבר (3) הוא מהנחת האינדוקציה על u {\displaystyle u} ; מעבר (4) הוא מהגדרת δ ′ {\displaystyle \delta '} ; מעבר (5) הוא מהטענה δ ^ ( δ ^ ( q , w 1 ) , w 2 ) = δ ^ ( q , w 1 w 2 ) {\displaystyle {\hat {\delta }}({\hat {\delta }}(q,w_{1}),w_{2})={\hat {\delta }}(q,w_{1}w_{2})} ; מעבר (6) הוא מהגדרת ההומומורפיזם). ◼ {\displaystyle \blacksquare } נמשיך בהוכחה. נראה ש- L ( A ′ ) = h − 1 ( L ) {\displaystyle L(A')=h^{-1}(L)} . אכן w ∈ L ( A ′ ) ⇔ δ ′ ^ ( q 0 , w ) ∈ F ⇔ δ ^ ( q 0 , h ( w ) ) ∈ F ⇔ h ( w ) ∈ L ⇔ w ∈ h − 1 ( L ) {\displaystyle w\in L(A')\Leftrightarrow {\hat {\delta '}}(q_{0},w)\in F\Leftrightarrow {\hat {\delta }}(q_{0},h(w))\in F\Leftrightarrow h(w)\in L\Leftrightarrow w\in h^{-1}(L)} כנדרש (הסבר למעברים: (1) הגדרת קבלה על ידי אוטומט סופי דטרמיניסטי; (2) טענת העזר; (3) כמו (1); (4) הגדרת הומומורפיזם הפוך). ◼ {\displaystyle \blacksquare } משפט: יהיו h : Σ → Δ ∗ {\displaystyle h\colon \Sigma \to \Delta ^{*}} הומומורפיזם ו- L ⊆ Δ ∗ {\displaystyle L\subseteq \Delta ^{*}} שפה חסרת-הקשר. אז גם h − 1 ( L ) {\displaystyle h^{-1}(L)} חסרת-הקשר. רעיון ההוכחה: לא ניתן את ההוכחה המלאה, אך ניתן את הרעיון הכללי ובנייה. תהי L ⊆ Δ ∗ {\displaystyle L\subseteq \Delta ^{*}} שפה חסרת הקשר. אז קיים אוטומט מחסנית M = ( Q , Σ , Γ , δ , q 0 , ⊣ , F ) {\displaystyle M=(Q,\Sigma ,\Gamma ,\delta ,q_{0},\dashv ,F)} שמקבל אותה באמצעות מצבים מקבלים (כלומר L f ( M ) = L {\displaystyle L_{f}(M)=L} ). נבנה אוטומט מחסנית M ′ {\displaystyle M'} שמקבל את h − 1 ( L ) {\displaystyle h^{-1}(L)} , ולכן היא חסרת-הקשר. חשוב לשים לב שהאוטומט לא יכול לרוקן יותר מאות אחת מראש המחסנית בצעד אחד. לכן, בהינתן אות קלט σ ∈ Σ {\displaystyle \sigma \in \Sigma } , M ′ {\displaystyle M'} לא תמיד יוכל לסמלץ את M {\displaystyle M} עבור מילת הקלט h ( σ ) {\displaystyle h(\sigma )} בצעד אחד. ואמנם, השימוש במסעי- ε {\displaystyle \varepsilon } יבוא לעזרנו. כלומר, האוטומט M ′ {\displaystyle M'} יקרא אות קלט σ ∈ Σ {\displaystyle \sigma \in \Sigma } , יסמלץ את M {\displaystyle M} עם מילת הקלט h ( σ ) {\displaystyle h(\sigma )} בעזרת מסעי- ε {\displaystyle \varepsilon } , ואז יקרא עוד אות קלט ויפעל באופן זהה, עד אשר יסיים את קריאת המילה, ואז יגיע למצב מקבל. נגדיר את מצבי M ′ {\displaystyle M'} להיות Q ′ := Q × Δ ′ {\displaystyle Q':=Q\times \Delta '} כאשר Δ ′ {\displaystyle \Delta '} הוא אוסף כל המילים מעל Δ {\displaystyle \Delta } באורך לכל היותר max { | h ( σ ) | : σ ∈ Σ } {\displaystyle \max\{|h(\sigma )|:\sigma \in \Sigma \}} , כלומר האורך המקסימלי שייתכן לתת מילת קלט כלשהו ש- M ′ {\displaystyle M'} יצטרך לסמלץ. כלומר, זוג ( q , w ) ∈ Q ′ {\displaystyle (q,w)\in Q'} מייצג מצב q {\displaystyle q} בו M {\displaystyle M} נמצא, ויתרת מילה w {\displaystyle w} שעליו לקרוא. המצב ההתחלתי יהיה q 0 ′ := ( q 0 , ε ) {\displaystyle q_{0}':=(q_{0},\varepsilon )} (כי תחילה אין מילת קלט שעל M {\displaystyle M} לקרוא). המצבים המקבלים יהיו F ′ := F × { ε } {\displaystyle F':=F\times \{\varepsilon \}} כי על M {\displaystyle M} להגיע למצב מקבל, ואין עוד יתרת מילה שעליו לקרוא. אם כן, M ′ = ( Q ′ , Σ , Γ , δ ′ , ( q 0 , ε ) , ⊣ , F × { ε } ) {\displaystyle M'=(Q',\Sigma ,\Gamma ,\delta ',(q_{0},\varepsilon ),\dashv ,F\times \{\varepsilon \})} . נותרה הגדרת פונקציית המעברים. נגדיר אותה בהתאם למוטיבציה שלעיל: 1. קריאת אות קלט על ידי M ′ {\displaystyle M'} : δ ′ ( ( q , ε ) , σ , Z ) := { ( ( q , h ( σ ) ) , Z ) } {\displaystyle \delta '((q,\varepsilon ),\sigma ,Z):=\{((q,h(\sigma )),Z)\}} לכל q ∈ Q , σ ∈ Σ , Z ∈ Γ {\displaystyle q\in Q,\sigma \in \Sigma ,Z\in \Gamma } . 2. סימולציית M {\displaystyle M} - מסעי- ε {\displaystyle \varepsilon } : δ ′ ( ( q , τ w ) , ε , Z ) := { ( ( p , w ) , α ) : ( p , α ) ∈ δ ( q , τ , Z ) } {\displaystyle \delta '((q,\tau w),\varepsilon ,Z):=\{((p,w),\alpha ):(p,\alpha )\in \delta (q,\tau ,Z)\}} לכל q ∈ Q , Z ∈ Γ , τ ∈ Δ ∪ { ε } , w ∈ Σ ∗ {\displaystyle q\in Q,Z\in \Gamma ,\tau \in \Delta \cup \{\varepsilon \},w\in \Sigma ^{*}} (אם τ ∈ Δ {\displaystyle \tau \in \Delta } מסמלצים מעבר "רגיל" של M {\displaystyle M} , ואם τ = ε {\displaystyle \tau =\varepsilon } מסמלצים מסע- ε {\displaystyle \varepsilon } של M {\displaystyle M} ). זו בדיוק הבנייה שעונה לתיאור שנתנו. להמשך ההוכחה הפורמלית, כדאי להוכיח את טענת העזר הבאה, שמשקפת את אופן פעולת M ′ {\displaystyle M'} כפי שתיארנו: טענת עזר: לכל q , p ∈ Q , w ∈ Σ ∗ , α , β ∈ Γ ∗ {\displaystyle q,p\in Q,\,w\in \Sigma ^{*},\,\alpha ,\beta \in \Gamma ^{*}} , אם ( q , h ( w ) , α ) ⊢ M ∗ ( p , ε , β ) {\displaystyle (q,h(w),\alpha )\vdash _{M}^{*}(p,\varepsilon ,\beta )} אז ( ( q , ε ) , w , α ) ⊢ M ′ ∗ ( ( p , ε ) , ε , β ) {\displaystyle ((q,\varepsilon ),w,\alpha )\vdash _{M'}^{*}((p,\varepsilon ),\varepsilon ,\beta )} . כעת, כל שנותר להראות הוא ש- L f ( M ′ ) = h − 1 ( L ) {\displaystyle L_{f}(M')=h^{-1}(L)} . שמואל זקס ונסים פרנסיז, אוטומטים ושפות פורמליות, האוניברסיטה הפתוחה, 2001 שפות רגולריות - תכונות סגור (חלק ב') בבלוג "לא מדויק" ערך זה הוא יתום, כלומר אין ערכים בוויקיפדיה שמקשרים אליו. אתם מוזמנים לתרום לוויקיפדיה ולקשר אליו מכמה מהערכים שמכילים את המונח "הומומורפיזם (שפות פורמליות)".