חזור לתיקייה: תרגול

7 - אוטומט סופי דטרמיניסטי

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • כללי
  • תרגול

7 - אוטומט סופי דטרמיניסטי

02340129

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

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

אוטומט סופי דטרמיניסטי

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

uni-folder.vercel.app

דוגמה

Σ={a}L={a}\Sigma=\left\{ a \right\} \qquad L=\left\{ a \right\}Σ={a}L={a}
example1 start q0 q0 start->q0 q1 q1 q2 q2 q1->q2 a q0->q1 a q2->q2 a
הגדרה 1 (סגור קלין)

בהינתן שפה LLL, נגדיר סגור קלין של LLL בתור:

L∗=⋃i=0∞LiL^*=\bigcup_{i=0}^\infty L^iL∗=i=0⋃∞​Li
הגדרה 2 (סגור חיובי)

בהינתן שפה LLL, נגדיר את הסגור החיובי בתור:

L+=⋃i≥1∞LiL^+=\bigcup_{i\geq 1}^\infty L^iL+=i≥1⋃∞​Li
למה (למת השרשור)

יהי A=(Q,Σ,q0,δ,F)A=(Q,\Sigma,q_{0},\delta,F)A=(Q,Σ,q0​,δ,F) אוטומט סופי דרמיניסטי.
לכל u,v∈Σ∗u,v \in\Sigma^*u,v∈Σ∗ ולכל q∈Qq \in Qq∈Q מתקיים:

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

לא נוכיח את הטענה אבל ניתן להשתמש בה בתרגילי הבית ובמבחן.

הגדרה 3 (שפת המצב)

בניגוד לשפת האוטומט שראינו בהרצאה, שפה של מצב qqq מוגדרת כך:

L(q)={w∈Σ∗∣δ∗(q0,w)=q}L(q)=\left\{ w \in \Sigma^*|\delta^*(q_{0},w)=q \right\}L(q)={w∈Σ∗∣δ∗(q0​,w)=q}

כלומר, כל המילים שהריצה של AAA מעליהן מ-q0q_{0}q0​ מסתיימת במצב qqq.

משפט

L(A)שפת האוטומט=⋃q∈FL(q)\underbracket{L(A)}_{\R{\text{שפת האוטומט}}}=\bigcup_{q \in F}L(q)שפת האוטומטL(A)​=q∈F⋃​L(q)

תרגול

תרגיל

יהא AAA האוטומט הבא:

example1 start q0 q0 start->q0 q1 q1 q0->q1 0 q2 q2 q0->q2 1 q1->q0 1 q1->q2 0 q2->q2 0,1

הוכיחו כי L(A)={01}∗L(A)=\left\{ 01 \right\}^*L(A)={01}∗.

הערה

נשים לב כי {0,1}∗≠{01}∗\left\{ 0,1 \right\}^*\neq\left\{ 01 \right\}^*{0,1}∗={01}∗ שכן הימני הוא רצפים של 010101 בעוד שהשמאלי הוא כל המילים הנוצרות מ-000 ו-111.

הוכחה:
כדי להוכיח את השוויון נראה כי לכל w∈{0,1}∗w \in \left\{ 0,1 \right\}^*w∈{0,1}∗ מתקיים:

w∈{01}∗  ⟺  w∈L(A)w \in \left\{ 01 \right\}^* \iff w \in L(A)w∈{01}∗⟺w∈L(A)

