חזור לתיקייה: 02340129 - מבוא לתורת הקבוצות ואוטומטים למדמח

2 - אוטומטים

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • הקדמה - מהי בעיה חישובית
  • שפות ומילים
  • פעולות על מילים ושפות
  • שרשור מילים
  • חזקה של מילים
  • שרשור שפות
  • חזקה של שפות
  • אוטומטים
  • אוטומט סופי
  • דטרמיניסטי
  • פונקציית המעברים המורחבת
  • שפות רגולריות
  • תכונות של שפות רגולריות
  • סגירות תחת השלמה.
  • סגירות תחת חיתוך
  • סגירות תחת איחוד
  • 3.1 איחוד סופי
  • שפות לא רגולריות
  • שיטות להוכחת רגולריות או אי-רגולריות של שפות
  • למת הניפוח לשפות רגולריות
  • משפט מייהיל-נרוד
  • יחס מייהיל-נרוד של שפה L
  • המשפט
  • דגשים
  • אי-דטרמיניסטי
  • שימושי NFA
  • בניות בעזרת NFA
  • הוכחת סגירות רגולריות להיפוך
  • מעברי \epsilon
  • שימושים למעברי \epsilon
  • ביטויים רגולריים
  • המשמעות של ביטויים רגולריים
  • שקילות בין שפות רגולריות וביטויים רגולריים

2 - אוטומטים

02340129

מבוא לתורת הקבוצות ואוטומטים למדמח

רשימות הרצאה לקריאה בשבת

אוטומטים

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

הקדמה - מהי בעיה חישובית

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

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

  • אוסף פקודות(פעולות אריתמטיות , לולאות, תנאים והשמות).
  • זכרון שעומד לרשותנו.

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

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

הגדרה (בעיית הכרעה)

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

שפות ומילים

הגדרה 1 (א"ב)

א"ב הוא קבוצה סופית ולא ריקה של אותיות, כאשר אותיות הן פשוט סימנים.

Σ1={0,1}\Sigma_{1}=\left\{ 0,1 \right\}Σ1​={0,1} Σ2={0,1,…,9}\Sigma_{2}=\left\{ 0,1,\dots,9 \right\}Σ2​={0,1,…,9} Σ3={a,b,c}\Sigma_{3}=\left\{ a,b,c \right\}Σ3​={a,b,c}
הגדרה 2 (מילה)

מילה מעל א"ב Σ\SigmaΣ היא רצף סופי של אותיות מתוך Σ\SigmaΣ.

0110 היא מילה מעל Σ1\Sigma_{1}Σ1​ (וגם מעל Σ2\Sigma_{2}Σ2​)
המילה ababbc היא מעל Σ3\Sigma_{3}Σ3​.

באופן פורמלי, ניתן לכתוב כי 0110 זו בעצם הרביעיה הסדורה (0,1,1,0)∈Σ14(0,1,1,0)\in\Sigma_{1}^4(0,1,1,0)∈Σ14​.

הגדרה 3 (המילה הריקה)

מעל כל א"ב מוגדרת המילה הריקה שהיא רצף באורך 0. נסמנו ε\epsilonε.

דוגמה

האורך של abbaabbaabba הוא 4 (∣abba∣=4|abba|=4∣abba∣=4).
האורך של bbb הוא 1.
האורך של ε\epsilonε הוא 0.

הגדרה 4 (שפה)

שפה מעל Σ\SigmaΣ היא קבוצת מילים מעל Σ\SigmaΣ.

דוגמה

L1={0,00,001}L_{1}=\left\{ 0,00,001 \right\}L1​={0,00,001}

L1L_{1}L1​ היא שפה מעל Σ1\Sigma_{1}Σ1​ או Σ2\Sigma_{2}Σ2​.

L2={w∣Σ2 מעל w זוגי, ∣w∣}L_{2}=\left\{ w|\Sigma_{2}\R{\text{ מעל }}w\R{\text{ זוגי, }}|w| \right\}L2​={w∣Σ2​ מעל w זוגי, ∣w∣}

נראה כמה איברים: L2={ε,00,01,02,03,… }L_{2}=\left\{ \epsilon ,00,01,02,03,\dots \right\}L2​={ε,00,01,02,03,…} - היא ∞\infty∞-ית..

L3=∅L_{3}=\emptysetL3​=∅

השפה הריקה מעל כל א"ב.

L4={w∣w∈Σ3}L_{4}=\left\{ w|w \in \Sigma_{3} \right\}L4​={w∣w∈Σ3​} L4={ε,a,b,c,aa,ab,… }L_{4}=\left\{ \epsilon,a,b,c,aa,ab,\dots \right\}L4​={ε,a,b,c,aa,ab,…}
הערה

נסמן שפה שבה יש את כל המילים מא"ב מסויים כ-Σ∗\Sigma^*Σ∗.

הערה

ε\epsilonε יכולה להיות שייכת או לא שייכת לשפה מסויימת.
נראה כי ε∉L1,ε∉L3,ε∈L2,L4\epsilon \not\in L_{1},\epsilon \not\in L_{3},\epsilon \in L_{2},L_{4}ε∈L1​,ε∈L3​,ε∈L2​,L4​.

פעולות על מילים ושפות

שרשור מילים

הגדרה 5 (שרשור מילים)

עבור u=σ1…σku=\sigma_{1}\dots\sigma_{k}u=σ1​…σk​ ו-v=σ1′…σm′v=\sigma_{1}'\dots\sigma_{m}'v=σ1′​…σm′​ השרשור שלהן הוא:

u⋅v=σ1…σkσ1′…σm′u \cdot v=\sigma_{1}\dots\sigma_{k}\sigma_{1}'\dots\sigma_{m}'u⋅v=σ1​…σk​σ1′​…σm′​
הערה

נשים לב כי הפעולה אינה קומוטטיבית, שכן:

aba⋅bc=ababcaba \cdot bc =ababcaba⋅bc=ababc bc⋅aba=bcababc \cdot aba = bcababc⋅aba=bcaba

נשים לב גם כי האדיש השרשורי הינו המילה הריקה - ε\epsilonε.

חזקה של מילים

הגדרה 6 (חזקה של מילים)

עבור מילה www נאמר כי:

wi=w⋅w⋅ … ⋅w פעמים iw^i=\underbracket{w\cdot w\cdot\ \dots\ \cdot w}_{\R{\text{ פעמים }}i}wi= פעמים iw⋅w⋅ … ⋅w​

פורמלית נכתוב כי לכל w∈Σ∗w \in\Sigma^*w∈Σ∗ מתקיים w0=εw^0=\epsilonw0=ε ו-

∀i∈N+:  wi=wi−1⋅w\forall i \in \mathbb{N}^+:\; w^{i}=w^{i-1} \cdot w∀i∈N+:wi=wi−1⋅w
דוגמה

(ab)3=(ab)2ab=ababab(ab)^3=(ab)^2ab=ababab(ab)3=(ab)2ab=ababab

שרשור שפות

הגדרה 7 (שרשור שפות)

יהיו L1,L2L_{1},L_{2}L1​,L2​ שפות מעל Σ\SigmaΣ.

L1⋅L2={u⋅v∣u∈L1∧v∈L2}L_{1}\cdot L_{2}=\left\{ u \cdot v|u \in L_{1} \land v \in L_{2} \right\}L1​⋅L2​={u⋅v∣u∈L1​∧v∈L2​}
דוגמה

{a,ab}⋅{bbc,ε,a}={abbc,a,aa,abbc,ab,aba}\left\{ a,ab \right\}\cdot \left\{ bbc,\epsilon,a \right\}=\left\{ abbc,a,aa,abbc,ab,aba \right\}{a,ab}⋅{bbc,ε,a}={abbc,a,aa,abbc,ab,aba}
הערה

לכל שפה LLL מתקיים:

L⋅∅=∅L \cdot \emptyset = \emptysetL⋅∅=∅

ונראה כי:

L⋅{ε}=LL\cdot \left\{ \epsilon \right\}=LL⋅{ε}=L

זוהי גם פעולה לא קומוטטיבית, שכן הסדר של האותיות במילה תלוי במילים בכל שפה.

חזקה של שפות

הגדרה 8 (חזקה של שפות)

לכל שפה LLL מעל א"ב Σ\SigmaΣ מתקיים:

L0={ε}∀i∈N+:  Li=Li−1⋅LL^0=\left\{ \epsilon \right\} \qquad \forall i \in \mathbb{N}^+:\; L^i=L^{i-1}\cdot LL0={ε}∀i∈N+:Li=Li−1⋅L

כלומר: Li=L⋅L⋅ … ⋅LiL^i=\underbracket{L\cdot L\cdot\ \dots\ \cdot L}_{i}Li=iL⋅L⋅ … ⋅L​

דוגמה

{a,bb}2={abb,aa,bbbb,bba}\left\{ a,bb \right\}^2=\left\{ abb,aa,bbbb,bba \right\}{a,bb}2={abb,aa,bbbb,bba}

אוטומטים

אוטומט סופי

דטרמיניסטי

נניח ונרצה לכתוב תוכנית שקלט שלה הוא מערך מעל Σ={a,b}\Sigma=\left\{ a,b \right\}Σ={a,b} והיא מחזירה TRUE ⇔ מספר אותיות aaa הוא אי-זוגי.
איך נעשה זאת?

  • נקצה מונה ccc מאותחל ל-0
  • נסרוק את המערך משמאל לימין. בכל מעבר על aaa נבצע c++c++c++.
  • נחזיר c%2c\%2c%2.

נשים לב כי אנו לא באמת זקוקים למונה, אלא רק למשתנה בוליאני שיגיד לנו אם מספר ה-aaa-ים הוא זוגי או לא. בכל איטרציה, אם נקבל aaa נבצע t=!tt=!tt=!t.
נשים לב כי התוכנית הזו מאוד פשוטה ונוכל לצייר את אופן הפעולה שלה כך:

כאשר אנו מגיעים לעיגול כפול בסוף התוכנית, אזי נקבל truetruetrue, אחרת, נקבל falsefalsefalse - נקרא למצב זה מצב מקבל.

הגדרה (הגדרה לא פורמלית לאוטומט סופי דטרמיניסטי)

אוטומט סופי דטרמיניסטי מייצג תוכנית פשוטה שהקלט שלה הוא מילה מעל Σ\SigmaΣ.
הריצה שלה מתחילה במצב התחלתי, קוראת את המילה אות לאחר אות ומתקדמת בהתאם במעברים.
הפלט שלה בסוף הקריאה הוא true/falsetrue/falsetrue/false בהתאם לסוג המצב(מקבל/לא מקבל - דוחה) שבו היא נמצאת.

הגדרה 9 (אוטומט סופי דטרמיניסיטי - DFA)

תהי קבוצת מצבים Q≠∅Q\neq \emptysetQ=∅ וסופית, כאשר בה קיים מצב התחלתי q0∈Qq_{0}\in Qq0​∈Q. תהי גם את קבוצת המצבים המקבלים: F⊆QF \subseteq QF⊆Q.
נגדיר פונקציה δ:Q×Σ→Q\delta:Q\times\Sigma\to Qδ:Q×Σ→Q אשר מספר לנו לאן לעבור בכל מצב ועם כל אות.
נגדיר את האוטומט הסופי הדטמיניסיטי AAA להיות:

A=(Q,Σ,q0,δ,F)A=(Q,\Sigma,q_{0},\delta,F)A=(Q,Σ,q0​,δ,F)

כעת נרצה לתאר כיצד האוטומט עובד.

הגדרה 10 (ריצה של אוטומט על מילה)

ריצה של AAA מעל w=σ1σ2…σkw=\sigma_{1}\sigma_{2}\dots\sigma_{k}w=σ1​σ2​…σk​ מעל Σ\SigmaΣ תהא סדרה מהצורה:

s0⟶σ1s1⟶σ2s2…⟶σksks0…sk∈Q,s0=q0s_{0}\overset{\sigma_{1}}{\longrightarrow}s_{1}\overset{\sigma_{2}}{\longrightarrow}s_{2}\dots \overset{\sigma_{k}}{\longrightarrow}s_{k} \qquad s_{0}\dots s_{k}\in Q, s_{0}=q_{0}s0​⟶σ1​​s1​⟶σ2​​s2​…⟶σk​​sk​s0​…sk​∈Q,s0​=q0​

ולכל 0≤i<k0\leq i<k0≤i<k מתקיים δ(si,σi+1)=si+1\delta(s_{i},\sigma_{i+1})=s_{i+1}δ(si​,σi+1​)=si+1​.

נניח בריצה של האוטומט שראינו ממקודם על aba:

t0⟶at1⟶bt1⟶at0t_{0}\overset{a}{\longrightarrow}t_{1}\overset{b}{\longrightarrow}t_{1}\overset{a}{\longrightarrow}t_{0}t0​⟶a​t1​⟶b​t1​⟶a​t0​
הגדרה 11 (ריצה מקבלת)

ריצה נקראת מקבלת אם sk∈Fs_{k}\in Fsk​∈F, אחרת, תקרא דוחה.
נניח למילה www והאוטומט AAA נגיד ש-AAA מקבלת את www או ש-AAA דוחה את www.

דוגמה

בריצה על המילה abaabaaba נגיד כי AAA דוחה את abaabaaba אך AAA מקבלת את aaaaaaaaa.

הגדרה 12 (שפה של אוטומט)

השפה של AAA היא קבוצת כל המילים ש-AAA מקבל.

דוגמה

בדוגמה שלנו:

L(A)={w∈{a,b}∗∣#a(w) mod 2=0}L(A)=\left\{ w \in \left\{ a,b \right\}^*|\#_{a}(w)\bmod 2=0 \right\}L(A)={w∈{a,b}∗∣#a​(w)mod2=0}

כאשר #a(w)\#_{a}(w)#a​(w) הוא מספר מופעי aaa במילה www.

פונקציית המעברים המורחבת

הגדרה 13 (הפונקציה δ\deltaδ מעל מילים)

נרחיב את δ\deltaδ כך שתספר לכל מצב(qqq) ולכל מילה, לאיזה מצב האוטמט יגיע בקריאת המילה מ-qqq.
לכל w∈Σ∗w \in \Sigma^*w∈Σ∗ ולכל מצב qqq:

δ∗(q,ε)=q\delta^*(q,\epsilon)=qδ∗(q,ε)=q

לכל מילה מהצורה w=uσw=u\sigmaw=uσ כאשר uuu היא מילה ו-σ\sigmaσ היא אות, נגדיר:

δ∗(q,uσ)=δ(δ∗(q,u),σ)\delta^*(q,u\sigma)=\delta(\delta^*(q,u),\sigma )δ∗(q,uσ)=δ(δ∗(q,u),σ)
דוגמה

δ∗(t1,ab)=δ(δ∗(t1,a),b)=δ(δ(δ∗(t1,ε),a),b)=δ(δ(t1,a),b)=δ(t0,b)=t0\delta^*(t_{1},ab)=\delta(\delta^*(t_{1},a),b)=\delta(\delta(\delta^*(t_{1},\epsilon),a),b)=\delta(\delta(t_{1},a),b)=\delta(t_{0},b)=t_{0}δ∗(t1​,ab)=δ(δ∗(t1​,a),b)=δ(δ(δ∗(t1​,ε),a),b)=δ(δ(t1​,a),b)=δ(t0​,b)=t0​
למה (השרשור)

δ∗(q,u∘v)=δ∗(δ∗(q,u),v)\delta^*(q,u \circ v)=\delta^*(\delta^*(q,u),v)δ∗(q,u∘v)=δ∗(δ∗(q,u),v)

רעיון ההוכחה: נובע באינדוקציה מהגדרת פונקצית המעברים המורחבת.

שפות רגולריות

הגדרה 14 (השפה של האוטומט)

L(A)={w∈Σ∗∣δ∗(q0,w)∈F}L(A)=\left\{ w \in\Sigma^*|\delta^*(q_{0},w) \in F \right\}L(A)={w∈Σ∗∣δ∗(q0​,w)∈F}
הגדרה 15 (שפה רגולרית)

שפה מעל Σ\SigmaΣ נקראת רגולרית אם קיים DFA  ADFA\; ADFAA כך ש-L(A)=LL(A)=LL(A)=L.
כלומר, אפשר לבנות DFADFADFA ש-LLL היא שפתו.

נסתכל על כמה שפות ונראה אם הן רגולריות או לא.

טענה

יהי Σ\SigmaΣ א"ב.
Σ∗\Sigma^*Σ∗ רגולרית.

הוכחה:
נציג DFA A1A_{1}A1​ כך ש-L(A1)=Σ∗L(A_{1})=\Sigma^*L(A1​)=Σ∗.

כעת, נוכיח כי השפה של האוטומט היא Σ∗\Sigma^*Σ∗.
לכל w∈Σ∗w \in\Sigma^*w∈Σ∗: δ∗(q0,w)=q0\delta^*(q_{0},w)=q_{0}δ∗(q0​,w)=q0​ כי q0q_{0}q0​ הוא המצב היחיד באוטומט.

w∈Σ∗  ⟺  δ∗(q0,w)=q0  ⟺  w∈L(A1)w \in \Sigma^* \iff \delta^*(q_{0},w) = q_{0} \iff w \in L(A_{1})w∈Σ∗⟺δ∗(q0​,w)=q0​⟺w∈L(A1​)

לכן, מתקיימת הכלה דו כיוונית בין השפה של האוטומט ל-Σ∗\Sigma^*Σ∗ ולכן, זוהי השפה של האוטומט.
∎

טענה

יהי Σ\SigmaΣ א"ב.
∅\emptyset∅ רגולרית.

הוכחה:
נציג DFA A2A_{2}A2​ כך ש-L(A2)=∅L(A_{2})=\emptysetL(A2​)=∅.

נראה כי:
לכל w∈Σ∗w \in\Sigma^*w∈Σ∗: δ∗(q0,w)=w0\delta^*(q_{0},w)=w_{0}δ∗(q0​,w)=w0​. q0q_{0}q0​ דוחה, ולכן לכל w∈Σ∗w \in \Sigma^*w∈Σ∗ מתקיים w∉L(A2)w \not\in L(A_{2})w∈L(A2​). ⇐ L(A2)=∅L(A_{2})=\emptysetL(A2​)=∅.
∎

הגדרה 16 (רישא)

רישא של www היא מילה xxx כך שקיימת מילה yyy כך ש-x∘y=wx \circ y=wx∘y=w.

דוגמה

נחמן.
רישות:
\qquad א. נ
\qquad ב. נח
\qquad ג. נחמ
\qquad ד. נחמן
\qquad ה. ε\epsilonε

טענה

יהי Σ\SigmaΣ א"ב.
תהי w=σ1σ2…σnw=\sigma_{1}\sigma_{2}\dots\sigma_{n}w=σ1​σ2​…σn​ מילה מעל Σ\SigmaΣ. אז {w}\left\{ w \right\}{w} רגולרית.

דוגמה

{abb}\left\{ abb \right\}{abb} רגולרית.

הערה

נקרא ל-q4q_{4}q4​ בור דוחה.
קיים גם בור מקבל אשר מרגע שמגיעים אליו, לא משנה מה מכניסים המילה מתקבלת.

הוכחה:
עבור www כללית:

Aw=({q0,…,qn}∪{q⊥},q0,δ,{qn})A_{w}=(\left\{ q_{0},\dots,q_{n} \right\}\cup \left\{ q_{\perp} \right\},q_{0},\delta,\left\{ q_{n} \right\})Aw​=({q0​,…,qn​}∪{q⊥​},q0​,δ,{qn​})

כאשר לכל qiq_{i}qi​, 0≤i≤n0\leq i\leq n0≤i≤n מתקיים:

δ(qi,σi+1)=qi+1\delta(q_{i},\sigma_{i+1})=q_{i+1}δ(qi​,σi+1​)=qi+1​

ולכל σ=σi+1\sigma=\sigma_{i+1}σ=σi+1​ מתקיים:

δ(qi,σ)=q⊥\delta(q_{i},\sigma)=q_{\perp}δ(qi​,σ)=q⊥​

לכל σ∈Σ\sigma \in\Sigmaσ∈Σ:

δ(qn,σ)=δ(q⊥,σ)=q⊥\delta(q_{n},\sigma)=\delta(q_{\perp},\sigma)=q_{\perp}δ(qn​,σ)=δ(q⊥​,σ)=q⊥​

הוכחת נכונות הבנייה:

שיעורי בית (HW)

נסו להוכיח באינדוקציה את שני הסעיפים הבאים.
הוכחה חסרה פה!

לכן, לכל u∈Σ∗u \in\Sigma^*u∈Σ∗:

  • אם uuu היא הרישא באורך iii של www: δ∗(q0,u)=qi\delta^*(q_{0},u)=q_{i}δ∗(q0​,u)=qi​.
  • אם uuu אינה רישא של www: δ∗(q0,u)=q⊥\delta^*(q_{0},u)=q_{\perp}δ∗(q0​,u)=q⊥​

לכן, המילה היחידה שמגיעה ל-qnq_{n}qn​ היא www, שכן היא רישא באורך nnn של www.
מכיוון ש-qnq_{n}qn​ הוא המצב המקבל היחיד:

L(Aw)={w}L(A_{w})=\left\{ w \right\}L(Aw​)={w}

∎

תכונות של שפות רגולריות
1. סגירות תחת השלמה.
הגדרה 17 (המשלים לשפה)

המשלים לשפה היא קבוצת כל המילים שלא נמצאים בשפה:

L‾=Σ∗∖L\overline{L}=\Sigma^* \setminus LL=Σ∗∖L
משפט

שפות רגולריות סגורות תחת השלמה.

רעיון ההוכחה:
נחליף בין המצבים המקבלים לדוחים ב-DFA עבור LLL.

הוכחה:
השפה LLL רגולרית ולכן קיים DFA AAA כך ש-L(A)=LL(A)=LL(A)=L.

A=(Q,Σ,q0,δ,F)A=(Q,\Sigma,q_{0},\delta,F)A=(Q,Σ,q0​,δ,F)

נגדיר:

A′=(Q,Σ,q0,δ,Q∖FF′)A'=(Q,\Sigma,q_{0},\delta,\underbracket{Q \setminus F}_{F'})A′=(Q,Σ,q0​,δ,F′Q∖F​)

