ĆWICZENIA 7
Ćwiczenie 1.1
Niech
. Dla automatów
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
Rozwiązanie.
. Funkcja przejść zadana jest grafem
rys1
Zauważ, że otrzymany automat nie jest minimalny. Jakie języki akceptują automaty , i ?
Ćwiczenie 1.2
Niech
. Dla automatu
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
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} }
- 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