ישירות מהגדרת שוויון קבוצות.
נשים לב כי w∈L(A)w \in L(A)w∈L(A) ⇔ (מהגדרת שפת DFA) δ∗(q0,w)∈F\delta^*(q_{0},w)\in Fδ∗(q0​,w)∈F ⇔ (q0q_{0}q0​ מצב מקבל יחיד) δ∗(q0,w)=q0\delta^*(q_{0},w)=q_{0}δ∗(q0​,w)=q0​ ⇔ (הגדרת שפת מצב) w∈L(q0)w \in L(q_{0})w∈L(q0​).
לכן, מספקיל להוכיח כי לכל w∈{0,1}∗w \in \left\{ 0,1 \right\}^*w∈{0,1}∗ מתקיים: w∈{01}∗  ⟺  w∈L(q0)w \in \left\{ 01 \right\}^* \iff w \in L(q_{0})w∈{01}∗⟺w∈L(q0​).
נוכיח באינדוקציה כי:

  1. מתקיים: L(q0)={01}∗L(q_{0})=\left\{ 01 \right\}^*L(q0​)={01}∗
  2. מתקיים: L(q1)={01}∗∘{0}L(q_{1})=\left\{ 01 \right\}^* \circ \left\{ 0 \right\}L(q1​)={01}∗∘{0}.

בסיס: כאשר w=εw=\epsilonw=ε, כלומר, ∣w∣=0|w|=0∣w∣=0.
מתקיים כי ε∈{01}∗\epsilon \in \left\{ 01 \right\}^*ε∈{01}∗. בנוסף, δ∗(q1,ε)=q0\delta^*(q_{1},\epsilon)=q_{0}δ∗(q1​,ε)=q0​ מהגדרת δ∗\delta^*δ∗, ולכן מהגדרת שפת מצב ε∈L(q0)\epsilon \in L(q_{0})ε∈L(q0​). ⇐ טענה 1 מתקיימת באופן ריק.
מתקיים כי δ∗(q0,ε)=q0≠q1\delta^*(q_{0},\epsilon)=q_{0}\neq q_{1}δ∗(q0​,ε)=q0​=q1​. לכן, ε∉L(q1)\epsilon \not\in L(q_{1})ε∈L(q1​). בנוסף, ε∉{01}∗∘{0}\epsilon \not\in \left\{ 01 \right\}^*\circ\left\{ 0 \right\}ε∈{01}∗∘{0} כי ε\epsilonε לא מסתיימת ב-000 ולכן הטענה 2 מתקיימת באופן ריק.

צעד: נניח את נכונות טענות 1 ו-2 לכל מילה www באורך nnn ונראה למילה uuu מאורך n+1n+1n+1.
נסמן u=wσu=w\sigmau=wσ עבור w∈Σ∗w \in\Sigma^*w∈Σ∗ מאורך nnn ו-σ∈Σ\sigma \in\Sigmaσ∈Σ.

u∈{01}∗  ⟺  מבנה המילהw∈{01}∗∘{0}∧σ=1  ⟺  הנחת האינדוקציהw∈L(q1)∧σ=1  ⟺  מבנה האוטומטu∈L(q0)u \in \left\{ 01 \right\}^* \underset{\R{\text{מבנה המילה}}}{\iff} w \in \left\{ 01 \right\}^*\circ\left\{ 0 \right\} \land \sigma=1 \underset{\R{\text{הנחת האינדוקציה}}}{\iff} w \in L(q_{1}) \land \sigma=1\underset{\R{\text{מבנה האוטומט}}}{\iff} u \in L(q_{0})u∈{01}∗מבנה המילה⟺​w∈{01}∗∘{0}∧σ=1הנחת האינדוקציה⟺​w∈L(q1​)∧σ=1מבנה האוטומט⟺​u∈L(q0​)
הערה (הסבר לשלב האחרון שלא צריך לכתוב)

⇐: מניחים σ=1\sigma=1σ=1 ו-w∈L(q1)w \in L(q_{1})w∈L(q1​). ולכן:

δ∗(q0,u)=δ∗(q0,wσ)=δ(δ∗(q0,w),σ)=δ(q1,1)=q0\delta^*(q_{0},u)=\delta^*(q_{0},w\sigma)=\delta(\delta^*(q_{0},w),\sigma)=\delta(q_{1},1)=q_{0}δ∗(q0​,u)=δ∗(q0​,wσ)=δ(δ∗(q0​,w),σ)=δ(q1​,1)=q0​

