Języki, automaty i obliczenia/Ćwiczenia 7: Twierdzenie Kleene'ego. Własności języków i gramatyk regularnych
Ć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ę.