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 |
Nie podano opisu zmian |
||
Linia 25: | Linia 25: | ||
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> | |||
{{cwiczenie|1.2|| | {{cwiczenie|1.2|| | ||
Linia 45: | Linia 45: | ||
}} | }} | ||
<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">Pomocne może być użycie automatu z pustymi przejściami. | |||
</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"> | |||
[[##ja-lekcja7-c-rys2|Uzupelnic ja-lekcja7-c-rys2|]]. | Automat <math>\displaystyle \mathcal{B}</math> pokazany jest na rysunku [[##ja-lekcja7-c-rys2|Uzupelnic ja-lekcja7-c-rys2|]]. | ||
RYSUNEK ja-lekcja7-c-rys2 | RYSUNEK ja-lekcja7-c-rys2 | ||
Linia 65: | Linia 65: | ||
Teraz wystarczy skonstruować równoważny automat deterministyczny. | Teraz wystarczy skonstruować równoważny automat deterministyczny. | ||
</div></div> | |||
{{cwiczenie|1.3|| | {{cwiczenie|1.3|| | ||
Linia 78: | Linia 78: | ||
}} | }} | ||
<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>\displaystyle \mathcal{C}</math> będzie automatem takim, że <math>\displaystyle 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>\displaystyle L(\mathcal{C})\subseteq L(\mathcal{B})\Leftrightarrow L(\mathcal{A})\subseteq L(\mathcal{B}).</math></center> | ||
Linia 101: | Linia 101: | ||
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 | ||
[[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]]. | [[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]]. | ||
</div></div> | |||
{{cwiczenie|1.4|| | {{cwiczenie|1.4|| | ||
Linia 108: | Linia 108: | ||
}} | }} | ||
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"> | ||
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 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> | |||
{{cwiczenie|1.5|| | {{cwiczenie|1.5|| | ||
Linia 120: | Linia 121: | ||
}} | }} | ||
<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 | |||
\; \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 [[##ja-lekcja6-c cw1.8)|Uzupelnic ja-lekcja6-c cw1.8)|]]), a więc nie jest regularny. | ||
Linia 127: | Linia 129: | ||
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>\displaystyle L \notin \mathcal{REG}</math>. | ||
</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"> | |||
Język <math>\displaystyle 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 przykład [[##ja-lekcja6-w ex3.1)|Uzupelnic ja-lekcja6-w ex3.1)|]]), 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>\displaystyle a^*b^* =L \cup L',L\cap L' = \emptyset,\;\text {a więc}\;L'=a^* b^* \cap\overline{L}.</math></center> | ||
Linia 134: | Linia 137: | ||
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>\displaystyle L \notin \mathcal{REG}</math>. | ||
</div></div> | |||
ZADANIA DOMOWE | ZADANIA DOMOWE | ||
Linia 181: | Linia 184: | ||
# <math>\displaystyle L=\left\{ a^{n}b^{m}c^n:0<n,m\right\}</math>, | # <math>\displaystyle 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>\displaystyle 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"> | |||
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>\displaystyle \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> | |||
}} | }} | ||
{{cwiczenie|1.9|| | {{cwiczenie|1.9|| | ||
Linia 193: | Linia 195: | ||
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"> | |||
Stany automatu niech będą postaci <math>\displaystyle (x,y)</math>, gdzie <math>\displaystyle 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>\displaystyle y \in \{0, 1, 2\}</math>. Stan początkowy to <math>\displaystyle (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 | ||
Linia 199: | Linia 202: | ||
w stanie <math>\displaystyle (k \mod 2, l \mod 3)</math>. Zastanów się, który stan będzie | w stanie <math>\displaystyle (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> | |||
}} |
Wersja z 21:42, 23 sie 2006
ĆWICZENIA 7
Ćwiczenie 1.1
gdzie
Rozwiązanie. . Funkcja przejść zadana jest grafem
rys1
Zauważ, że otrzymany automat nie jest minimalny. Jakie języki akceptują automaty , i ?
Ćwiczenie 1.2
gdzie
a funkcja przejść zdefiniowana jest następująco:
skonstruuj automat deterministyczny taki, że
Ćwiczenie 1.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 1.4
Niech będzie dowolnym alfabetem, a językiem regularnym. Udowodnij, że język jest też językiem regularnym.
Ćwiczenie 1.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ą\;} \}} ,
- .
ZADANIA DOMOWE
Ćwiczenie 1.6
Niech . Skonstruuj automat , taki że
- gdzie
- gdzie
Podaj dwie konstrukcje:
- opartą na dowodzie twierdzenia Kleene'ego,
- z wykorzystaniem automatu z pustymi przejściami.
Ćwiczenie 1.7
Skonstruuj minimalny automat , taki że , gdzie opisany jest poniższym grafem:
RYSUNEK ja-lekcja7-c-rys5
Ćwiczenie 1.8
Ćwiczenie 1.9