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
Bartek (dyskusja | edycje)
Rogoda (dyskusja | edycje)
Nie podano opisu zmian
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>\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|1.2||
{{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 [[##ja-lekcja7-c-rys3|Uzupelnic ja-lekcja7-c-rys3|]].
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|Uzupelnic ja-lekcja7-c-rys4|]]:
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|1.3||
 
{{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|1.4||
 
{{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|1.5||
 
{{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|1.6||
{{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
# <math>\displaystyle L({\mathcal A}) = L({\mathcal B}) \cup L({\mathcal C}),</math> gdzie <center><math>\displaystyle {\mathcal B} =  
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>
# <math>\displaystyle L({\mathcal A}) = L({\mathcal B})^*,</math> gdzie <center><math>\displaystyle {\mathcal B} =  
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|1.7||
{{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|1.8||
{{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|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  

Wersja z 19:21, 25 sie 2006

Ć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

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle \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} \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} }
skonstruuj automat 𝒜 taki, że
L(𝒜)=L()L(𝒞),
Rozwiązanie

Zauważ, że otrzymany automat nie jest minimalny. Jakie języki akceptują automaty 𝒜, i 𝒞?

Ć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

Aby skonstruować automat akceptujący język L()*, wystarczy dodać przejście f(s1,1)=s (dlaczego?). Automat z pustymi przejściami akceptujący L()* 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-rys3

Po 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-rys4

Teraz wystarczy skonstruować równoważny automat deterministyczny.

Ć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. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L = \{a^n : n \; \text{nie 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},


Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle \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} \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} }
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:

<flash>file=ja-lekcja07-c-rys5.swf|width=250|height=250</flash>

<div.thumbcaption>ja-lekcja07-c-rys5


Ćwiczenie 8

{{{3}}}

Ćwiczenie 9

{{{3}}}