נראה כי L(A′)=L‾L(A')=\overline{L}L(A′)=L.

w∈L(A′)  ⟺  ↓DFAהגדרת δ∗(q0,w)∈Q′  ⟺  δ∗(q0,w)∈Q∖F  ⟺  ↓A′הגדרת w∉L(A)w \in L(A') \underset{\begin{matrix} \downarrow \\ DFA\R{\text{הגדרת }} \end{matrix}}{\iff} \delta^*(q_{0},w) \in Q' \iff \delta^*(q_{0},w) \in Q \setminus F\underset{\begin{matrix} \downarrow \\ A'\R{\text{הגדרת }} \end{matrix}}{\iff} w \not\in L(A)w∈L(A′)↓DFAהגדרת ​⟺​δ∗(q0​,w)∈Q′⟺δ∗(q0​,w)∈Q∖F↓A′הגדרת ​⟺​w∈L(A)

ולכן, L(A′)=L(A)‾=L‾L(A')=\overline{L(A)}=\overline{L}L(A′)=L(A)​=L.
∎

2. סגירות תחת חיתוך
משפט

חיתוך של שתי שפות רגולריות סגורה תחת חיתוך.

דוגמה

כעת, נבנה את האוטומט AAA:

נוכיח כי אם L1,L2L_{1},L_{2}L1​,L2​ רגולריות, אזי L1∩L2L_{1} \cap L_{2}L1​∩L2​ רגולרית.
הוכחה:
יהיו:

A1=(Q,Σ,q0,δ1,F1)A_{1}=(Q,\Sigma,q_{0},\delta_{1},F_{1})A1​=(Q,Σ,q0​,δ1​,F1​) A2=(P,Σ,p0,δ2,F2)A_{2}=(P,\Sigma,p_{0},\delta_{2},F_{2})A2​=(P,Σ,p0​,δ2​,F2​)

כעת, נגדיר אוטומט סופי דטרמיניסטי AAA:

A=(Q×P,Σ,(q0,p0),δ,F1×F2)A=(Q \times P,\Sigma,(q_{0},p_{0}),\delta,F_{1}\times F_{2})A=(Q×P,Σ,(q0​,p0​),δ,F1​×F2​)

ונגדיר: לכל q∈Q,p∈P,σ∈Σq \in Q,p \in P,\sigma \in \Sigmaq∈Q,p∈P,σ∈Σ:

δ((q,p),σ)=(δ1(q,σ)q′,δ2(p,σ)p′)\delta((q,p),\sigma)=(\underbracket{\delta_{1}(q,\sigma)}_{q'},\underbracket{\delta_{2}(p,\sigma)}_{p'})δ((q,p),σ)=(q′δ1​(q,σ)​,p′δ2​(p,σ)​)

הוכחת נכונות:

טענה (טענת עזר)

לכל (q,p)(q,p)(q,p) ולכל w∈Σ∗w \in \Sigma^*w∈Σ∗:

δ∗((q,p),w)=(δ1∗(q,w)q′,δ2∗(p,w)p′)\delta^*((q,p),w)=(\underbracket{\delta_{1}^*(q,w)}_{q'},\underbracket{\delta_{2}^*(p,w)}_{p'})δ∗((q,p),w)=(q′δ1∗​(q,w)​,p′δ2∗​(p,w)​)

נוכיח זאת באמצעות אינדוקציה על www:

  • בסיס: w=εw=\epsilonw=ε.
δ∗((q,p),ε)=(q,p)=(δ1∗(q,ε),δ2∗(p,ε))\delta^*((q,p),\epsilon)=(q,p)=(\delta_{1}^*(q,\epsilon),\delta_{2}^*(p,\epsilon))δ∗((q,p),ε)=(q,p)=(δ1∗​(q,ε),δ2∗​(p,ε))
  • צעד:

נניח כי הטענה נכונה עבור www ונוכיח כי זה מתקיים עבור wσw\sigmawσ כאשר σ∈Σ\sigma \in\Sigmaσ∈Σ.

δ∗((q,p),wσ)=δ(δ∗((q,p),w),σ)=δ((δ1∗(q,w),δ2∗(p,w)),σ)\delta^*((q,p),w\sigma)=\delta(\delta^*((q,p),w),\sigma)=\delta((\delta_{1}^*(q,w),\delta_{2}^*(p,w)), \sigma)δ∗((q,p),wσ)=δ(δ∗((q,p),w),σ)=δ((δ1∗​(q,w),δ2∗​(p,w)),σ) =(δ1(δ1∗(q,w),σ)q′′,δ2(δ2∗(p,w),σ)p′′)=(δ1∗(q,wσ),δ2∗(p,wσ))=(\underbracket{\delta_{1}(\delta_{1}^*(q,w),\sigma)}_{q''},\underbracket{\delta_{2}(\delta_{2}^*(p,w),\sigma)}_{p''})=(\delta_{1}^*(q,w\sigma),\delta_{2}^*(p,w\sigma))=(q′′δ1​(δ1∗​(q,w),σ)​,p′′δ2​(δ2∗​(p,w),σ)​)=(δ1∗​(q,wσ),δ2∗​(p,wσ))

כעת, לאחר שהוכחנו את טענת העזר, נחזור להוכחת המשפט:

w∈L(A)  ⟺  δ∗((q0,p0),w)∈F1×F2w \in L(A) \iff \delta^*((q_{0},p_{0}),w) \in F_{1} \times F_{2}w∈L(A)⟺δ∗((q0​,p0​),w)∈F1​×F2​   ⟺  ↓טענת העזר(δ1∗(q0,w),δ2∗(p0,w))∈F1×F2  ⟺  δ1∗(q0,w)∈F1∧δ2∗(p0,w)∈F2\underset{\begin{matrix} \downarrow \\ \R{\text{טענת העזר}} \end{matrix}}{\iff} (\delta_{1}^*(q_{0},w),\delta_{2}^*(p_{0},w)) \in F_{1} \times F_{2} \iff \delta_{1}^*(q_{0},w) \in F_{1} \land \delta_{2}^*(p_{0},w) \in F_{2}↓טענת העזר​⟺​(δ1∗​(q0​,w),δ2∗​(p0​,w))∈F1​×F2​⟺δ1∗​(q0​,w)∈F1​∧δ2∗​(p0​,w)∈F2​   ⟺  w∈L1∧w∈L2  ⟺  w∈L1∩L2\iff w \in L_{1} \land w \in L_{2} \iff w \in L_{1} \cap L_{2}⟺w∈L1​∧w∈L2​⟺w∈L1​∩L2​

∎

מסקנה

מכיוון ששפות רגולריות סגורות תחת משלים וחיתוך, אזי לפי דה-מורגן, הן סגורות תחת איחוד.

L1∪L2=L1‾∩L2‾‾L_{1} \cup L_{2}=\overline{\overline{L_{1}} \cap \overline{L_{2}}}L1​∪L2​=L1​​∩L2​​​
3. סגירות תחת איחוד

במקום כללי דה-מורגן, ניתן להשתמש במבנה המכפלה ולהגדיר את קבוצת המצבים המקבלים כך:

(F1×P)∪(Q×F2)(F_{1}\times P)\cup(Q \times F_{2})(F1​×P)∪(Q×F2​)
משפט

שפות רגולריות סגורות תחת פעולות בסיסיות על קבוצות.

3.1 איחוד סופי
משפט

שפות רגולריות סגורות תחת איחוד סופי.
יהיו L1,…,LnL_{1},\dots,L_{n}L1​,…,Ln​ רגולריות. אזי ⋃1≤i≤nLi\bigcup_{1\leq i\leq n}L_{i}⋃1≤i≤n​Li​ רגולרית.

רעיון ההוכחה:
באינדוקציה פשוטה עם כלל התחלה i=0i=0i=0: האיחוד הוא ∅\emptyset∅: שפה רגולרית. הצעד נובע מיידית מסגירות לאיחוד.

הערה

שפות רגולריות לא סגורות תחת איחוד ∞\infty∞.
כלומר, קיימת סדרה ∞\infty∞ של שפות רגולריות, כך שהאיחוד האינסופי שלהן(⋃i≥1Li\bigcup_{i\geq1}L_{i}⋃i≥1​Li​) לא רגולרית.

שפות לא רגולריות

אינטואיציה: אוטומט סופי דטרמיניסטי הוא תוכנית פשוטה שאינה מסוגלת לבצע חישובים הדורשים זכרון לא מוגבל, למשל לספור עד גודל לא חסום.
נציג כעת שפה מעל Σ={a,b}\Sigma=\left\{ a,b \right\}Σ={a,b} ונוכיח כי היא אינה רגולרית:

Lab={aibi∣i∈N}L_{ab}=\left\{ a^ib^i|i \in \mathbb{N} \right\}Lab​={aibi∣i∈N} Lab={ε,ab,aabb,aaabbb,… }L_{ab}=\left\{ \epsilon,ab,aabb,aaabbb,\dots \right\}Lab​={ε,ab,aabb,aaabbb,…}

נוכיח כי LabL_{ab}Lab​ אינה רגולרית. כלומר, לא קיים אוטומט סופי דטרמיניסטי כך ש-L(A)=LabL(A)=L_{ab}L(A)=Lab​.
הוכחה:
נניח בשלילה כי קיים אוטומט סופי דטרמיניסטי AAA.

A=(Q,{a,b},q0,δ,F)A=(Q,\left\{ a,b \right\},q_{0},\delta,F)A=(Q,{a,b},q0​,δ,F)

כך ש-L(A)=LabL(A)=L_{ab}L(A)=Lab​. נסמן ∣Q∣=n|Q|=n∣Q∣=n.
נתבונן בקבוצת המילים: S={a,a2,a3,…,an+1}S=\left\{ a,a^2,a^3,\dots,a^{n+1} \right\}S={a,a2,a3,…,an+1}. מעקרון שובך היונים(לא - היא לא הגדירה את זה קודם), קיימות שתי מילים ai,aj∈Sa^i,a^j \in Sai,aj∈S כאשר i<ji<ji<j כך ש:

δ∗(q0,ai)=δ∗(q0,aj)=סימוןq\delta^*(q_{0},a^i)=\delta^*(q_{0},a^j)\underset{\R{\text{סימון}}}{=}qδ∗(q0​,ai)=δ∗(q0​,aj)סימון=​q

נתבונן ב-δ∗(q,bi)=p\delta^*(q,b^i)=pδ∗(q,bi)=p. באמצעות למת השרשור, נדע כי מתקיים: δ∗(q0,aibi)=δ∗(q0,ajbi)=p\delta^*(q_{0},a^ib^i)=\delta^*(q_{0},a^jb^i)=pδ∗(q0​,aibi)=δ∗(q0​,ajbi)=p.
האם p∈Fp \in Fp∈F?

  • אם לא, אז δ∗(q0,aibi)∉F\delta^*(q_{0},a^ib^i)\not\in Fδ∗(q0​,aibi)∈F ולכן aibi∉L(A)a^ib^i \not\in L(A)aibi∈L(A) - סתירה.
  • אם כן, אז δ∗(q0,ajbi)∈F\delta^*(q_{0},a^jb^i)\in Fδ∗(q0​,ajbi)∈F ולכן ajbi∈L(A)a^jb^i \in L(A)ajbi∈L(A) - סתירה.
    ∎
הערה

נראה אי-סגירות לאיחוד אינסופי:

Lab=⋃i≥0{aibi}רגולרית={ε}∪{ab}∪{aabb}…L_{ab}=\bigcup_{i\geq 0}\underbracket{\left\{ a^ib^i \right\}}_{\R{\text{רגולרית}}}=\left\{ \epsilon \right\}\cup \left\{ ab \right\}\cup\left\{ aabb \right\}\dotsLab​=i≥0⋃​רגולרית{aibi}​={ε}∪{ab}∪{aabb}…
הערה

כל שפה סופית היא רגולרית, שכן היא איחוד סופי של יחידונים.

מסקנה

כל שפה לא רגולרית היא אינסופית. אך לא כל שפה אינסופית היא לא רגולרית.

שיטות להוכחת רגולריות או אי-רגולריות של שפות

למת הניפוח לשפות רגולריות

נראה תכונה שקיימת לכל שפה רגולרית, ולכן אם LLL לא מקיימת אותה, אזי LLL לא רגולרית.

תהי LLL שפה רגולרית ויהי AAA אוטומט סופי דטרמיניסטי עבור LLL עם nnn מצבים. נניח כי קיימת w∈Lw \in Lw∈L כך ש-∣w∣≥n|w|\geq n∣w∣≥n.

w=σ1σ2…σmm≥nw=\sigma_{1}\sigma_{2}\dots\sigma_{m}\qquad m\geq nw=σ1​σ2​…σm​m≥n

נתבונן בריצה של AAA על www:

S0→σ1S1→σ2⋯→σnSn→σn+1⋯→σmSmS_{0}\xrightarrow{\sigma_{1}}S_{1}\xrightarrow{\sigma_{2}}\dots \xrightarrow{\sigma _{n}}S_{n}\xrightarrow{\sigma_{n+1}}\dots \xrightarrow{\sigma_{m}}S_{m}S0​σ1​​S1​σ2​​⋯σn​​Sn​σn+1​​⋯σm​​Sm​

מספר המצבים בסדרה (m+1=)n<(m+1=)n<(m+1=)n<. למעשה, כבר אחרי קריאת הרישא σ1…σn\sigma_{1}\dots\sigma_{n}σ1​…σn​ עוברים ב-n+1n+1n+1 מצבים.
לפי עקרון שובך היונים, קיימים 0≤i<j≤n0\leq i<j\leq n0≤i<j≤n כך ש-Si=Sj=qS_{i}=S_{j}=qSi​=Sj​=q. נתבונן במסלול הריצה על AAA כאשר נסמן w=xyzw=xyzw=xyz.
[ציור]
מכיוון ש: δ∗(q,y)=q\delta^*(q,y)=qδ∗(q,y)=q מתקיים כי לכל i∈Ni \in \mathbb{N}i∈N : xyiz∈Lxy^iz \in Lxyiz∈L.
כלומר, ברגע שקיימת מילה ארוכה מספיק ב-LLL, אפשר לחלק אותה ל-3 חלקים כך שישנן ∞\infty∞ מילים שגם הן ב-LLL שנוצרות ע"י "ניפוח" החלק האמצעי.

למה (הניפוח)

תהי LLL שפה רגולרית. אזי קיים n∈N+n \in \mathbb{N}^+n∈N+ כך שלכל מילה w∈Lw \in Lw∈L כך ש-∣w∣≥n|w|\geq n∣w∣≥n קיים פירוק w=xyzw=xyzw=xyz כך ש: ∣xy∣≤n|xy|\leq n∣xy∣≤n, y≠εy\neq\epsilony=ε ולכל i≥0i\geq0i≥0 מתקיים xyiz∈Lxy^iz \in Lxyiz∈L.

הוכחה:
אם LLL סופית, אזי עבור <n<n<n אורך מילה מקסימלית ב-LLL, התנאי מתקיים באופן ריק.
אחרת, nnn הוא מספר המצבים באוטומט סופי דטרמיניסטי עבור השפה LLL, והנכונות נובעת מהדיון הנ"ל.
∎

מסקנה

אם LLL לא מקיימת את תנאי למת הניפוח, אזי היא אינה רגולרית.

איך נדע כי שפה לא מקיימת את התנאים? כעת, ננסח במדוייק.

משפט (שלילת הלמה)

לכל n≥1n\geq1n≥1 קיימת w∈Lw \in Lw∈L, ∣w∣≥n|w|\geq n∣w∣≥n כך שלכל פירוק של www: w=xyzw=xyzw=xyz, כך ש-y≠ε,∣xy∣≤ny\neq \epsilon,|xy|\leq ny=ε,∣xy∣≤n קיים i≥0i\geq 0i≥0 כך ש: xyiz∉Lxy^iz \not\in Lxyiz∈L.

דוגמה (לשימוש בלמת הניפוח כדי להוכיח ששפה אינה רגולרית)

Lab={aibi∣i≥n}L_{ab}=\left\{ a^ib^i|i\geq n \right\}Lab​={aibi∣i≥n}. הוכחה:
יהי n≥1n\geq1n≥1. נבחר w=anbnw=a^nb^nw=anbn. w∈L,∣w∣≥nw \in L,|w|\geq nw∈L,∣w∣≥n ולכן היא כבילה.
נעבור על כל הפירוקים החוקיים של www. נבחר את xxx להיות רצף של aaa-ים, את yyy להיות רצף של aaa-ים ואת zzz להיות רצף של aaa-ים ואז bbb-ים.
לכן, ∣xy∣=n|xy|=n∣xy∣=n. כל הפירוקים של www לפי תנאי הלמה הם מהצורה הבאה w=asx aty an−s−tbnzw=\underbracket{a^s}_{x}\ \underbracket{a^t}_{y}\ \underbracket{a^{n-s-t}b^n}_{z}w=xas​ yat​ zan−s−tbn​.
לכל s,ts,ts,t כך ש-t≠0t\neq0t=0, s+t≤ns+t\leq ns+t≤n קיים פירוק שונה.
לכל פירוק שכזה נבחר i=2i=2i=2. xy2z=asatatan−s−tbnxy^2z=a^sa^ta^ta^{n-s-t}b^nxy2z=asatatan−s−tbn שזה בעצם xy2z=an+tbnxy^2z=a^{n+t}b^nxy2z=an+tbn. מכיוון ש-t>0t>0t>0 אזי an+tbn∉La^{n+t}b^n \not\in Lan+tbn∈L.

הראנו כי LabL_{ab}Lab​ לא עומדת בתנאי הלמה, ולכן אינה רגולרית.
∎

הערה (מה מותר ומה אסור לבחור בהוכחה שכזו?)

לא בוחריםבוחריםn(שאורכה תלוי ב-n)wפירוק(כתלות בפירוק)i\begin{array}{|c|c|} \hline \R{\text{לא בוחרים}} & \R{\text{בוחרים}} \\ \hline n & (\R{\text{שאורכה תלוי ב-n}}) w \\ \\ \R{\text{פירוק}} & (\R{\text{כתלות בפירוק}})i \\ \hline \end{array}לא בוחריםnפירוק​בוחרים(שאורכה תלוי ב-n)w(כתלות בפירוק)i​​
דוגמה

נסתכל על Σ={a}\Sigma=\left\{ a \right\}Σ={a} ו-Lp={ap∣ ראשוני p}L_{p}=\left\{ a^p | \R{\text{ ראשוני }} p \right\}Lp​={ap∣ ראשוני p}. נוכיח כי LpL_{p}Lp​ לא רגולרית.
הוכחה: נוכיח בעזרת למת הניפוח.
יהי n≥1n\geq1n≥1. נבחר ראשוני p≥np\geq np≥n (יש כזה כי ישנם ∞\infty∞ ראשוניים) ואת המילה wp=apw_{p}=a^pwp​=ap.
כל הפירוקים של apa^pap הם מהצורה: asatap−s−ta^sa^ta^{p-s-t}asatap−s−t כך ש: s+t≤ns+t\leq ns+t≤n ו-t>0t>0t>0.
אנו כעת נחפש iii כך ש: as(at)iap−s−ta^s(a^t)^ia^{p-s-t}as(at)iap−s−t מילה מאורך פריק.

asaitap−s−t=ap+it−t=ap+t(i−1)a^sa^{it}a^{p-s-t}=a^{p+it-t}=a^{p+t(i-1)}asaitap−s−t=ap+it−t=ap+t(i−1)

נבחר i=p+1i=p+1i=p+1 ואז נקבל כי asaitap−s−t=ap+t(p+1)=ap(1+t)a^sa^{it}a^{p-s-t}=a^{p+t(p+1)}=a^{p(1+t)}asaitap−s−t=ap+t(p+1)=ap(1+t) ולכן מכיוון ש-t+1>1,p>1t+1>1,p>1t+1>1,p>1 ומכיוון שכפולה של שני מספרים הגדולים מ-111 היא אינה מספר ראשוני, אזי נקבל aaa בחזקת מספר שאינו ראשוני ולכן היא לא נמצאת בשפה.

הראנו כי LpL_{p}Lp​ לא מקיימת את תנאי הלמה, ולכן אינה רגולרית.
∎

דוגמה ("הדוגמה החביבה של הסמסטר" - שרי)

שפת הפולינדורמים מעל {a,b}\left\{ a,b \right\}{a,b}. (פולינדרום: מילה הנקראת באופן זהה בשני הכיוונים. דוגמה: abbaabbaabba, אבא, אמא, aibohphobiaaibohphobiaaibohphobia)
הוכחה:
יהי n≥1n\geq1n≥1 ונבחר(שווה להשקיע קצת זמן בבחירה טובה) את המילה anbana^nba^nanban.
[המשיכו בבית]

דוגמה (לשפה שהיא לא רגולרית אבל כן ניתנת לניפוח)

זוהי דוגמה ללא הוכחה.

L={aibjck∣j=k אז i>0אם }L=\left\{ a^ib^jc^k|j=k \R{\text{ אז }}i>0\R{\text{אם }} \right\}L={aibjck∣j=k אז i>0אם }

נשים לב כי החלק הראשון הוא רגולרי וכן ניתן לניפוח. אך החלק השני הוא החלק הלא רגולרי.

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

המשפט נותן איפייון של שפות רגולריות שאינו בעזרת מודל חישובי, מאפשר למצוא אס"ד מינימלי (מבחינת מספר מצבים) לשפה רגולרית והוא כלי להוכחה ששפה אינה רגולרית.

יחס מייהיל-נרוד של שפה LLL

נניח כי LLL רגולרית ויהי AAA אס"ד עבור LLL. יהיו u,vu,vu,v שתי מילים כך ש: q=δ∗(q0,u)=δ∗(q0,v)q=\delta^*(q_{0},u)=\delta^*(q_{0},v)q=δ∗(q0​,u)=δ∗(q0​,v).
​2 - אוטומטים 2026-01-18 10.41.36.excalidraw.svg
לכל z∈Σ∗z \in\Sigma^*z∈Σ∗ מתקיים כי vz∈L  ⟺  uz∈Lvz \in L \iff uz \in Lvz∈L⟺uz∈L.

הגדרה 18 (יחס מייהיל-נרוד)

תהי LLL שפה. יחס מייהיל-נרוד של LLL היא יחס מעל Σ∗\Sigma^*Σ∗ המוגדר:

vz∈L  ⟺  uz∈L:z∈Σ∗לכל   ⟺  u∼Lvvz \in L \iff uz \in L \quad :z \in \Sigma^* \R{\text{לכל }} \iff u \underset{_{L}}{\sim} vvz∈L⟺uz∈L:z∈Σ∗לכל ⟺uL​∼​v
דוגמה

Σ={a,b}L={w∣יש ב-w את ba}\Sigma=\left\{ a,b \right\} \qquad L=\left\{ w | \R{\text{יש ב-w את ba}} \right\}Σ={a,b}L={w∣יש ב-w את ba}

נתבונן ב-a,aba,aba,ab. עבור z=εz=\epsilonz=ε מתקיים: a⋅ε∉La \cdot \epsilon \not\in La⋅ε∈L וגם ab⋅ε∈Lab \cdot \epsilon \in Lab⋅ε∈L ולכן, ε\epsilonε הוא זנב מפריד שמוכיח שהמילים אינן ביחס ∼L\underset{_{L}}{\sim}L​∼​. כלומר: a̸∼Laba \not \underset{_{L}}{\sim}abaL​∼​ab.
נתבונן ב-a,aaa,aaa,aa. שני אלו כן ביחס מייהיל-נרוד ונראה כמה אפשרויות: אם נשרשר מילים שיש בהן רק aaa אז המילים לא יהיו בשפה ואם נשרשר מילה כלשהי שיש בה bbb אז שתי המילים כן יהיו בשפה.
לכל zzz, אם ב-zzz אין bbb מתקיים az,aaz∉Laz,aaz \not\in Laz,aaz∈L ואחרת: az,aaz∈Laz,aaz \in Laz,aaz∈L. ולכן a∼Laaa \underset{_{L}}{\sim}aaaL​∼​aa.
נתבונן ב: ε,a\epsilon,aε,a. הם לא ביחס אחד עם השני. נראה כי ε⋅b∉La⋅b∈L\begin{matrix}\epsilon \cdot b \not\in L \\ a \cdot b \in L\end{matrix}ε⋅b∈La⋅b∈L​   ⟸  \impliedby⟸ ε̸∼La\epsilon \not \underset{_{L}}{\sim} aεL​∼​a.

טענה

לכל LLL מעל Σ\SigmaΣ, ∼L\underset{_{L}}{\sim}L​∼​ הוא יחס שקילות מעל Σ∗\Sigma^*Σ∗.

הוכחה:

  • רפלקסיבי: לכל u∈Σ∗u \in\Sigma^*u∈Σ∗ ולכל z∈Σ∗z \in\Sigma^*z∈Σ∗ מתקיים uz∈L  ⟺  uz∈Luz \in L \iff uz \in Luz∈L⟺uz∈L.
  • סימטרי: לכל u,v∈Σ∗u,v \in\Sigma^*u,v∈Σ∗, אם u∼Lvu \underset{_L}{\sim}vuL​∼​v אז לכל zzz:
    vz∈L  ⟺  uz∈L  ⟺  uz∈L  ⟺  vz∈L  ⟺  v∼Luvz \in L \iff uz \in L \iff uz \in L \iff vz \in L \iff v \underset{_{L}}{\sim} uvz∈L⟺uz∈L⟺uz∈L⟺vz∈L⟺vL​∼​u
  • טרנזיטיבי: לכל u,v,w∈Σ∗u,v,w \in\Sigma^*u,v,w∈Σ∗ אם לכל zzz מתקיים vz∈L  ⟺  uz∈Lvz \in L \iff uz \in Lvz∈L⟺uz∈L וכן מתקיים wz∈L  ⟺  vz∈Lwz \in L \iff vz \in Lwz∈L⟺vz∈L אז לכל zzz מתקיים:
    wz∈L  ⟺  uz∈Lwz \in L \iff uz \in Lwz∈L⟺uz∈L
    ∎

היחס ∼L\underset{_{L}}{\sim}L​∼​ מחלק את Σ∗\Sigma^*Σ∗ למחלקות שקילות. נבחין כי אם u∈Lu \in Lu∈L ו-v∉Lv \notin Lv∈/L אז u∼Lvu \underset{_{L}}{\sim}vuL​∼​v כי ε\epsilonε מפרידה ביניהן.

מסקנה

לכל מחלקת שקילות SSS או S⊆LS \subseteq LS⊆L או S⊆L‾S \subseteq \overline{L}S⊆L.

המשפט
טענה

אם LLL רגולרית, אז מספר מחלקות השקילות של ∼L\underset{_{L}}{\sim}L​∼​ הוא סופי.
נסמן: Rank(∼L)Rank(\underset{_{L}}{\sim})Rank(L​∼​).

הוכחה:
תהי LLL רגולרית מעל Σ\SigmaΣ ויהי AAA אס"ד עבור LLL. יהי qqq מצב ב-AAA.
ראינו כי לכל u,vu,vu,v שמגיעות ל-qqq, לכל zzz: vz∈L  ⟺  uz∈Lvz \in L \iff uz \in Lvz∈L⟺uz∈L ולכן u∼Lvu \underset{_{L}}{\sim}vuL​∼​v. לכן, כל המילים שמגיעות לאותו המצב הן באותה מחלקת שקילות.
נסמן ב-LqL_{q}Lq​ את קבוצת המילים שמגיעות ל-qqq. אז קיימת מחלקת שקילות SSS של ∼L\underset{_{L}}{\sim}L​∼​ כך ש-Lq⊆SL_{q}\subseteq SLq​⊆S.
לכן, מספר המצבים ב-Rank(∼L)≤ARank(\underset{_{L}}{\sim})\leq ARank(L​∼​)≤A. (המצבים באוטומט מחלקים את Σ∗\Sigma^*Σ∗: כל מילה מגיעה למצב יחיד)   ⟸  \impliedby⟸ Rank(∼L)Rank(\underset{_{L}}{\sim})Rank(L​∼​) סופי.
∎

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

 סופיRank(∼L)  ⟺   רגולריתL\R{\text{ סופי}} Rank(\underset{_{L}}{\sim}) \iff \R{\text{ רגולרית}} L סופיRank(L​∼​)⟺ רגולריתL

הוכחה:
⇐: הוכחנו כעת.
⇒: תהי LLL עבורה Rank(∼L)Rank(\underset{_{L}}{\sim})Rank(L​∼​) סופי: S1,S2,…,SkS_{1},S_{2},\dots,S_{k}S1​,S2​,…,Sk​. נבנה DFADFADFA שבו המצבים הם S1,…,SkS_{1},\dots,S_{k}S1​,…,Sk​ וכל מילה uuu מגיעה ל-[u][u][u]:

A=({S1,…,Sk},Σ,[ε],δ,{S∣S⊆L})A=(\left\{ S_{1},\dots,S_{k} \right\}, \Sigma,[\epsilon],\delta,\left\{ S| S \subseteq L \right\})A=({S1​,…,Sk​},Σ,[ε],δ,{S∣S⊆L})

לכל [w][w][w] ולכל σ\sigmaσ:

δ([w],σ)=[wσ]\delta([w],\sigma)=[w\sigma]δ([w],σ)=[wσ]

נראה כי δ\deltaδ הינה פונקציה ואינה תלויה בנציג. נניח בשלילה שקיימות u,vu,vu,v כך ש: [u]=[v][u]=[v][u]=[v] אך [uσ]≠[vσ][u\sigma]\neq[v\sigma][uσ]=[vσ].
אם uσ∼Lvσu\sigma \underset{_{L}}{\sim}v\sigmauσL​∼​vσ קיים zzz מפריד כך ש-uσz∈Lu\sigma z \in Luσz∈L וגם vσz∉Lv\sigma z \not\in Lvσz∈L (או להפך) אבל אז σz\sigma zσz מפריד בין u,vu,vu,v בסתירה לכך ש-u∼Lvu \underset{_{L}}{\sim}vuL​∼​v.
לכן, AAA הוא אוטומט סופי דטרמיניסטי.

טענה (טענת עזר)

לכל w∈Σ∗w \in\Sigma^*w∈Σ∗ מתקיים δ∗([ε],w)=[w]\delta^*([\epsilon],w)=[w]δ∗([ε],w)=[w]

הוכחה: באינדוקציה על www. (לבד!!!)

וכעת,  מקבלδ∗  ⟺  w∈L(A)\R{\text{ מקבל}}\delta^* \iff w \in L(A) מקבלδ∗⟺w∈L(A) ולכן, לפי טענת העזר:

w∈L(A)  ⟺   מקבל[w]  ⟺  [w]⊆L  ⟺  w∈Lw \in L(A) \iff \R{\text{ מקבל}} [w] \iff [w] \subseteq L \iff w \in Lw∈L(A)⟺ מקבל[w]⟺[w]⊆L⟺w∈L

∎

הערה

נשים כי האוטומט שבנינו הוא אס"ד מינימלי עבור LLL כי Rank(∼L)=∣Q∣Rank(\underset{_{L}}{\sim})=|Q|Rank(L​∼​)=∣Q∣.

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

 אינסופיRank(∼L)  ⟺   לא רגולריתL\R{\text{ אינסופי}} Rank(\underset{_{L}}{\sim}) \iff \R{\text{ לא רגולרית}} L אינסופיRank(L​∼​)⟺ לא רגולריתL

כלומר, אם נוכיח של-∼L\underset{_{L}}{\sim}L​∼​ של-LLL יש ∞\infty∞ מחלקות שקילות   ⟸  \impliedby⟸ היא לא רגולרית.

דוגמה

נוכיח שוב ש-Lab={anbn∣b∈N}L_{ab}=\left\{ a^nb^n|b \in \mathbb{N} \right\}Lab​={anbn∣b∈N} אינה רגולרית בעזרת מייהיל-נרוד.
נחפש קבוצה אינסופית של מילים שכל אחת מהן במחלקת שקילות שונה. כלומר, נראה שבין כל שתיים מהן יש זנב מפריד.
נבחר: T={ai∣i∈N}T=\left\{ a^i|i \in \mathbb{N} \right\}T={ai∣i∈N}. נראה שבין כל שתיים מהמילים ב-TTT יש מילה מפרידה: יהיו aj,aj′a^j,a^{j'}aj,aj′ שתי מילים שונות מ-TTT. bjb^jbj היא מילה מפרידה שכן:

ajbj∈L∧aj′bj∉La^jb^j \in L \land a^{j'}b^j \notin Lajbj∈L∧aj′bj∈/L

ולכן, לא קיימות שתמי מילים ב-TTT באותה מחלקת שקילות ולכן, כל מילה ב-TTT שייכת למחלקת שקילות שונה ולכן TTT אינסופית ולכן ישנן ∞\infty∞ מחלקות שקילות ולכן, לפי מייהיל-נרוד השפה LabL_{ab}Lab​ אינה רגולרית.

דגשים
  1. הקבוצה TTT חייבת להיות ∞\infty∞.
  2. הקבוצה TTT לא חייבת להיות מוכלת ב-LLL או ב-L‾\overline{L}L.
  3. ההוכחה עבור TTT חייבת להיות כללית. כלומר, לכל שתי מילים מ-TTT.

אי-דטרמיניסטי

באוטומט סופי דטרמיניסטי יש מצב התחלתי יחיד והמעברים הם פונקציה. כלומר, לכל מצב + אות יש מצב יעד יחיד.
באוטומט סופי לא דטרמיניסטי ישנה קבוצת מצבים התחלתיים והמעברים הם יחס עם איברים מהצורה (q,σ,p)(q,\sigma,p)(q,σ,p).

דבר זה נראה מעט מוזר שכן לא ברור לאן אנו הולכים מכל אות, שכן יש לנו כמה דרכים שאנו יכולים ללכת בהן.

דוגמה

נשים לב למשהו מעניין פה - באוטומט זה ישנן ריצות שונות על מילים כגון w=aaw=aaw=aa:

q0→aq0→aq0q0→aq0→aq1q0→aq1→aq2\begin{matrix} q_{0}\xrightarrow{a}q_{0}\xrightarrow{a}q_{0} \\ q_{0}\xrightarrow{a}q_{0}\xrightarrow{a}q_{1} \\ q_{0}\xrightarrow{a}q_{1}\xrightarrow{a}q_{2} \end{matrix}q0​a​q0​a​q0​q0​a​q0​a​q1​q0​a​q1​a​q2​​

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

הגדרה 19 (מילה מתקבלת באוטומט סופי לא דטרמיניסטי)

מילה www מתקבלת ע"י אוטומט סופי אי דטרמיניסטי(NFANFANFA) אם קיימת ריצה מקבלת על www.

בדוגמה שראינו, על המילה w=baw=baw=ba כלל לא קיימת ריצה. ובפרט, לא קיימת ריצה מקבלת.

משפט

מילה www לא מתקבלת באוטומט סופי אי דרטמיניסטי AAA אם כל הריצות של AAA על www דוחות.

הערה

תנאי ה"לכל" יכול להתקיים באופו ריק. כלומר: אם אין ל-AAA ריצה על www, אזי www לא מתקבלת.

הגדרה 20 (אוטומט סופי לא דטרמיניסטי)

יהי AAA אוטומט סופי לא דרטמיניסטי.

A=(Q,Σ,I,R,F)A=(Q,\Sigma,I,R,F)A=(Q,Σ,I,R,F)

כאשר:

  • QQQ היא קבוצת המצבים, כמו בדטרמיניסטי.
  • Σ\SigmaΣ היא א"ב של האוטומט, בדיוק כמו בדטרמיניסטי.
  • III היא קבוצת המצבים ההתחלתיים. I⊆QI \subseteq QI⊆Q
  • RRR הוא יחס המעברים המוגדר: R⊆Q×Σ×QR \subseteq Q\times\Sigma \times QR⊆Q×Σ×Q
  • FFF היא קבוצת המצבים הסופיים, כמו בדטרמיניסטי.

ריצה של אוטומט AAA על w=σ1…σnw=\sigma_{1}\dots\sigma_{n}w=σ1​…σn​ היא סדרה:

S0∈ I→σ1S1→σ2S2⋯→σnSn\underbracket{S_{0}}_{\in\ I}\xrightarrow{\sigma_{1}}S_{1}\xrightarrow{\sigma_{2}}S_{2}\dots \xrightarrow{\sigma_{n}}S_{n}∈ IS0​​σ1​​S1​σ2​​S2​⋯σn​​Sn​

כך ש-S0∈IS_{0} \in IS0​∈I ולכל 1≤i≤n1\leq i\leq n1≤i≤n: (Si−1,σi,Si)(S_{i-1},\sigma_{i},S_{i})(Si−1​,σi​,Si​) כמו בוגמות על aaaaaa.
הריצה מקבלת אילו Sn∈FS_{n}\in FSn​∈F.

נשים לב לבעיה - איך נוכל להגדיר איך נראת ריצה על מילה? באוטומט סופי דטרמיניסטי, מכיוון שהייתה לנו פונקציית מצבים δ\deltaδ, יכלנו להגדיר פונקציה מורחבת δ∗\delta^*δ∗ כך שהיא תהא ריצה על מילה שלמה. פה לא נוכל לעשות את זה כי δ\deltaδ לא קיימת. במקום זאת, יבוא לעזרתינו הסימון הבא:

משפט

נסמן q⟶Awpq \overunderset{w}{A}{\longrightarrow}pqA⟶​w​p אם אפשר להגיע ל-ppp בקריאה של www מ-qqq.

סימון זה הוא תחליף ל-δ∗\delta^*δ∗.

הגדרה 21 (שפת אוטומט סופי לא דטרמיניסטי)

השפה של אוטומט סופי לא דרטמינסיטי AAA היא:

L(A)={w∣∃q0∈I,∃p∈F:];q0⟶Awp}L(A)=\left\{ w|\exists q_{0} \in I,\exists p \in F:]; q_{0}\overunderset{w}{A}{\longrightarrow}p \right\}L(A)={w∣∃q0​∈I,∃p∈F:];q0​A⟶​w​p}
דוגמה

נזכר בדוגמה ממקודם ונמצא לאוטומט AAA את השפה שלו.

נסתכל על כל האפשרויות שלנו ונייצג כל אחת מהן כקבוצה:

{aibi∣i≥0,j≥1}q1מילים שלא עוברות דרך ∪{aibi∣i≥2,j≥0}מילים שעברו ב-q∪{aibi∣i≥1,j≥1}סוג שני של מילים שעברו ב-q\underset{q_{1}\R{\text{מילים שלא עוברות דרך }}}{\left\{ a^ib^i|i\geq 0,j\geq 1 \right\}}\cup \underset{\R{\text{מילים שעברו ב-q}}}{\left\{ a^ib^i|i\geq 2,j\geq0 \right\}} \cup \underset{\R{\text{סוג שני של מילים שעברו ב-q}}}{\left\{ a^ib^i|i\geq 1,j\geq 1 \right\}}q1​מילים שלא עוברות דרך {aibi∣i≥0,j≥1}​∪מילים שעברו ב-q{aibi∣i≥2,j≥0}​∪סוג שני של מילים שעברו ב-q{aibi∣i≥1,j≥1}​

נשים לב שהקבוצה השמאלית מוכלת בקבוצה הימנית ולכן נוכל לצמצם אותה בתיאור.
נבנה כעת DFADFADFA עבור L(A)L(A)L(A):

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

משפט

לכל שפה רגולרית קיים אוטוטמט סופי לא דטרמיניסטי המתאר אותה.

הוכחה:
קל לראות שלכל שפה רגולרית LLL קיים אוטומט סופי לא דטרמיניסטי AAA כך ש-L(A)=LL(A)=LL(A)=L. LLL רגולרית ⇐ קיים אוטומט סופי דטרמיניסטי BBB כך ש-L(B)=LL(B)=LL(B)=L.

B=(Q,Σ,q0,δ,F)B=(Q,\Sigma,q_{0},\delta,F)B=(Q,Σ,q0​,δ,F)

ונגדיר: A=(Q,Σ,{q0},δ,F)A=(Q,\Sigma,\left\{ q_{0} \right\},\delta,F)A=(Q,Σ,{q0​},δ,F).
הריצה של BBB על www מקבלת   ⟺  \iff⟺ w∈L(B)w \in L(B)w∈L(B)   ⟸  \impliedby⟸ קיימת ריצה מקבלת של AAA על www   ⟸  \impliedby⟸ w∈L(A)w \in L(A)w∈L(A).
הריצה של BBB על www דוחה   ⟺  \iff⟺ w∉L(B)w \not\in L(B)w∈L(B)   ⟸  קבוצת הריצותהיא יחידון\underset{\begin{matrix}\R{\text{קבוצת הריצות}}\\\R{\text{היא יחידון}}\end{matrix}}{\impliedby}קבוצת הריצותהיא יחידון​⟸​ כל הריצות של AAA על www דוחות   ⟸  \impliedby⟸ w∉L(A)w \not\in L(A)w∈L(A).
∎

משפט

יהי AAA אוטומט סופי לא דטרמיניסטי. אזי L(A)L(A)L(A) רגולרית.

הוכחה:
יהי A=(Q,Σ,I,R,F)A=(Q,\Sigma,I,R,F)A=(Q,Σ,I,R,F) אוטומט סופי לא דטרמיניסטי. נבנה אוטומט סופי דטרמיניסטי DDD כך ש-L(D)=L(A)L(D)=L(A)L(D)=L(A).

הערה (ענן המחשבות שלנו)

נחזור לאוטומט המכפלה. היו לנו שם שני אוטומטים ורצינו לרוץ על שתי הריצות בו זמנית. לכך בנינו אוטומט המורכב משני מצבים.
נרצה להשתמש באותו הרעיון פה להוכחה זו.
​2 - אוטומטים 2026-01-04 11.40.37.excalidraw.svg
DDD יעקוב אחרי קבוצת המצבים שמגיעים אליהן כשמתקדמים על כל הריצות של AAA על www בו
כל מצב ב-DDD ייצג קבוצת מצבים ב-AAA ומצב ב-DDD יהיה מקבל אם הוא מייצג קבוצה אשר קיים בה לפחות מצב מקבל אחד.

נגדיר:

D=(P(Q),Σ,I,δ,{S∈P(Q)∣S∩F≠∅})D=(P(Q),\Sigma,I,\delta,\left\{ S \in P(Q)|S \cap F \neq \emptyset \right\})D=(P(Q),Σ,I,δ,{S∈P(Q)∣S∩F=∅})

כאשר I∈P(Q)I \in P(Q)I∈P(Q) מצב יחיד וקבוצת המצבים המקבלים היא כל תת הקבוצות של QQQ שיש בהן מצב מקבל של AAA.
כעת, נותר לנו רק להגדיר את δ\deltaδ.

∀σ∈Σ,∀S∈P(Q):  δ(S,σ)={q∃q∈S:  q⟶Aσp}\forall \sigma \in\Sigma,\forall S \in P(Q):\; \delta(S,\sigma)=\left\{ \begin{array}{c|c} q & \exists q \in S:\; q \overunderset{\sigma}{A}{\longrightarrow}p \end{array} \right\}∀σ∈Σ,∀S∈P(Q):δ(S,σ)={q​∃q∈S:qA⟶​σ​p​}

כעת נוכיח את נכונות האוטומט.

טענה (טענת עזר)

∀w∈Σ∗,∀S∈P(Q):  δ∗(S,w)={p∃q∈S:  q⟶Awp}\forall w \in\Sigma^*,\forall S \in P(Q):\; \delta^*(S,w)=\left\{ \begin{array}{c|c} p & \exists q \in S:\; q \overunderset{w}{A}{\longrightarrow}p \end{array} \right\}∀w∈Σ∗,∀S∈P(Q):δ∗(S,w)={p​∃q∈S:qA⟶​w​p​}

הוכחה:
באינדוקציה על אורך www.
בסיס: w=εw=\epsilonw=ε.

δ∗(S,ε)=δS={p∃q∈S:  q⟶Aεp}\delta^*(S,\epsilon)\underset{\delta}{=}S=\left\{ \begin{array}{c|c} p & \exists q \in S:\; q \overunderset{\epsilon}{A}{\longrightarrow}p\end{array} \right\}δ∗(S,ε)δ=​S={p​∃q∈S:qA⟶​ε​p​}

צעד: נניח נכונות עבור www באורך nnn ונוכיח עבור wσw\sigmawσ לכל σ∈Σ\sigma \in\Sigmaσ∈Σ:

δ∗(S,wσ)=δ(δ∗(S,w),σ)\delta^*(S,w\sigma)=\delta(\delta^*(S,w),\sigma)δ∗(S,wσ)=δ(δ∗(S,w),σ)

לפי הנחת האינדוקציה, δ∗(S,w)={q′∃t∈S:  t⟶Awq′}\delta^*(S,w)=\left\{ \begin{array}{c|c}q'&\exists t \in S:\; t \overunderset{w}{A}{\longrightarrow}q'\end{array} \right\}δ∗(S,w)={q′​∃t∈S:tA⟶​w​q′​}

={p∃t∈S,q∈Q:  t→wq→σp}={p∃t∈S;  t⟶Awσp}=\left\{ \begin{array}{c|c} p & \exists t \in S,q \in Q:\; t \xrightarrow{w}q \xrightarrow{\sigma}p \end{array} \right\}=\left\{ \begin{array}{c|c} p & \exists t \in S;\; t \overunderset{w\sigma}{A}{\longrightarrow}p \end{array} \right\}={p​∃t∈S,q∈Q:tw​qσ​p​}={p​∃t∈S;tA⟶​wσ​p​}

∎

w∈L(D)  ⟺  δ∗(I,w)∈{SS∩F≠∅}  ⟺  {p∃q∈I:  ⟶Awp}∈{SS∩F≠∅}w \in L(D) \iff \delta^*(I,w) \in \left\{ \begin{array}{c|c} S & S \cap F \neq \emptyset \end{array} \right\} \iff \left\{ \begin{array}{c|c} p & \exists q \in I:\; \overunderset{w}{A}{\longrightarrow}p \end{array} \right\} \in \left\{ \begin{array}{c|c} S & S \cap F \neq \emptyset \end{array} \right\}w∈L(D)⟺δ∗(I,w)∈{S​S∩F=∅​}⟺{p​∃q∈I:A⟶​w​p​}∈{S​S∩F=∅​}   ⟺  {p∃q∈I:q⟶Awp}∩F≠∅  ⟺  ∃q∈I,∃p∈F:  q⟶Awp  ⟺  w∈L(A)\iff \left\{ \begin{array}{c|c} p & \exists q \in I: q \overunderset{w}{A}{\longrightarrow} p \end{array} \right\} \cap F \neq \emptyset \iff \exists q \in I, \exists p \in F:\; q \overunderset{w}{A}{\longrightarrow} p \iff w \in L(A)⟺{p​∃q∈I:qA⟶​w​p​}∩F=∅⟺∃q∈I,∃p∈F:qA⟶​w​p⟺w∈L(A)

∎

מסקנה

השפה LLL רגולרית   ⟺  \iff⟺ קיים אוטומט סופי לא דטרמינסיטי AAA כך ש-L(A)=AL(A)=AL(A)=A.

דוגמה

נסתכל על האוטומט AAA ממקודם:

וכעת, נבנה לו אוטומט סופי דטרמיניסטי - DDD:

ועוד שלושה מצבים שלא הגענו אליהם.

דוגמה (דוגמה לשפה עם NFANFANFA קטן ו-DFADFADFA גדול)

Σn={1,2,…,n}\Sigma_{n}=\left\{ 1,2,\dots,n \right\} Σn​={1,2,…,n}

נגדיר: Ln={w∈Σn∗∣w שלא מופיעה ב-Σnקיימת אות מ-}L_{n}=\left\{ w \in \Sigma_{n}^* |w \R{\text{ שלא מופיעה ב-}}\Sigma_{n}\R{\text{קיימת אות מ-}} \right\}Ln​={w∈Σn∗​∣w שלא מופיעה ב-Σn​קיימת אות מ-}
נראה אוטומט סופי לא דטרמיניסטי עבור LnL_{n}Ln​:

שימושי NFANFANFA

בניות בעזרת NFANFANFA

ראינו כי בהינתן אוטומט סופי דטרמיניסטי A1,A2A_{1},A_{2}A1​,A2​ אפשר להסתמך על בניית המכפלה כדי לבנות אוטומט סופי דטרמיניסטי עבור L(A1)∪L(A2)L(A_{1})\cup L(A_{2})L(A1​)∪L(A2​).
אם ב-A1A_{1}A1​ ישנם n1n_{1}n1​ מצבים וב-A2A_{2}A2​ ישנם n2n_{2}n2​ מצבים, אזי, ב-AAA ישנם n1⋅n2n_{1}\cdot n_{2}n1​⋅n2​ מצבים.
כעת, נניח כי יש לנו אוטומט סופי לא דטרמיניסטי A1,A2A_{1},A_{2}A1​,A2​ נבנה עבור L(A1)∪L(A2)L(A_{1})\cup L(A_{2})L(A1​)∪L(A2​):

A=(QA1∪QA2,Σ,IA1∪IA2,RA1∪RA2,F1∪F2)A=(Q_{A_{1}}\cup Q_{A_{2}},\Sigma,I_{A_{1}}\cup I_{A_{2}},R_{A_{1}}\cup R_{A_{2}},F_{1}\cup F_{2})A=(QA1​​∪QA2​​,Σ,IA1​​∪IA2​​,RA1​​∪RA2​​,F1​∪F2​)

נראה כי:

w∈L(A)  ⟺  קיימת עליה ריצה מקבלת באחד מהם  ⟺  w∈L(A1)∪L(A2)w \in L(A) \iff \R{\text{קיימת עליה ריצה מקבלת באחד מהם}} \iff w \in L(A_{1})\cup L(A_{2})w∈L(A)⟺קיימת עליה ריצה מקבלת באחד מהם⟺w∈L(A1​)∪L(A2​)

מספר המצבים: n1+n2n_{1}+n_{2}n1​+n2​.

הוכחת סגירות רגולריות להיפוך

נגדיר wR=σnσn−1…σ1w^R=\sigma_{n}\sigma_{n-1}\dots\sigma_{1}wR=σn​σn−1​…σ1​ כאשר w=σ1…σn−1σnw=\sigma_{1}\dots\sigma_{n-1}\sigma_{n}w=σ1​…σn−1​σn​.
עבור שפות, בהנתן שפה LLL:

LR={wR∣w∈L}L^R=\left\{ w^R|w \in L \right\}LR={wR∣w∈L}
דוגמה

L={ε,ab,abb}  ⟹  LR={ε,ba,bba}L=\left\{ \epsilon,ab,abb \right\} \implies L^R=\left\{ \epsilon,ba,bba \right\}L={ε,ab,abb}⟹LR={ε,ba,bba}
טענה

אם LLL רגולרית, גם LRL^RLR רגולרית.

סקיצת הוכחה:
נקח אוטומט סופי לא דטרמיניסטי עבור LLL. נסמנו AAA.
כעת, נבנה אוטומט עבור LRL^RLR:

A′=(Q,Σ,FA,R′,IA)A'=(Q,\Sigma,F_{A},R',I_{A})A′=(Q,Σ,FA​,R′,IA​) R′={(p,σ,q)∣(q,σ,p)∈RA}R'=\left\{ (p,\sigma,q)|(q,\sigma,p)\in R_{A} \right\}R′={(p,σ,q)∣(q,σ,p)∈RA​}
שיעורי בית (HW)

השלימו את החסר

∎

מעברי ε\epsilonε

הרעיון: מעברי ε\epsilonε מאפשרים להמשיך את הריצה ממצב אחר מבלי להתקדם על הקלט.

נראה ריצה לדוגמה:

→q0→aq1→bq2→εq0→aq1→bq2→εq3\to q_{0}\xrightarrow{a}q_{1}\xrightarrow{b}q_{2}\xrightarrow{\epsilon}q_{0}\xrightarrow{a}q_{1}\xrightarrow{b}q_{2}\xrightarrow{\epsilon}q_{3}→q0​a​q1​b​q2​ε​q0​a​q1​b​q2​ε​q3​

זוהי ריצה מקבלת על המילה abababababab.

הערה

  1. לא חובה לעבור במעבר ε\epsilonε. אם יש מעבר q→εpq \xrightarrow{\epsilon}pqε​p והריצה מגיעה ל-qqq, היא יכולה להישאר ב-qqq או להמשיך ב-ppp.
  2. מעברי ε\epsilonε במהותם הם אי דטרמיניסטים, לכןף הם אינם קיימים באוטומט סופי דטרמיניסטי.
  3. אפשר לעבור במעברי ε\epsilonε לפני/באמצע/בסוף המילה.
  4. מותר לעבור בכמה מעברי ε\epsilonε ברצף.

נקרא למודל ε−NFA\epsilon-NFAε−NFA ונראה: ε−NFA≡NFA\epsilon-NFA\equiv NFAε−NFA≡NFA.

הגדרה 22 (ε−NFA\epsilon-NFAε−NFA)

A=(Q,Σ,I,R,F)A=(Q,\Sigma,I,R,F)A=(Q,Σ,I,R,F)

ההבדל היחיד בין NFANFANFA לאוטומט הנוכחי הוא:

R⊆Q×(Σ∪{ε})×QR \subseteq Q\times(\Sigma \cup \left\{ \epsilon \right\})\times QR⊆Q×(Σ∪{ε})×Q
טענה

LLL היא רגולרית   ⟺  \iff⟺ קיים ε−NFA\epsilon-NFAε−NFA כך ש-L(A)=LL(A)=LL(A)=L.

רעיון הוכחה:
נראה תרגום בין NFANFANFA ל-ε−NFA\epsilon-NFAε−NFA.
⇐: יהי אוטומט סופי לא דטרמיניסטי AAA. הוא ε−NFA\epsilon-NFAε−NFA שאין בו מעברי ε\epsilonε. כלומר, NFANFANFA הוא מקרה פרטי של ε−NFA\epsilon-NFAε−NFA.
⇒: יהי AAA אוטומט סופי לא דטרמיניסטי בעל מעברי ε\epsilonε. אנו נבנה אוטומט סופי לא דטרמיניסטי ללא מעברי ε\epsilonε בעזרת שני השינויים הבאים:

  1. אם אפשר להגיע ל-qqq ממצב התחלתי ע"י קריאה של ε\epsilonε-ים בלבד: qqq יהיה מצב התחלתי.
  2. אם אפשר להגיע ממצב qqq למצב ppp ע"י קריאה של אות σ\sigmaσ (כלומר מתקיים q→εq′→σp′→εpq \xrightarrow{\epsilon}q'\xrightarrow{\sigma}p'\xrightarrow{\epsilon}pqε​q′σ​p′ε​p) נוסיף מעבר ישיר עם σ\sigmaσ מ-qqq ל-ppp.

הוכחה:
יהי ε−NFA\epsilon-NFAε−NFA:

A=(Q,Σ,I,R,F)A=(Q,\Sigma,I,R,F)A=(Q,Σ,I,R,F)

נבנה אוטומט סופי דטרמיניסטי BBB כך:

B=(Q,Σ,I′,R′,F)B=(Q,\Sigma,I',R',F)B=(Q,Σ,I′,R′,F)

כאשר:

I′={q∃ p∈I:  p⟶Aεq}I'=\left\{ \begin{array}{c|c} q & \exists\ p \in I:\; p \overunderset{\epsilon}{A}{\longrightarrow}q \end{array} \right\}I′={q​∃ p∈I:pA⟶​ε​q​}

נשים לב שכל q∈Iq \in Iq∈I שייך ל-I′I'I′.

R′={(q,σ,p)q⟶Aσp}R'=\left\{ \begin{array}{c|c} (q,\sigma,p) & q \overunderset{\sigma}{A}{\longrightarrow} p \end{array} \right\}R′={(q,σ,p)​qA⟶​σ​p​}

נשים לב כי הם לאו דווקא מחוברים בעזרת מעבר ישיר.
הוכחת נכונות: ניתן להראות כי לכל www ולכל מצב ppp:
קיים q∈Iq \in Iq∈I כך ש-  ⟺  q⟶Awp\iff q \overunderset{w}{A}{\longrightarrow}p⟺qA⟶​w​p קיים q′∈I′q'\in I'q′∈I′ כך ש-q⟶Bwpq \overunderset{w}{B}{\longrightarrow}pqB⟶​w​p.
מסקנה:   ⟺  w∈L(A)\iff w \in L(A)⟺w∈L(A) קיים q∈I,p∈Fq \in I,p \in Fq∈I,p∈F כך ש-q⟶Awpq \overunderset{w}{A}{\longrightarrow}pqA⟶​w​p   ⟺  \iff⟺ קיים q′∈I′q'\in I'q′∈I′ ו-p∈Fp \in Fp∈F כך ש-q′⟶Bwpq' \overunderset{w}{B}{\longrightarrow}pq′B⟶​w​p   ⟺  \iff⟺ w∈L(B)w \in L(B)w∈L(B).
∎

דוגמה

כעת נראה למה הוא יהפוך (BBB)

שימושים למעברי ε\epsilonε
הערה (תזכורת)

הגדרנו שרשור שפות כך:

L1∘L2={u∘v∣u∈L1∧v∈L2}={w∣∃u∈L1∧∃v∈L2:  w=uv}\begin{align*} L_{1} \circ L_{2} & =\left\{ u \circ v| u \in L_{1} \land v \in L_{2} \right\} \\ & =\left\{ w| \exists u \in L_{1} \land \exists v \in L_{2}:\; w=uv \right\} \end{align*}L1​∘L2​​={u∘v∣u∈L1​∧v∈L2​}={w∣∃u∈L1​∧∃v∈L2​:w=uv}​
טענה

אם L1,L2L_{1},L_{2}L1​,L2​ רגולרית אז L1∘L2L_{1} \circ L_{2}L1​∘L2​ רגולרית.

הוכחה:
בהנתן A1=(Q1,Σ,I1,R1,F1)A_{1}=(Q_{1},\Sigma,I_{1},R_{1},F_{1})A1​=(Q1​,Σ,I1​,R1​,F1​) ו-A2=(Q2,Σ,I2,R2,F2)A_{2}=(Q_{2},\Sigma,I_{2},R_{2},F_{2})A2​=(Q2​,Σ,I2​,R2​,F2​) אוטומטים סופיים לא דטרמינסיטיים.
נבנה ε−NFA\epsilon-NFAε−NFA כך

A=(Q1∪Q2,Σ,I1,R,F2)A=(Q_{1} \cup Q_{2},\Sigma,I_{1},\mathbf{R},F_{2})A=(Q1​∪Q2​,Σ,I1​,R,F2​) R=R1∪R2∪{(q,ε,p)∣q∈F1∧p∈I2}\mathbf{R}=R_{1}\cup R_{2}\cup \left\{ (q,\epsilon,p)|q \in F_{1} \land p \in I_{2} \right\}R=R1​∪R2​∪{(q,ε,p)∣q∈F1​∧p∈I2​}

נוכיח נכונות:
⇐: נניח w∈L1∘L2w \in L_{1} \circ L_{2}w∈L1​∘L2​. אזי, מההגדרה: קיימת u∈L1u \in L_{1}u∈L1​ וקיימת v∈L2v \in L_{2}v∈L2​ כך ש-w=uvw=uvw=uv.

u∈L1  ⟹  ∃q0∈I1∧∃q∈F1:  q0⟶A1uqu \in L_{1} \implies \exists q_{0} \in I_{1} \land \exists q \in F_{1}:\; q_{0} \overunderset{u}{A_{1}}{\longrightarrow}qu∈L1​⟹∃q0​∈I1​∧∃q∈F1​:q0​A1​⟶​u​q v∈L2  ⟹  ∃p0∈I2∧∃p∈F2:  p0⟶A2vpv \in L_{2} \implies \exists p_{0} \in I_{2} \land \exists p \in F_{2}:\; p_{0} \overunderset{v}{A_{2}}{\longrightarrow}pv∈L2​⟹∃p0​∈I2​∧∃p∈F2​:p0​A2​⟶​v​p

מהבנייה, קיימת ריצה:

q0→uq→εp0→vpq_{0} \xrightarrow{u}q \xrightarrow{\epsilon}p_{0} \xrightarrow{v}pq0​u​qε​p0​v​p

ולכן: w∈L(A)w \in L(A)w∈L(A).
⇒: תהי w∈L(A)w \in L(A)w∈L(A). אזי קיים q0∈I1q_{0} \in I_{1}q0​∈I1​ וקיים q∈F2q \in F_{2}q∈F2​ כך ש-q0⟶Awpq_{0} \overunderset{w}{A}{\longrightarrow}pq0​A⟶​w​p.
מכיוון ש-q0q_{0}q0​ ב-Q1Q_{1}Q1​ ו-ppp ב-Q2Q_{2}Q2​, הריצה חייבת לעבור במעבר ε\epsilonε שהוספנו. כלומר, קיים q1∈F1q_{1} \in F_{1}q1​∈F1​ ו-p0∈I2p_{0} \in I_{2}p0​∈I2​ כך ש-www ניתנת לפירוק: w=uvw=uvw=uv כך ש:

q0→uq→εp0→vpq_{0} \xrightarrow{u}q \xrightarrow{\epsilon}p_{0} \xrightarrow{v}pq0​u​qε​p0​v​p

מהבניה קיבלנו כי:

u∈L(A1)∧v∈L(A2)u \in L(A_{1}) \land v \in L(A_{2})u∈L(A1​)∧v∈L(A2​)

ולכן, w∈L1∘L2w \in L_{1} \circ L_{2}w∈L1​∘L2​.
∎

הערה (תזכורת)

L∗=⋃i≥0Li=L0∪L1∪…L^*=\bigcup_{i\geq 0}L^i=L^0 \cup L^1 \cup \dotsL∗=i≥0⋃​Li=L0∪L1∪…

כלומר, שפת כל השרשורים (באורך סופי כלשהו) של מילים מ-LLL.

טענה

אם LLL רגולרית ⇐ L∗L^*L∗ רגולרית.

רעיון:
​2 - אוטומטים 2026-01-11 12.10.51.excalidraw.svg
הוכחה:

A=(Q,Σ,I,R,F)A=(Q,\Sigma,I,R,F)A=(Q,Σ,I,R,F) A′=(Q∪{p},Σ,I∪{p},R′,F∪{p})A'=(Q \cup \left\{ p \right\}, \Sigma,I \cup \left\{ p \right\},R',F \cup \left\{ p \right\})A′=(Q∪{p},Σ,I∪{p},R′,F∪{p}) R′=R∪{(q,ε,p)∣q∈F∧p∈I}R'=R \cup \left\{ (q,\epsilon,p)| q \in F \land p \in I \right\}R′=R∪{(q,ε,p)∣q∈F∧p∈I}

סקיצת הוכחת נכונות:

  • אם w∈L∗w \in L^*w∈L∗: אם w=εw=\epsilonw=ε אזי מתקבלת ע"י ppp ⇐ w∈L(A′)w \in L(A')w∈L(A′). אחרת, w=u1u2…ukw=u_{1}u_{2}\dots u_{k}w=u1​u2​…uk​ וכולן ב-LLL. לכל אחת מהן ריצה מקבלת q0i→uipiq_{0}^i \xrightarrow{u_{i}}p_{i}q0i​ui​​pi​ ב-AAA. נדביק אותן יחד: q01→u1p1→εq02→u2p2⋯→ukpkq_{0}^1 \xrightarrow{u_{1}}p_{1}\xrightarrow{\epsilon}q_{0}^2\xrightarrow{u_{2}}p_{2}\dots \xrightarrow{u_{k}}p_{k}q01​u1​​p1​ε​q02​u2​​p2​⋯uk​​pk​ וזו ריצה מקבלת על www.
  • אם w∈L(A′)w \in L(A')w∈L(A′): אם הגיעה ל-ppp: w=εw=\epsilonw=ε ⇐ w∈L∗w \in L^*w∈L∗. אחרת, נפרק את הריצה המקבלת עליה לפי מעברי ε\epsilonε: q0→u1→ε→ε⋯→ε→ukpq_{0}\xrightarrow{u_{1}}\xrightarrow{\epsilon}\xrightarrow{\epsilon}\dots \xrightarrow{\epsilon}\xrightarrow{u_{k}}pq0​u1​​ε​ε​⋯ε​uk​​p. מהבניה: ui∈Lu_{i}\in Lui​∈L לכל 1≤i≤k1\leq i\leq k1≤i≤k ⇐ w∈L∗w \in L^*w∈L∗.
    ∎

ביטויים רגולריים

ביטויים רגולרים הם עוד דרך להציג שפה. רק שבמקום שנשתמש במודל חישובי, נשתמש בביטויים.
יהי Σ\SigmaΣ א"ב. תחילה נרצה לגדיר קבוצת ביטויים רגולריים RΣR_{\Sigma}RΣ​ מעל Σ\SigmaΣ:
בסיס: ∅,ε\emptyset,\epsilon∅,ε הם ביטויים רגולריים. בנוסף, לכל σ∈Σ\sigma \in\Sigmaσ∈Σ: σ∈RΣ\sigma \in R_{\Sigma}σ∈RΣ​.
צעד: אם r1,r2∈RΣr_{1},r_{2} \in R_{\Sigma}r1​,r2​∈RΣ​ אזי הביטויים הבאים גם ב-RΣR_{\Sigma}RΣ​:

(r1+r2),(r1⋅r2),(r1∗)(r_{1}+r_{2}), \qquad (r_{1}\cdot r_{2}), \qquad (r_{1}^*)(r1​+r2​),(r1​⋅r2​),(r1∗​)
דוגמה

נקח את Σ={a,b}\Sigma=\left\{ a,b \right\}Σ={a,b}. ביטויים רגולרים ב-RΣR_{\Sigma}RΣ​:

a,b,∅,ε,(a+b),(ε⋅b),(∅∗),(b⋅b),((a+b)⋅ε),((a+b)∗),((b⋅b)+(e⋅b)),(((a+b)⋅ε)∗)\begin{align*} & a,b,\emptyset,\epsilon, \\ & (a+b),(\epsilon\cdot b),(\emptyset^*),(b\cdot b), \\ & ((a+b)\cdot\epsilon),((a+b)^*),((b\cdot b)+(e\cdot b)), \\ & (((a+b)\cdot\epsilon)^*) \end{align*}​a,b,∅,ε,(a+b),(ε⋅b),(∅∗),(b⋅b),((a+b)⋅ε),((a+b)∗),((b⋅b)+(e⋅b)),(((a+b)⋅ε)∗)​

וכו וכו'.

נראה פה כי לכל ביטוי רגולרי r∈RΣr \in R_{\Sigma}r∈RΣ​ אפשר להתאים עץ יצירה (לא נגדיר, רק נדגים):

((b⋅b)+(b⋅ε)):((b\cdot b)+(b\cdot \epsilon)):((b⋅b)+(b⋅ε)):
G plus + dot1 • plus->dot1 dot2 • plus->dot2 b1 b dot1->b1 b2 b dot1->b2 epsilon ε dot2->epsilon b3 b dot2->b3

לכל ביטוי יש עץ יצירה יחיד.

המשמעות של ביטויים רגולריים

לכל r∈RΣr \in R_{\Sigma}r∈RΣ​ נתאים שפה L[r]L[r]L[r] מעל Σ\SigmaΣ:
בסיס: L[ε]={ε},L[∅]=∅L[\epsilon]=\left\{ \epsilon \right\},L[\emptyset]=\emptysetL[ε]={ε},L[∅]=∅ ובנוסף, ∀σ∈Σ:  L[σ]={σ}\forall\sigma \in\Sigma:\; L[\sigma]=\left\{ \sigma \right\}∀σ∈Σ:L[σ]={σ}.
צעד: r1,r2∈RΣr_{1},r_{2} \in R_{\Sigma}r1​,r2​∈RΣ​. נגדיר:

L[(r1⋅r2)]=L[r1]⋅L[r2]L[(r_{1}\cdot r_{2})]=L[r_{1}]\cdot L[r_{2}]L[(r1​⋅r2​)]=L[r1​]⋅L[r2​] L[(r1∗)]=L[r1]∗L[(r_{1}^*)]=L[r_{1}]^*L[(r1∗​)]=L[r1​]∗ L[(r1+r2)]=L[r1]∪L[r2]L[(r_{1}+r_{2})]=L[r_{1}]\cup L[r_{2}]L[(r1​+r2​)]=L[r1​]∪L[r2​]
דוגמה

L[(((a+b)⋅b)∗)]=L[((a+b)⋅b)]∗=(L[(a+b)]⋅L[b])∗=((L[a]∪L[b])⋅L[b])∗L[(((a+b)\cdot b)^*)]=L[((a+b)\cdot b)]^*=(L[(a+b)]\cdot L[b])^*=((L[a] \cup L[b])\cdot L[b])^*L[(((a+b)⋅b)∗)]=L[((a+b)⋅b)]∗=(L[(a+b)]⋅L[b])∗=((L[a]∪L[b])⋅L[b])∗ =(({a}∪{b})⋅{b})∗=({a,b}⋅{b})∗={ab,bb}∗=((\left\{ a \right\}\cup \left\{ b \right\})\cdot \left\{ b \right\})^*=(\left\{ a,b \right\}\cdot \left\{ b \right\})^*=\left\{ ab,bb \right\}^*=(({a}∪{b})⋅{b})∗=({a,b}⋅{b})∗={ab,bb}∗
דוגמה (עוד דרך עבודה שהיא קצת יותר נוחה)

נסתכל על עץ הבנייה של הביטוי:

G plus * dot0 • plus->dot0 dot1 + dot0->dot1 b1 b dot0->b1 b2 b dot1->b2 a a dot1->a

נוכל לכתוב ליד כל עלה בעץ את הקבוצה המתאימה וכך לבנות.

כעת, נוכל להגדיר שפות רגולריות ונבנה עבורן ביטויים.
נתחיל עם השפה {a,b}∗\left\{ a,b \right\}^*{a,b}∗:

((a+b)∗)((a+b)^*)((a+b)∗)

נכתוב ביטוי עבור שפת כל המילים מעל {a,b}\left\{ a,b \right\}{a,b} שמתחילות ב-aaa ונגמרות ב-bbb:

((a⋅((a+b)∗))⋅b)((a\cdot ((a+b)^*))\cdot b)((a⋅((a+b)∗))⋅b)
הערה

באופן לא פורמלי, נסיר סוגריים מיותרים. (כגון הסוגריים החיצוניים)

במקרה הזה נכתוב:

a⋅(a+b)∗⋅ba\cdot(a+b)^* \cdot ba⋅(a+b)∗⋅b

נכתוב ביטוי עבור שפת כל המילים שיש להן תת-מילה ababab:

(a+b)∗⋅a⋅b⋅(a+b)∗(a+b)^* \cdot a\cdot b\cdot (a+b)^*(a+b)∗⋅a⋅b⋅(a+b)∗

נכתוב ביטוי עבור שפת כל המילים באורך אי-זוגי:

((a+b)⋅(a+b))∗⏟שרשורים של כל המילים באורך 2∣∣כל המילים באורך זוגי⋅(a+b)\underbrace{((a+b)\cdot(a+b))^*}_{\begin{matrix} \R{\text{שרשורים של כל המילים באורך 2}} \\ || \\ \R{\text{כל המילים באורך זוגי}} \end{matrix}}\cdot(a+b)שרשורים של כל המילים באורך 2∣∣כל המילים באורך זוגי​((a+b)⋅(a+b))∗​​⋅(a+b)

נכתוב ביטוי לשפת כל המילים שיש בהן מספר זוגי של aaa:

(b∗ab∗ab∗)∗+b∗(b^*ab^*ab^*)^* + b^*(b∗ab∗ab∗)∗+b∗

שקילות בין שפות רגולריות וביטויים רגולריים

משפט

יהי Σ\SigmaΣ א"ב.
שפה LLL מעל Σ\SigmaΣ היא רגולרית   ⟺  \iff⟺ קיים ביטוי רגולרי r∈RΣr \in R_{\Sigma}r∈RΣ​ כך ש-L[r]=LL[r]=LL[r]=L.

הוכחה:
⇒: יהי r∈RΣr \in R_{\Sigma}r∈RΣ​. נחלק למקרים לפי מבנה rrr:

  • אם rrr בסיס: r∈{ε,∅,σ}r \in \left\{ \epsilon,\emptyset,\sigma \right\}r∈{ε,∅,σ} עבור σ∈Σ\sigma \in\Sigmaσ∈Σ כלשהי. בכל המקרים הללו:
    L[ε]={ε}L[∅]=∅L[σ]={σ}L[\epsilon]=\left\{ \epsilon \right\} \qquad L[\emptyset]=\emptyset \qquad L[\sigma]=\left\{ \sigma \right\}L[ε]={ε}L[∅]=∅L[σ]={σ}
    הוכנו כבר בעבר שכל הביטויים הללו הם רגולריים.
  • אחרת: r=(r1+r2)∨r=(r1⋅r2)∨r=(r1∗)r=(r_{1}+r_{2})\lor r=(r_{1}\cdot r_{2})\lor r=(r_{1}^*)r=(r1​+r2​)∨r=(r1​⋅r2​)∨r=(r1∗​) עבור r1,r2∈Rεr_{1},r_{2} \in R_{\epsilon}r1​,r2​∈Rε​ כלשהם.
    נניח כי L[r1],L[r2]L[r_{1}],L[r_{2}]L[r1​],L[r2​] הן רגולריות. הראנו ששפות רגולריות סוגורות תחת ∪,⋅,∗\cup,\cdot,^*∪,⋅,∗ ולכן בכל אחד מהמקרים: L[r]L[r]L[r] רגולרית.

⇐: תהי LLL שפה רגולרית. נבנה rrr כך ש-L[r]=LL[r]=LL[r]=L. נציג אלגוריתם לבניית rrr על סמך אוטומט סופי לא דטרמיניסטי עבור LLL.

  1. יהי אוטומט סופי לא דטרמיניסטי AAA עבור LLL. נוסיף מצב מקבל חדש, אליו עוברים בכל מעבר למצב מקבל ב-AAA והוא יהיה המקבל היחיד. נוסיף גם התחלתי יחיד שעובר לכל המצבים שאפשר להגיע אליהם מהמצב ההתחלתיים ב-AAA ואם הם הגיעו למצב מקבל: גם לחדש. בנוסף, אם קיים מצב התחלתי מקבל, נוסיף מעבר-ε\epsilonε למקבל החדש.
  2. נמחק מצבים באופן הבא: לכל מצב(מקורי) ולכל
Full_firstAutomation p p k k p->k r1 k->k r2 q q k->q r3

נבצע:

p→r1⋅r2⋅r3qp \xrightarrow{r_{1}\cdot r_{2}^\cdot r_{3}}qpr1​⋅r2⋅​r3​​q

בשלב השני של מחיקת המצבים, לכל p,qp,qp,q שיש ביניהם אוסף של מעברים r1,r2,…,rkr_{1},r_{2},\dots,r_{k}r1​,r2​,…,rk​ נחליף אותם במעבר p→r1+⋯+rkqp \xrightarrow{r_{1}+\dots+r_{k}}qpr1​+⋯+rk​​q.
נחזור על שלב 2 עד אשר לא ישאר לנו רק מעבר אחד.
הביטוי שיהיה מעל המעבר יהיה הביטוי הרגולרי של האוטומט.
∎

דוגמה (לבניית אוטומט)

נקח עץ שרשור:
​2 - אוטומטים 2026-01-25 11.45.38.excalidraw.svg