Języki, automaty i obliczenia/Ćwiczenia 7: Twierdzenie Kleene'ego. Własności języków i gramatyk regularnych: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
==ĆWICZENIA 7== | ==ĆWICZENIA 7== | ||
{{cwiczenie| | {{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>\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} = | ||
Linia 30: | Linia 30: | ||
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>\displaystyle {\mathcal A}</math>, <math>\displaystyle {\mathcal B}</math> i <math>\displaystyle {\mathcal C}</math>? | ||
</div></div> | </div></div> | ||
{{cwiczenie| | {{cwiczenie|2|| | ||
Niech <math>\displaystyle A = \{a,b\}</math>. Dla automatu <center><math>\displaystyle {\mathcal B} = (S_{\mathcal | Niech <math>\displaystyle A = \{a,b\}</math>. Dla automatu <center><math>\displaystyle {\mathcal B} = (S_{\mathcal | ||
Linia 63: | Linia 63: | ||
wystarczy dodać przejście <math>\displaystyle f(s_1,1)=s_{\mathcal{B}}</math> (dlaczego?). | wystarczy dodać przejście <math>\displaystyle f(s_1,1)=s_{\mathcal{B}}</math> (dlaczego?). | ||
Automat z pustymi przejściami akceptujący <math>\displaystyle L(\mathcal{B})^*</math> | Automat z pustymi przejściami akceptujący <math>\displaystyle L(\mathcal{B})^*</math> | ||
pokazany jest na rysunku | pokazany jest na rysunku ja-lekcja7-c-rys3. | ||
<center> | <center> | ||
<div class="thumb"><div style="width:250px;"> | <div class="thumb"><div style="width:250px;"> | ||
Linia 72: | Linia 72: | ||
Po usunięciu pustych przejść otrzymujemy automat z rysunku | Po usunięciu pustych przejść otrzymujemy automat z rysunku | ||
ja-lekcja7-c-rys4: | |||
<center> | <center> | ||
<div class="thumb"><div style="width:250px;"> | <div class="thumb"><div style="width:250px;"> | ||
Linia 82: | Linia 82: | ||
Teraz wystarczy skonstruować równoważny automat deterministyczny. | Teraz wystarczy skonstruować równoważny automat deterministyczny. | ||
</div></div> | </div></div> | ||
{{cwiczenie| | |||
{{cwiczenie|3|| | |||
Dane są dwa automaty nad tym samym alfabetem <math>\displaystyle A</math><br> | Dane są dwa automaty nad tym samym alfabetem <math>\displaystyle A</math><br> | ||
Linia 120: | Linia 121: | ||
[[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]]. | [[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]]. | ||
</div></div> | </div></div> | ||
{{cwiczenie| | |||
{{cwiczenie|4|| | |||
Niech <math>\displaystyle A</math> będzie dowolnym alfabetem, a <math>\displaystyle L \subset A^*</math> językiem regularnym. Udowodnij, że język | Niech <math>\displaystyle A</math> będzie dowolnym alfabetem, a <math>\displaystyle L \subset A^*</math> językiem regularnym. Udowodnij, że język | ||
Linia 128: | Linia 130: | ||
<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>\displaystyle h:A^* \longrightarrow \{a\}^*</math> taki, że <math>\displaystyle \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\displaystyle \quad 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>, | ||
a więc jest regularny. | a więc jest regularny. | ||
</div></div> | </div></div> | ||
{{cwiczenie| | |||
{{cwiczenie|5|| | |||
Udowodnij, że następujące języki nie są regularne: | Udowodnij, że następujące języki nie są regularne: | ||
Linia 156: | Linia 159: | ||
uzupełnienie i przecięcie, to <math>\displaystyle L \notin \mathcal{REG}</math>. | uzupełnienie i przecięcie, to <math>\displaystyle L \notin \mathcal{REG}</math>. | ||
</div></div> | </div></div> | ||
ZADANIA DOMOWE | <center>ZADANIA DOMOWE</center> | ||
{{cwiczenie| | {{cwiczenie|6|| | ||
Niech <math>\displaystyle A = \{a,b\}</math>. Skonstruuj automat <math>\displaystyle \mathcal A</math>, taki że | Niech <math>\displaystyle A = \{a,b\}</math>. Skonstruuj automat <math>\displaystyle \mathcal A</math>, taki że | ||
1. <math>\displaystyle L({\mathcal A}) = L({\mathcal B}) \cup L({\mathcal C}),</math> gdzie <center><math>\displaystyle {\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> | ||
Linia 173: | Linia 176: | ||
\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> | ||
2. <math>\displaystyle L({\mathcal A}) = L({\mathcal B})^*,</math> gdzie <center><math>\displaystyle {\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> | ||
Linia 189: | Linia 192: | ||
}} | }} | ||
{{cwiczenie| | {{cwiczenie|7|| | ||
Skonstruuj minimalny automat <math>\displaystyle \mathcal{A}</math>, taki że | Skonstruuj minimalny automat <math>\displaystyle \mathcal{A}</math>, taki że | ||
Linia 202: | Linia 205: | ||
{{cwiczenie| | {{cwiczenie|8|| | ||
Udowodnij, że następujące języki nie są regularne: | Udowodnij, że następujące języki nie są regularne: | ||
Linia 212: | Linia 215: | ||
</div></div> | </div></div> | ||
}} | }} | ||
{{cwiczenie| | {{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 |
Wersja z 19:21, 25 sie 2006
ĆWICZENIA 7
Ćwiczenie 1
gdzie
Zauważ, że otrzymany automat nie jest minimalny. Jakie języki akceptują automaty , i ?
Ćwiczenie 2
gdzie
a funkcja przejść zdefiniowana jest następująco:
skonstruuj automat deterministyczny taki, że
Aby skonstruować automat akceptujący język , wystarczy dodać przejście (dlaczego?). Automat z pustymi przejściami akceptujący pokazany jest na rysunku ja-lekcja7-c-rys3.
<flash>file=ja-lekcja07-c-rys3.swf|width=250|height=150</flash>
<div.thumbcaption>ja-lekcja07-c-rys3Po usunięciu pustych przejść otrzymujemy automat z rysunku ja-lekcja7-c-rys4:
<flash>file=ja-lekcja07-c-rys4.swf|width=250|height=250</flash>
<div.thumbcaption>ja-lekcja07-c-rys4Teraz wystarczy skonstruować równoważny automat deterministyczny.
Ćwiczenie 3
Dane są dwa automaty nad tym samym alfabetem
i . Udowodnij,
że istnieje liczba taka, że jeśli dla każdego słowa o długości spełniona jest implikacja
,
to
Ćwiczenie 4
Niech będzie dowolnym alfabetem, a językiem regularnym. Udowodnij, że język jest też językiem regularnym.
Ćwiczenie 5
Udowodnij, że następujące języki nie są regularne:
- Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L = \{a^n : n \; \text{nie jest liczbą pierwszą\;} \}} ,
- .
Ćwiczenie 6
Niech . Skonstruuj automat , taki że
1. gdzie
Podaj dwie konstrukcje:
- opartą na dowodzie twierdzenia Kleene'ego,
- z wykorzystaniem automatu z pustymi przejściami.
Ćwiczenie 7
Skonstruuj minimalny automat , taki że , gdzie opisany jest
poniższym grafem:<flash>file=ja-lekcja07-c-rys5.swf|width=250|height=250</flash>
<div.thumbcaption>ja-lekcja07-c-rys5
Ćwiczenie 8
Ćwiczenie 9