⇒: מניחים u∈L(q0)u \in L(q_{0})u∈L(q0​). זה אומר ש-δ∗(q0,u)=q0\delta^*(q_{0},u)=q_{0}δ∗(q0​,u)=q0​ (לפי הגדרת שפת מצב)

q0=δ∗(q0,wσ)=δ(δ∗(q0,w),σ)q_{0}=\delta^*(q_{0},w\sigma)=\delta(\delta^*(q_{0},w),\sigma)q0​=δ∗(q0​,wσ)=δ(δ∗(q0​,w),σ)

ישנה רק דרך אחת להגיע ל-q0q_{0}q0​ בקריאת אות, והיא כאשר σ=1\sigma=1σ=1 ו-δ∗(q0,w)=q1\delta^*(q_{0},w)=q_{1}δ∗(q0​,w)=q1​.

כעת, נעבור להוכחת הטענה השנייה:

u∈{01}∗∘{0}  ⟺  מבנה uw∈{01}∗∧σ=0  ⟺  הנחת האינדוקציהw∈L(q0)∧σ=0u \in \left\{ 01 \right\}^* \circ \left\{ 0 \right\} \underset{\R{\text{מבנה u}}}{\iff} w \in \left\{ 01 \right\}^* \land \sigma=0 \underset{\R{\text{הנחת האינדוקציה}}}{\iff} w \in L(q_{0}) \land \sigma=0u∈{01}∗∘{0}מבנה u⟺​w∈{01}∗∧σ=0הנחת האינדוקציה⟺​w∈L(q0​)∧σ=0   ⟺  הגדרת שפת מצבδ∗(q0,w)=q0∧σ=0  ⟺  מבנה האוטומטδ∗(q0,u)=δ(δ∗(q0,w),σ)=q1\underset{\R{\text{הגדרת שפת מצב}}}{\iff} \delta^*(q_{0},w)=q_{0} \land \sigma=0 \underset{\R{\text{מבנה האוטומט}}}{\iff} \delta^*(q_{0},u)=\delta(\delta^*(q_{0},w),\sigma)=q_{1}הגדרת שפת מצב⟺​δ∗(q0​,w)=q0​∧σ=0מבנה האוטומט⟺​δ∗(q0​,u)=δ(δ∗(q0​,w),σ)=q1​   ⟺  הגדרת שפת מצבu∈L(q1)\underset{\R{\text{הגדרת שפת מצב}}}{\iff} u \in L(q_{1})הגדרת שפת מצב⟺​u∈L(q1​)

∎

תרגיל

בנו DFA עבור שפת המילים שמתחילות ב-aaa ומכילות מספר אי זוגי של bbb מעל Σ={a,b}\Sigma=\left\{ a,b \right\}Σ={a,b}.

הוכחה:

example1 start q0 q0 start->q0 q2 q2 q2->q2 a q1 q1 q2->q1 b q0->q1 a q3 q3 q0->q3 b q1->q2 b q1->q1 a q3->q3 a,b

∎

תרגיל

בנו DFA עבור שפת המילים המכילות את הרצף ababab.

הוכחה:

example1 start q0 q0 start->q0 q2 q2 q2->q2 a,b q0->q0 b q1 q1 q0->q1 a q1->q2 b q1->q1 a

∎

תרגיל

הוכיחו/הפריכו את הטענה הבאה:

u∈L1∧v∈L2  ⟺  u∘v∈L1∘L2u \in L_{1} \land v \in L_{2} \iff u \circ v \in L_{1} \circ L_{2}u∈L1​∧v∈L2​⟺u∘v∈L1​∘L2​

הוכחה:
⇒: נכון לפי הגדרת L1∘L2L_{1} \circ L_{2}L1​∘L2​.
⇐: נסתכל על דוגמה נגדית:

L1={aab},  L2={bba}L_{1}=\left\{ aab \right\},\; L_{2}=\left\{ bba \right\}L1​={aab},L2​={bba} u=a,v=abbbau=a,v=abbbau=a,v=abbba

∎