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 1: | Linia 1: | ||
==ĆWICZENIA 7== | ==ĆWICZENIA 7== | ||
{{cwiczenie||| | {{cwiczenie|1.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} = | ||
(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 25: | Linia 26: | ||
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>? | ||
{{cwiczenie||| | {{cwiczenie|1.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 | ||
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> | ||
Linia 64: | Linia 66: | ||
Teraz wystarczy skonstruować równoważny automat deterministyczny. | Teraz wystarczy skonstruować równoważny automat deterministyczny. | ||
{{cwiczenie||| | {{cwiczenie|1.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> | ||
<math>\displaystyle \mathcal{A}=(S,f,s_{0},T)</math> i <math>\displaystyle \mathcal{B}=(Q,g,t_{0},F)</math>. Udowodnij, | <math>\displaystyle \mathcal{A}=(S,f,s_{0},T)</math> i <math>\displaystyle \mathcal{B}=(Q,g,t_{0},F)</math>. Udowodnij, | ||
Linia 99: | Linia 102: | ||
[[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]]. | [[##ja-lekcja8-c|Uzupelnic ja-lekcja8-c|]]. | ||
{{cwiczenie||| | {{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 | Niech <math>\displaystyle A</math> będzie dowolnym alfabetem, a <math>\displaystyle L \subset A^*</math> językiem regularnym. Udowodnij, że język | ||
<math>\displaystyle L'=\{a^{|w|} :w \in L\}</math> jest też językiem regularnym. | <math>\displaystyle L'=\{a^{|w|} :w \in L\}</math> jest też językiem regularnym. | ||
Linia 108: | Linia 112: | ||
a więc jest regularny. | a więc jest regularny. | ||
{{cwiczenie||| | {{cwiczenie|1.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>\displaystyle L = \{a^n : n \; \text{nie jest liczbą pierwszą\;} \}</math>, | ||
Linia 132: | Linia 137: | ||
ZADANIA DOMOWE | ZADANIA DOMOWE | ||
{{cwiczenie||| | {{cwiczenie|1.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} = | # <math>\displaystyle L({\mathcal A}) = L({\mathcal B}) \cup L({\mathcal C}),</math> gdzie <center><math>\displaystyle {\mathcal B} = | ||
Linia 160: | Linia 166: | ||
}} | }} | ||
{{cwiczenie||| | {{cwiczenie|1.7|| | ||
Skonstruuj minimalny automat <math>\displaystyle \mathcal{A}</math>, taki że | Skonstruuj minimalny automat <math>\displaystyle \mathcal{A}</math>, taki że | ||
<math>\displaystyle L(\mathcal{A})=L(\mathcal{B})^*</math>, gdzie <math>\displaystyle \mathcal{B}</math> opisany jest | <math>\displaystyle L(\mathcal{A})=L(\mathcal{B})^*</math>, gdzie <math>\displaystyle \mathcal{B}</math> opisany jest | ||
Linia 169: | Linia 176: | ||
}} | }} | ||
{{cwiczenie||| | {{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>\displaystyle L=\left\{ a^{n}b^{m}c^n:0<n,m\right\}</math>, | ||
Linia 179: | Linia 187: | ||
}} | }} | ||
{{cwiczenie||| | {{cwiczenie|1.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 |
Wersja z 20:17, 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
WSKAZÓWKA. Pomocne może być użycie automatu z pustymi przejściami.
ROZWIĄZANIE. Automat pokazany jest na rysunku Uzupelnic ja-lekcja7-c-rys2|.
RYSUNEK ja-lekcja7-c-rys2
Aby skonstruować automat akceptujący język , wystarczy dodać przejście (dlaczego?). Automat z pustymi przejściami akceptujący pokazany jest na rysunku Uzupelnic ja-lekcja7-c-rys3|.
RYSUNEK ja-lekcja7-c-rys3
Po usunięciu pustych przejść otrzymujemy automat z rysunku Uzupelnic ja-lekcja7-c-rys4|:
RYSUNEK ja-lekcja7-c-rys4
Teraz wystarczy skonstruować równoważny automat deterministyczny.
Ć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
ROZWIĄZANIE. Niech będzie automatem takim, że . Wówczas,
Udowodnimy więc inkluzję , gdzie
Przyjmijmy . Niech
- Jeśli , to z założenia
- Jeśli , to z lematu o pompowaniu wynika, że , takie, że , i .
Mamy dwie możliwości:
- , co oznacza , ,
- , co oznacza .
Jeśli , to , .
Jeśli , 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.
Zauważ, że z zadania tego wynika
rozstrzygalność problemu równoważności automatów. Algorytmiczny aspekt tego problemu rozważymy w ćwiczeniach
Uzupelnic ja-lekcja8-c|.
Ćwiczenie 1.4
Niech będzie dowolnym alfabetem, a językiem regularnym. Udowodnij, że język jest też językiem regularnym.
Rozwiązanie. Rozważmy homomorfizm taki, że . Dla tak zdefiniowanego język jest homomorficzym obrazem języka regularnego , a więc jest regularny.
Ć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ą\;} \}} ,
- .
ROZWIĄZANIE punktu 1. Skorzystamy z faktu, że język Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L' = \{a^n : n \; \text{ jest liczbą pierwszą\;} \}} nie jest akceptowany ( ćwiczenie Uzupelnic ja-lekcja6-c cw1.8)|), a więc nie jest regularny.
Ponieważ klasa języków regularnych jest zamknięta ze względu na uzupełnienie, to .
ROZWIĄZANIE punktu 2. Język nie jest akceptowany (patrz przykład Uzupelnic ja-lekcja6-w ex3.1)|), a więc nie jest regularny.
Ponieważ klasa języków regularnych jest zamknięta ze względu na uzupełnienie i przecięcie, to .
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
Udowodnij, że następujące języki nie są regularne:
- ,
- .
Punkt 2. WSKAZÓWKA. Wykorzystaj fakt, że język nie jest regularny oraz domkniętość klasy języków regularnych ze względu na homomorfizm.
Ćwiczenie 1.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. Stany automatu niech będą postaci , gdzie , . Stan początkowy to . Określ funkcję przejść w ten sposób, że po przeczytaniu przez automat słowa zawierającego symboli 0 oraz symboli 1 automat znajdzie się w stanie . Zastanów się, który stan będzie stanem końcowym. Na podstawie automatu określ gramatykę.