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

8 - אוטומט מכפלה

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

8 - אוטומט מכפלה

02340129

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

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

אוטומט מכפלה

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

uni-folder.vercel.app

הגדרה 1

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

אוטומט מכפלה לחיתוך

בהנתן שתי שפות רגולריות L1,L2L_{1},L_{2}L1​,L2​ ו-DFADFADFA-ים A1,A2A_{1},A_{2}A1​,A2​

A1=(Q1,Σ,q01,δ1,F1)A_{1}=(Q_{1},\Sigma,q_{0}^1,\delta_{1},F_{1})A1​=(Q1​,Σ,q01​,δ1​,F1​) A2=(Q2,Σ,q02,δ2,F2)A_{2}=(Q_{2},\Sigma,q_{0}^2,\delta_{2},F_{2})A2​=(Q2​,Σ,q02​,δ2​,F2​) L(A2)=L2,L(A1)=L1L(A_{2})=L_{2},L(A_{1})=L_{1}L(A2​)=L2​,L(A1​)=L1​

אז נגדיר את אוטומט המכפלה עבור L1∩L2L_{1} \cap L_{2}L1​∩L2​ כך:

A=(Q,Σ,q0,δ,F)A=(Q,\Sigma,q_{0},\delta,F)A=(Q,Σ,q0​,δ,F) Q=Q1×Q2Q=Q_{1}\times Q_{2}Q=Q1​×Q2​ q0=(q01,q02)q_{0}=(q_{0}^1,q_{0}^2)q0​=(q01​,q02​) F=F1×F2F=F_{1}\times F_{2}F=F1​×F2​ ∀(q,p)∈Q  ∀σ∈Σ:  δ((q,p),σ)=(δ1(q,σ),δ2(p,σ))\forall(q,p)\in Q\; \forall\sigma \in\Sigma:\; \delta((q,p),\sigma)=(\delta_{1}(q,\sigma),\delta_{2}(p,\sigma))∀(q,p)∈Q∀σ∈Σ:δ((q,p),σ)=(δ1​(q,σ),δ2​(p,σ))

מתקיים: L(A)=L1∩L2L(A)=L_{1} \cap L_{2}L(A)=L1​∩L2​.

דוגמה

Σ={a,b},L1={a}∗,L2={b}∗\Sigma=\left\{ a,b \right\}, L_{1}=\left\{ a \right\}^*,L_{2}=\left\{ b \right\}^*Σ={a,b},L1​={a}∗,L2​={b}∗
example1 start q0 q0 start->q0 q0->q0 a q1 q1 q0->q1 b q1->q1 a,b
example1 start q0 q0 start->q0 q0->q0 b q1 q1 q0->q1 a q1->q1 a,b

כעת, נבנה אוטומט ל-L1∩L2L_{1}\cap L_{2}L1​∩L2​.

example1 start q0p0 q0p0 start->q0p0 q0p1 q0p1 q0p0->q0p1 a q1p0 q1p0 q0p0->q1p0 b q0p1->q0p1 a q1p1 q1p1 q0p1->q1p1 b q1p0->q1p0 b q1p0->q1p1 a q1p1->q1p1 a,b

אין זה האוטומט הכי קטן לשפה, אך הוא תמיד יעבוד.

אוטומט מכפלה לאיחוד

נשנה את FFF להיות:

F=(F1×Q2)∪(Q1×F2)F=(F_{1}\times Q_{2})\cup(Q_{1}\times F_{2})F=(F1​×Q2​)∪(Q1​×F2​)

באוטומט שבנינו, נוכל לשנות את זה לכך ש-q0p1q_{0}p_{1}q0​p1​ ו-q1p0q_{1}p_{0}q1​p0​ יהיו מצבים מקבלים בנוסף ל-q0p0q_{0}p_{0}q0​p0​.

תרגול

תרגיל

נתונות שתי שפות L1,L2L_{1},L_{2}L1​,L2​ מעל אותו א"ב Σ\SigmaΣ.
נגדיר שפה חדשה - שפת הריצ'רץ':

Lzip={σ1γ1…σnγn∣σ1,…,σn∈L1,γ1,…,γn∈L2}L_{zip}=\left\{ \sigma_{1}\gamma_{1}\dots\sigma_{n}\gamma_{n}|\sigma_{1},\dots,\sigma_{n}\in L_{1},\gamma_{1},\dots,\gamma_{n}\in L_{2} \right\}Lzip​={σ1​γ1​…σn​γn​∣σ1​,…,σn​∈L1​,γ1​,…,γn​∈L2​}

הוכיחו כי אם L1,L2L_{1},L_{2}L1​,L2​ רגולריותף אז גם LzipL_{zip}Lzip​ רגולרית.

הוכחה:
נתון כי L1,L2L_{1},L_{2}L1​,L2​ רגולריות, לכן, מהגדרה, קיימים אוטומטים סופיים דטרמיניסים A1,A2A_{1},A_{2}A1​,A2​ עבורן. נסמן i∈{1,2}i \in \left\{ 1,2 \right\}i∈{1,2}:

Ai=(Qi,Σ,q0i,δi,Fi)A_{i}=(Q_{i},\Sigma,q_{0}^i,\delta_{i},F_{i})Ai​=(Qi​,Σ,q0i​,δi​,Fi​)

ומתקיים L(Ai)=LiL(A_{i})=L_{i}L(Ai​)=Li​.
נגדיר אוטומט AAA עבור LzipL_{zip}Lzip​:

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

נגדיר Q=Q1×Q2×{1,2}Q=Q_{1}\times Q_{2}\times \left\{ 1,2 \right\}Q=Q1​×Q2​×{1,2}.
נבחר q0=(q01,q02,1)q_{0}=(q_{0}^1,q_{0}^2,1)q0​=(q01​,q02​,1).
לכל σ∈Σ\sigma \in\Sigmaσ∈Σ ולכל q∈Q1,p∈Q2q \in Q_{1},p \in Q_{2}q∈Q1​,p∈Q2​:

δ((q,p,1),σ)=(δ1(q,σ),p,2)δ((q,p,2),σ)=(q,δ2(p,σ),1)\begin{matrix} \delta((q,p,1),\sigma)= (\delta_{1}(q,\sigma),p,2)\\ \delta((q,p,2),\sigma)=(q,\delta_{2}(p,\sigma),1) \end{matrix}δ((q,p,1),σ)=(δ1​(q,σ),p,2)δ((q,p,2),σ)=(q,δ2​(p,σ),1)​

נגדיר את FFF להיות:

F=F1×F2×{1}F=F_{1}\times F_{2}\times \left\{ 1 \right\}F=F1​×F2​×{1}

כעת, נוכיח את נכונות האוטומט.(כלומר, נוכיח כי L(A)=LzipL(A)=L_{zip}L(A)=Lzip​)

∎