Języki, automaty i obliczenia/Ćwiczenia 7: Twierdzenie Kleene'ego. Własności języków i gramatyk regularnych: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
m Zastępowanie tekstu – „.</math>” na „</math>”
 
(Nie pokazano 17 wersji utworzonych przez 3 użytkowników)
Linia 1: Linia 1:
==ĆWICZENIA 7==
==Ćwiczenia 7==


{{cwiczenie|1.1||
{{cwiczenie|1||


Niech <math>\displaystyle A = \{a,b\}</math>. Dla automatów<center><math>\displaystyle {\mathcal B} = (S_{\mathcal B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B}),\;\;\;\; {\mathcal C} =  
Niech <math>A = \{a,b\}</math>. Dla automatów<center><math>{\mathcal B} = (S_{\mathcal B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B}),\;\;\;\; {\mathcal C} =  
(S_{\mathcal C},A,f_{\mathcal C},s_{\mathcal C},F_{\mathcal C})</math></center>
(S_{\mathcal C},A,f_{\mathcal C},s_{\mathcal C},F_{\mathcal C})</math></center>
<center><math>\displaystyle S_{\mathcal B} = \{s_{\mathcal B},s_1,s_2\},  
<center><math>S_{\mathcal B} = \{s_{\mathcal B},s_1,s_2\},  
\;\;F_{\mathcal B} = \{s_2\},\;\;\; S_{\mathcal C} = \{s_{\mathcal C},s\},\;\; F_{\mathcal C} = \{s\},</math></center>
\;\;F_{\mathcal B} = \{s_2\},\;\;\; S_{\mathcal C} = \{s_{\mathcal C},s\},\;\; F_{\mathcal C} = \{s\}</math>,</center>
gdzie
gdzie


<center><math>\displaystyle \begin{array} {c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 \\  
<center><math>\begin{array} {c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 \\  
\hline a & s_2 & s_1 & s_2 \\ \hline b & s_1 & s_1 & s_2\\  
\hline a & s_2 & s_1 & s_2 \\ \hline b & s_1 & s_1 & s_2\\  
\hline \end{array}  \hspace{2cm} \begin{array} {c|c|c|} f_{\mathcal C} &s_{\mathcal C} &s \\ \hline a & s & s \\  
\hline \end{array}  \begin{array} {c|c|c|} f_{\mathcal C} &s_{\mathcal C} &s \\ \hline a & s & s \\  
\hline b & s_{\mathcal C} & s_{\mathcal C} \\ \hline \end{array} </math></center>
\hline b & s_{\mathcal C} & s_{\mathcal C} \\ \hline \end{array}</math></center>


skonstruuj automat <math>\displaystyle \mathcal A</math> taki, że <center><math>\displaystyle L({\mathcal A}) = L({\mathcal B}) \cap L({\mathcal C}),</math></center>
skonstruuj automat <math>\mathcal A</math> taki, że <center><math>L({\mathcal A}) = L({\mathcal B}) \cap L({\mathcal C})</math>,</center>


}}
}}


Rozwiązanie.
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"><math>L({\mathcal A})= (S_{\mathcal B}\times S_{\mathcal C},A,f_{\mathcal A},(s_{\mathcal B},s_{\mathcal C}),
<math>\displaystyle L({\mathcal A})= (S_{\mathcal B}\times S_{\mathcal C},A,f_{\mathcal A},(s_{\mathcal B},s_{\mathcal C}),
F_{\mathcal B}\times  F_{\mathcal C})</math>. Funkcja przejść zadana jest grafem  
F_{\mathcal B}\times  F_{\mathcal C})</math>. Funkcja przejść zadana jest grafem  


rys1<br>
<center>
[[File:ja-lekcja07-c-rys1.svg|250x250px|thumb|center|Rysunek 1]]
</center>


Zauważ, że otrzymany automat nie jest minimalny. Jakie języki akceptują automaty <math>\displaystyle {\mathcal A}</math>, <math>\displaystyle {\mathcal B}</math> i <math>\displaystyle {\mathcal C}</math>?
Zauważ, że otrzymany automat nie jest minimalny. Jakie języki akceptują automaty <math>{\mathcal A}</math>, <math>{\mathcal B}</math> i <math>{\mathcal C}</math>?
</div></div>
</div></div>
{{cwiczenie|1.2||
{{cwiczenie|2||


Niech <math>\displaystyle A = \{a,b\}</math>. Dla automatu <center><math>\displaystyle {\mathcal B} = (S_{\mathcal  
Niech <math>A = \{a,b\}</math>. Dla automatu <center><math>{\mathcal B} = (S_{\mathcal  
B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B}),</math></center>
B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B})</math>,</center>
gdzie  
gdzie  
<center><math>\displaystyle S_{\mathcal B} = \{s_{\mathcal B},s_1,s_2\},  
<center><math>S_{\mathcal B} = \{s_{\mathcal B},s_1,s_2\},  
\;\;F_{\mathcal B} = \{s_1\},</math></center>
\;\;F_{\mathcal B} = \{s_1\}</math>,</center>
a funkcja przejść zdefiniowana jest  
a funkcja przejść zdefiniowana jest  
następująco:
następująco:


<center><math>\displaystyle \begin{array} {c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 \\  
<center><math>\begin{array} {c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 \\  
\hline a & s_1 & s_2 & s_2 \\ \hline b & s_1 & s_{\mathcal{B}} & s_1\\  
\hline a & s_1 & s_2 & s_2 \\ \hline b & s_1 & s_{\mathcal{B}} & s_1\\  
\hline \end{array} </math></center>
\hline \end{array}</math></center>


skonstruuj automat deterministyczny <math>\displaystyle \mathcal A</math> taki, że  
skonstruuj automat deterministyczny <math>\mathcal A</math> taki, że  
<center><math>\displaystyle L({\mathcal A}) = L({\mathcal B})^*.</math></center>
<center><math>L({\mathcal A}) = L({\mathcal B})^*</math>.</center>


}}
}}
Linia 48: Linia 49:
</div></div>
</div></div>
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
Automat <math>\displaystyle \mathcal{B}</math> pokazany jest na rysunku [[##ja-lekcja7-c-rys2|Uzupelnic ja-lekcja7-c-rys2|]].
Automat <math>\mathcal{B}</math> pokazany jest na rysunku 2.
<center>
[[File:ja-lekcja07-c-rys2.svg|250x150px|thumb|center|Rysunek 2]]
</center>


RYSUNEK ja-lekcja7-c-rys2
Aby skonstruować automat akceptujący język <math>L(\mathcal{B})^*</math>,
wystarczy dodać przejście <math>f(s_1,1)=s_{\mathcal{B}}</math> (dlaczego?).
Automat z pustymi przejściami akceptujący <math>L(\mathcal{B})^*</math>
pokazany jest na rysunku 3.
<center>
[[File:ja-lekcja07-c-rys3.svg|250x150px|thumb|center|Rysunek 3]]
</center>


Aby skonstruować automat akceptujący język <math>\displaystyle L(\mathcal{B})^*</math>,
Po usunięciu pustych przejść otrzymujemy automat z rysunku 4:
wystarczy dodać przejście <math>\displaystyle f(s_1,1)=s_{\mathcal{B}}</math> (dlaczego?).
<center>
Automat z pustymi przejściami akceptujący <math>\displaystyle L(\mathcal{B})^*</math>
[[File:ja-lekcja07-c-rys4.svg|250x250px|thumb|center|Rysunek 4]]
pokazany jest na rysunku [[##ja-lekcja7-c-rys3|Uzupelnic ja-lekcja7-c-rys3|]].
</center>
 
RYSUNEK ja-lekcja7-c-rys3
 
Po usunięciu pustych przejść otrzymujemy automat z rysunku  
[[##ja-lekcja7-c-rys4|Uzupelnic ja-lekcja7-c-rys4|]]:
 
RYSUNEK ja-lekcja7-c-rys4


Teraz wystarczy skonstruować równoważny  automat deterministyczny.
Teraz wystarczy skonstruować równoważny  automat deterministyczny.
</div></div>
</div></div>
{{cwiczenie|1.3||


Dane są dwa automaty nad tym samym alfabetem <math>\displaystyle A</math><br>
{{cwiczenie|3||
<math>\displaystyle \mathcal{A}=(S,f,s_{0},T)</math> i <math>\displaystyle \mathcal{B}=(Q,g,t_{0},F)</math>. Udowodnij,
 
że istnieje liczba <math>\displaystyle  p\in{\Bbb N}_{0}</math> taka, że jeśli dla każdego słowa <math>\displaystyle w</math> o długości <math>\displaystyle |w|\leq p</math> spełniona jest implikacja
Dane są dwa automaty nad tym samym alfabetem <math>A</math><br>
<math>\displaystyle w\in L(\mathcal{A})\Rightarrow w\in L(\mathcal{B})</math>,
<math>\mathcal{A}=(S,f,s_{0},T)</math> i <math>\mathcal{B}=(Q,g,t_{0},F)</math>. Udowodnij,
że istnieje liczba <math>p\in{\Bbb N}_{0}</math> taka, że jeśli dla każdego słowa <math>w</math> o długości <math>|w|\leq p</math> spełniona jest implikacja
<math>w\in L(\mathcal{A})\Rightarrow w\in L(\mathcal{B})</math>,
to  
to  


<center><math>\displaystyle L(\mathcal{A})\subseteq L(\mathcal{B})</math></center>
<center><math>L(\mathcal{A})\subseteq L(\mathcal{B})</math></center>


}}
}}


<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
Niech <math>\displaystyle \mathcal{C}</math> będzie automatem takim, że <math>\displaystyle L(\mathcal{C})=L(\mathcal{A})\cup L(\mathcal{B})</math>. Wówczas,   
Niech <math>\mathcal{C}</math> będzie automatem takim, że <math>L(\mathcal{C})=L(\mathcal{A})\cup L(\mathcal{B})</math>. Wówczas,   
<center><math>\displaystyle L(\mathcal{C})\subseteq L(\mathcal{B})\Leftrightarrow L(\mathcal{A})\subseteq L(\mathcal{B}).</math></center>
<center><math>L(\mathcal{C})\subseteq L(\mathcal{B})\Leftrightarrow L(\mathcal{A})\subseteq L(\mathcal{B})</math>.</center>


Udowodnimy więc inkluzję <math>\displaystyle L(\mathcal{C})\subseteq L(\mathcal{B})</math>, gdzie
Udowodnimy więc inkluzję <math>L(\mathcal{C})\subseteq L(\mathcal{B})</math>, gdzie
<center><math>\displaystyle \mathcal{C}=(S\times Q,f\times g,(s_0,t_0), (S\times F \cup T\times Q)).</math></center>
<center><math>\mathcal{C}=(S\times Q,f\times g,(s_0,t_0), (S\times F \cup T\times Q))</math>.</center>


Przyjmijmy <math>\displaystyle p=|S| \cdot |Q|</math>. Niech <math>\displaystyle w \in L(\mathcal{C})</math>  
Przyjmijmy <math>p=|S| \cdot |Q|</math>. Niech <math>w \in L(\mathcal{C})</math>  
# Jeśli <math>\displaystyle |w|\leq p</math>, to z założenia <math>\displaystyle w \in L(\mathcal{B})</math>
# Jeśli <math>|w|\leq p</math>, to z założenia <math>w \in L(\mathcal{B})</math>
# Jeśli <math>\displaystyle |w|>p</math>, to z lematu o pompowaniu wynika, że <math>\displaystyle \exists v_1 v_2 \in A^*</math>, <math>\displaystyle \exists u \in A^+</math> takie, że <math>\displaystyle w=v_1 uv_2</math>,  <math>\displaystyle v_1 v_2 \in L(\mathcal{C})</math> i <math>\displaystyle |v_1v_2|<|w|</math>.
# Jeśli <math>|w|>p</math>, to z lematu o pompowaniu wynika, że <math>\exists v_1 v_2 \in A^*</math>, <math>\exists u \in A^+</math> takie, że <math>w=v_1 uv_2</math>,  <math>v_1 v_2 \in L(\mathcal{C})</math> i <math>|v_1v_2|<|w|</math>.
<center><math>\displaystyle (f\times g)((s_0,t_0),w) =  (f\times g)((s_0,t_0),v_1 v_2)=(f(s_0,v_1v_2),g(t_0,v_1v_2))
<center><math>(f\times g)((s_0,t_0),w) =  (f\times g)((s_0,t_0),v_1 v_2)=(f(s_0,v_1v_2),g(t_0,v_1v_2))
\in S\times F \cup T\times Q   </math></center>
\in S\times F \cup T\times Q </math></center>
Mamy dwie możliwości:
Mamy dwie możliwości:
## <math>\displaystyle g(t_0,v_1v_2) \in F</math>, co oznacza  <math>\displaystyle v_1v_2 \in L(\mathcal{B})</math>, <math>\displaystyle w \in  
 
:(a) <math>g(t_0,v_1v_2) \in F</math>, co oznacza  <math>v_1v_2 \in L(\mathcal{B})</math>, <math>w \in  
L(\mathcal{B})</math>,
L(\mathcal{B})</math>,
## <math>\displaystyle  f(s_0,v_1v_2)\in T</math>, co oznacza  <math>\displaystyle v_1v_2 \in L(\mathcal{A})</math>. <br>
 
Jeśli <math>\displaystyle |v_1v_2|<p</math>, to <math>\displaystyle v_1v_2 \in L(\mathcal{B})</math>, <math>\displaystyle w \in L(\mathcal{B})</math>.<br>
:(b) <math>f(s_0,v_1v_2)\in T</math>, co oznacza  <math>v_1v_2 \in L(\mathcal{A})</math>. <br>
Jeśli <math>\displaystyle |v_1v_2|>p</math>, to powtarzamy punkt 2.
: Jeśli <math>|v_1v_2|<p</math>, to <math>v_1v_2 \in L(\mathcal{B})</math>, <math>w \in L(\mathcal{B})</math>.<br>
: Jeśli <math>|v_1v_2|>p</math>, to powtarzamy punkt 2.


Po każdym kroku długość rozważanego słowa silnie maleje, więc po skończonej ilości kroków uzyskamy oczekiwany efekt.<br>
Po każdym kroku długość rozważanego słowa silnie maleje, więc po skończonej ilości kroków uzyskamy oczekiwany efekt.<br>
Zauważ, że z zadania tego wynika
Zauważ, że z zadania tego wynika
rozstrzygalność problemu równoważności automatów.  Algorytmiczny aspekt tego problemu rozważymy w ćwiczeniach  
rozstrzygalność problemu równoważności automatów.  Algorytmiczny aspekt tego problemu rozważymy w ćwiczeniach 8.
[[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]].
</div></div>
</div></div>
{{cwiczenie|1.4||


Niech <math>\displaystyle A</math> będzie dowolnym alfabetem, a <math>\displaystyle L \subset A^*</math> językiem regularnym. Udowodnij, że język
{{cwiczenie|4||
<math>\displaystyle L'=\{a^{|w|} :w \in L\}</math> jest też językiem regularnym.
 
Niech <math>A</math> będzie dowolnym alfabetem, a <math>L \subset A^*</math> językiem regularnym. Udowodnij, że język
<math>L'=\{a^{|w|} :w \in L\}</math> jest też językiem regularnym.
}}
}}


<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none">
Rozważmy homomorfizm <math>\displaystyle h:A^* \longrightarrow \{a\}^*</math> taki, że <math>\displaystyle \forall  
Rozważmy homomorfizm <math>h:A^* \longrightarrow \{a\}^*</math> taki, że <math>\forall  
x \in A\displaystyle f(x)=a</math>. Dla tak zdefiniowanego <math>\displaystyle h</math> język <math>\displaystyle L'</math> jest homomorficzym obrazem języka regularnego  <math>\displaystyle L'=h(L)</math>,  
x \in A\quad f(x)=a</math>. Dla tak zdefiniowanego <math>h</math> język <math>L'</math> jest homomorficzym obrazem języka regularnego  <math>L'=h(L)</math>,  
a więc jest regularny.
a więc jest regularny.
</div></div>
</div></div>
{{cwiczenie|1.5||
 
{{cwiczenie|5||


Udowodnij, że następujące języki nie są regularne:
Udowodnij, że następujące języki nie są regularne:
# <math>\displaystyle L = \{a^n : n \; \text{nie jest liczbą pierwszą\;} \}</math>,
# <math>L = \{a^n : n \; \text{nie jest liczbą pierwszą;} \}</math>,
# <math>\displaystyle L=\left\{ a^{n}b^{m}:0\leq n,m;\;n\neq m\right\} </math>.
# <math>L=\left\{ a^{n}b^{m}:0\leq n,m;\;n\neq m\right\}</math>.


}}
}}


<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie punktu 1</span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie punktu 1</span><div class="mw-collapsible-content" style="display:none">
Skorzystamy z faktu, że język <math>\displaystyle L' = \{a^n : n  
Skorzystamy z faktu, że język <math>L' = \{a^n : n  
\; \text{ jest liczbą pierwszą\;} \}</math> nie jest akceptowany (
\; \text{ jest liczbą pierwszą;} \}</math> nie jest akceptowany (
ćwiczenie [[##ja-lekcja6-c cw1.8)|Uzupelnic ja-lekcja6-c cw1.8)|]]), a więc nie  jest regularny.  
ćwiczenie 8), a więc nie  jest regularny.  
<center><math>\displaystyle a^*=L \cup L', L\cap L' = \emptyset, \;\text {a więc}\;L'=\overline{L}. </math></center>
<center><math>a^*=L \cup L', L\cap L' = \emptyset, \;\text {a więc}\;L'=\overline{L}</math></center>


Ponieważ klasa języków regularnych jest zamknięta ze względu na  
Ponieważ klasa języków regularnych jest zamknięta ze względu na  
uzupełnienie, to  <math>\displaystyle  L \notin \mathcal{REG}</math>.
uzupełnienie, to  <math>L \notin \mathcal{REG}</math>.
</div></div>
</div></div>
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie punktu 2</span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie punktu 2</span><div class="mw-collapsible-content" style="display:none">
Język <math>\displaystyle L'=\left\{ a^{n}b^{n}:0\leq n \right\} </math> nie jest  akceptowany  
Język <math>L'=\left\{ a^{n}b^{n}:0\leq n \right\}</math> nie jest  akceptowany  
(patrz przykład [[##ja-lekcja6-w ex3.1)|Uzupelnic ja-lekcja6-w ex3.1)|]]), a więc nie  jest regularny.
(patrz [[Języki, automaty i obliczenia/Wykład 6: Automat niedeterministyczny. Lemat o pompowaniu#przyklad_3_1|3.1. z wykładu 6]]), a więc nie  jest regularny.
<center><math>\displaystyle a^*b^* =L \cup L',L\cap L' = \emptyset,\;\text {a więc}\;L'=a^* b^* \cap\overline{L}.</math></center>
<center><math>a^*b^* =L \cup L',L\cap L' = \emptyset,\;\text {a więc}\;L'=a^* b^* \cap\overline{L}</math>.</center>


Ponieważ klasa języków regularnych jest zamknięta ze względu na  
Ponieważ klasa języków regularnych jest zamknięta ze względu na  
uzupełnienie i przecięcie, to  <math>\displaystyle  L \notin \mathcal{REG}</math>.
uzupełnienie i przecięcie, to  <math>L \notin \mathcal{REG}</math>.
</div></div>
</div></div>
ZADANIA DOMOWE
<center>ZADANIA DOMOWE</center>


{{cwiczenie|1.6||
{{cwiczenie|6||


Niech <math>\displaystyle A = \{a,b\}</math>.  Skonstruuj automat <math>\displaystyle \mathcal A</math>, taki że
Niech <math>A = \{a,b\}</math>.  Skonstruuj automat <math>\mathcal A</math>, taki że
# <math>\displaystyle L({\mathcal A}) = L({\mathcal B}) \cup L({\mathcal C}),</math> gdzie <center><math>\displaystyle {\mathcal B} =  
1. <math>L({\mathcal A}) = L({\mathcal B}) \cup L({\mathcal C})</math>, gdzie <center><math>{\mathcal B} =  
(S_{\mathcal B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B}),\;\;\;\; {\mathcal C} =  
(S_{\mathcal B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B}),\;\;\;\; {\mathcal C} =  
(S_{\mathcal C},A,f_{\mathcal C},s_{\mathcal C},F_{\mathcal C}),</math></center>
(S_{\mathcal C},A,f_{\mathcal C},s_{\mathcal C},F_{\mathcal C})</math>,</center>
<center><math>\displaystyle S_{\mathcal B} =  
<center><math>S_{\mathcal B} =  
\{s_{\mathcal B},s_1,s_2\}, \;\;F_{\mathcal B} = \{s_2\},\;\;\; S_{\mathcal C} =  
\{s_{\mathcal B},s_1,s_2\}, \;\;F_{\mathcal B} = \{s_2\},\;\;\; S_{\mathcal C} =  
\{s_{\mathcal C},{s'}_1,{s'}_2\},\;\; F_{\mathcal C} = \{{s'}_2\},</math></center>
\{s_{\mathcal C},{s'}_1,{s'}_2\},\;\; F_{\mathcal C} = \{{s'}_2\}</math>,</center>
 


<center><math>\displaystyle \begin{array} {c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 \\  
<center><math>\begin{array} {c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 \\  
\hline a & s_2 & s_1 & s_2 \\ \hline b & s_1 & s_1 & s_2\\ \hline \end{array}  \hspace{2cm}
\hline a & s_2 & s_1 & s_2 \\ \hline b & s_1 & s_1 & s_2\\ \hline \end{array}   
\begin{array} {c|c|c|c|} f_{\mathcal C} &s_{\mathcal C} &{s'}_1&{s'}_2 \\ \hline a & {s'}_1 & {s'}_1& {s'}_2 \\  
\begin{array} {c|c|c|c|} f_{\mathcal C} &s_{\mathcal C} &{s'}_1&{s'}_2 \\ \hline a & {s'}_1 & {s'}_1& {s'}_2 \\  
\hline b & {s'}_2 & {s'}_1& {s'}_2 \\ \hline \end{array} </math></center>
\hline b & {s'}_2 & {s'}_1& {s'}_2 \\ \hline \end{array}</math></center>
# <math>\displaystyle L({\mathcal A}) = L({\mathcal B})^*,</math> gdzie <center><math>\displaystyle {\mathcal B} =  
2. <math>L({\mathcal A}) = L({\mathcal B})^*</math>, gdzie <center><math>{\mathcal B} =  
(S_{\mathcal B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B}),</math></center>
(S_{\mathcal B},A,f_{\mathcal B},s_{\mathcal B},F_{\mathcal B})</math>,</center>
 
<center><math>S_{\mathcal B} = \{s_{\mathcal B},s_1,s_2,s_3\}, \;\;F_{\mathcal
B} = \{s_2\}</math>,</center>


<center><math>\displaystyle S_{\mathcal B} = \{s_{\mathcal B},s_1,s_2,s_3\}, \;\;F_{\mathcal
B} = \{s_2\},</math></center>


<center><math>\displaystyle \begin{array} {c|c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 & s_3\\ \hline a & s_1 & s_3 & s_3 & s_3 \\  
<center><math>\begin{array} {c|c|c|c|c|} f_{\mathcal B} &s_{\mathcal B} &s_1 & s_2 & s_3\\ \hline a & s_1 & s_3 & s_3 & s_3 \\  
\hline b & s_3 & s_2 & s_3 &s_3\\ \hline \end{array} </math></center>
\hline b & s_3 & s_2 & s_3 &s_3\\ \hline \end{array}</math></center>


Podaj dwie konstrukcje:   
Podaj dwie konstrukcje:   
Linia 169: Linia 178:
}}
}}


{{cwiczenie|1.7||
{{cwiczenie|7||


Skonstruuj minimalny automat <math>\displaystyle \mathcal{A}</math>, taki że  
Skonstruuj minimalny automat <math>\mathcal{A}</math>, taki że  
<math>\displaystyle L(\mathcal{A})=L(\mathcal{B})^*</math>, gdzie <math>\displaystyle \mathcal{B}</math> opisany jest  
<math>L(\mathcal{A})=L(\mathcal{B})^*</math>, gdzie <math>\mathcal{B}</math> opisany jest  
poniższym grafem:
poniższym grafem:}}
<center>
[[File:ja-lekcja07-c-rys5.svg|250x250px|thumb|center|Rysunek 5]]
</center>


RYSUNEK ja-lekcja7-c-rys5 <br>


}}
{{cwiczenie|8||
 
{{cwiczenie|1.8||


Udowodnij, że następujące języki nie są regularne:
Udowodnij, że następujące języki nie są regularne:
# <math>\displaystyle L=\left\{ a^{n}b^{m}c^n:0<n,m\right\}</math>,
# <math>L=\left\{ a^{n}b^{m}c^n:0<n,m\right\}</math>,
# <math>\displaystyle L = \{(ab)^n(bc)^n : n \geq 0 \}</math>. <br>
# <math>L = \{(ab)^n(bc)^n : n \geq 0 \}</math>. <br>
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka do punktu 2 </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka do punktu 2 </span><div class="mw-collapsible-content" style="display:none">
Wykorzystaj fakt, że język <math>\displaystyle \left\{ a^{n}b^{n}:n \geq 0\right\} </math> nie jest regularny oraz
Wykorzystaj fakt, że język <math>\left\{ a^{n}b^{n}:n \geq 0\right\}</math> nie jest regularny oraz
domkniętość klasy języków regularnych ze względu na homomorfizm.
domkniętość klasy języków regularnych ze względu na homomorfizm.
</div></div>
</div></div>
}}
 
{{cwiczenie|1.9||
{{cwiczenie|9||


Zbuduj automat akceptujący język będący ogółem skończonych sekwencji  
Zbuduj automat akceptujący język będący ogółem skończonych sekwencji  
binarnych, w których liczba zer jest podzielna przez dwa, a liczba  
binarnych, w których liczba zer jest podzielna przez dwa, a liczba  
jedynek przez 3, a następnie gramatykę generującą ten język.
jedynek przez 3, a następnie gramatykę generującą ten język.
 
}}
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none">
Stany automatu niech będą postaci <math>\displaystyle (x,y)</math>, gdzie <math>\displaystyle x \in  
Stany automatu niech będą postaci <math>(x,y)</math>, gdzie <math>x \in  
\{0, 1\}</math>, <math>\displaystyle y \in \{0, 1, 2\}</math>. Stan początkowy to <math>\displaystyle (0,0)</math>. Określ  
\{0, 1\}</math>, <math>y \in \{0, 1, 2\}</math>. Stan początkowy to <math>(0,0)</math>. Określ  
funkcję przejść w ten sposób, że po przeczytaniu przez automat słowa  
funkcję przejść w ten sposób, że po przeczytaniu przez automat słowa  
zawierającego <math>\displaystyle k</math> symboli 0 oraz <math>\displaystyle l</math> symboli 1 automat znajdzie się  
zawierającego <math>k</math> symboli 0 oraz <math>l</math> symboli 1 automat znajdzie się  
w stanie <math>\displaystyle (k \mod 2, l \mod 3)</math>. Zastanów się, który stan będzie  
w stanie <math>(k \mod 2, l \mod 3)</math>. Zastanów się, który stan będzie  
stanem końcowym. Na podstawie automatu określ gramatykę.
stanem końcowym. Na podstawie automatu określ gramatykę.
}}</div>
</div></div>

Aktualna wersja na dzień 11:25, 5 wrz 2023

Ćwiczenia 7

Ćwiczenie 1

Niech A={a,b}. Dla automatów
=(S,A,f,s,F),𝒞=(S𝒞,A,f𝒞,s𝒞,F𝒞)
S={s,s1,s2},F={s2},S𝒞={s𝒞,s},F𝒞={s},

gdzie

fss1s2as2s1s2bs1s1s2f𝒞s𝒞sassbs𝒞s𝒞
skonstruuj automat 𝒜 taki, że
L(𝒜)=L()L(𝒞),
Rozwiązanie

Ćwiczenie 2

Niech A={a,b}. Dla automatu
=(S,A,f,s,F),

gdzie

S={s,s1,s2},F={s1},

a funkcja przejść zdefiniowana jest następująco:

fss1s2as1s2s2bs1ss1

skonstruuj automat deterministyczny 𝒜 taki, że

L(𝒜)=L()*.
Wskazówka
Rozwiązanie

Ćwiczenie 3

Dane są dwa automaty nad tym samym alfabetem A
𝒜=(S,f,s0,T) i =(Q,g,t0,F). Udowodnij, że istnieje liczba p0 taka, że jeśli dla każdego słowa w o długości |w|p spełniona jest implikacja wL(𝒜)wL(), to

L(𝒜)L()
Rozwiązanie

Ćwiczenie 4

Niech A będzie dowolnym alfabetem, a LA* językiem regularnym. Udowodnij, że język L={a|w|:wL} jest też językiem regularnym.

Rozwiązanie

Ćwiczenie 5

Udowodnij, że następujące języki nie są regularne:

  1. L={an:nnie jest liczbą pierwszą;},
  2. L={anbm:0n,m;nm}.
Rozwiązanie punktu 1
Rozwiązanie punktu 2
ZADANIA DOMOWE

Ćwiczenie 6

Niech A={a,b}. Skonstruuj automat 𝒜, taki że

1. L(𝒜)=L()L(𝒞), gdzie
=(S,A,f,s,F),𝒞=(S𝒞,A,f𝒞,s𝒞,F𝒞),
S={s,s1,s2},F={s2},S𝒞={s𝒞,s1,s2},F𝒞={s2},


fss1s2as2s1s2bs1s1s2f𝒞s𝒞s1s2as1s1s2bs2s1s2
2. L(𝒜)=L()*, gdzie
=(S,A,f,s,F),
S={s,s1,s2,s3},F={s2},


fss1s2s3as1s3s3s3bs3s2s3s3

Podaj dwie konstrukcje:

  1. opartą na dowodzie twierdzenia Kleene'ego,
  2. z wykorzystaniem automatu z pustymi przejściami.

Ćwiczenie 7

Skonstruuj minimalny automat 𝒜, taki że L(𝒜)=L()*, gdzie opisany jest

poniższym grafem:
Rysunek 5


Ćwiczenie 8

Udowodnij, że następujące języki nie są regularne:

  1. L={anbmcn:0<n,m},
  2. L={(ab)n(bc)n:n0}.
Wskazówka do punktu 2

Ćwiczenie 9

Zbuduj automat akceptujący język będący ogółem skończonych sekwencji binarnych, w których liczba zer jest podzielna przez dwa, a liczba jedynek przez 3, a następnie gramatykę generującą ten język.

Wskazówka