Skonstruuj automat niedeterministyczny akceptujący język
, a następnie określ równoważny automat
deterministyczny przy pomocy algorytmu Determinizacja.
Rozwiązanie
Automat niedeterministyczny pokazany jest na rysunku 1.
Rysunek 1
Automat po determinizacji wyglądać powinien tak samo jak automat z
rysunku 5 (patrz ćwiczenia 5.). Zauważ, że
automat deterministyczny i niedeterministyczny dla języka mają
po tyle samo stanów.
Ćwiczenie 2
Zastosuj algorytm Determinizacja podany na wykładzie do
determinizacji automatu z rysunku 2.
Rysunek 2
Rozwiązanie
W tabeli 1 opisane są kolejne kroki pętli (linia 5.) algorytmu Determinizacja. W kolejnych kolumnach
tabeli podane są: krok algorytmu, stany dodane do zbioru ,
określenie funkcji przejść oraz stany dodane do zbioru
stanów końcowych .
Automat deterministyczny dla powyższego przykładu przedstawiony jest
na rysunku 3. Dla uproszczenia stany tego
automatu nie są etykietowane zbiorami, lecz indeksami stanów ze
zbioru . Na przykład, zamiast stan etykietowany
jest wyrażeniem .
Rysunek 3
Automat z rysunku 3 posiada 9 stanów wobec 5
stanów niedeterministycznego automatu wyjściowego.
Ćwiczenie 3
Dla dowolnego skonstruuj -stanowy automat
niedeterministyczny nad 3-elementowym alfabetem w ten
sposób, by automat deterministyczny posiadał dokładnie
stanów.
Rozwiązanie
Niech będzie automatem niedeterministycznym ( jest dowolnym
podzbiorem ). Zdefiniujmy funkcję następująco:
Pokażemy, że dla każdego istnieje
takie słowo , że . Niech i załóżmy, że ciąg jest rosnący.
Niech będzie ilością stanów przez które trzeba przejść
od stanu do stanu idąc
po krawędziach oznaczonych literą .
Zauważmy, że . Niech początek szukanego słowa
ma postać . Będziemy redukować ilość stanów zbioru
poprzez doklejanie liter , oraz "przesuwać"
układ aktualnie występujących stanów używając liter .
Niech , gdzie
. Łatwo sprawdzić, że
i jeśli ma postać ,
to i ponadto zachodzi . (Intuicyjnie: zastosowanie słowa
powoduje, że w cyklicznym ustawieniu stanów robi się "przerwa"
długości . Użycie następnie litery gwarantuje, że kolejna
"przerwa" będzie oddzielona od poprzedniej jednym stanem).
Aby otrzymać żądany zbiór wystarczy "przesunąć" ten zbiór
stanów przy pomocy słowa .
Ostatecznie:
.
Ponieważ powyższym sposobem możemy uzyskać dowolny niepusty podzbiór
zbioru stanów , zatem zbiór stanów automatu
deterministycznego musi zawierać stany odpowiadające
wszystkim niepustym podzbiorom zbioru , czyli .
Automat z pustymi przejściami
Podamy procedurę przetwarzającą niedeterministyczny automat
skończony z pustymi przejściami w równoważny niedeterministyczny
automat skończony bez pustych przejść.
Niech będzie niedeterministycznym
automatem z p-przejściami. Dla stanu zbiór
nazywamy pustym domknięciem stanu .
Zbiór DOM jest zbiorem wszystkich stanów, do których można
dojść ze stanu przechodząc po ścieżce etykietowanej słowem
pustym 1. Zauważmy także, że dla dowolnego zachodzi
warunek , gdyż ze stanu do niego samego można
przejść pod wpływem słowa o długości 0, a .
Dla dowolnego określamy
Algorytm UsuńPustePrzejścia - buduje niedeterministyczny
automat bez p-przejść równoważny danemu niedeterministycznemu
automatowi z p-przejściami
1 Wejście: - automat niedeterministyczny z p-przejściami.
2 Wyjście: - automat niedeterministyczny bez p-przejść taki, że .
3 foreach do
4 DOM ; DOM jest zbiorem
5 fortodo
6 DOM DOM; bardziej efektywne jest użycie IFS
7 endfor
8 endfor
9 ;
10 ;
11 ; rozpocznij od zbioru pustego
12 foreach do
13 if DOM then
14 ;
15 endif
16 endfor
17 foreach do
18 foreach do
19 DOM; stosujemy wzór (1)
20 foreach do
21 DOM;
22 endfor
23 endfor
24 endfor
25 return ;
Ćwiczenie 4
Przy pomocy podanego algorytmu dla automatu określonego na rysunku 4 skonstruuj równoważny automat bez pustych przejść.
Rysunek 4
Rozwiązanie
Rozważmy automat z p-przejściami pokazany na rysunku 4. Zastosujmy do niego algorytm
UsuńPustePrzejścia. Obliczamy:
W analogiczny sposób obliczamy:
Rezultatem działania algorytmu jest więc automat bez p-przejść,
pokazany na rysunku 5.
Rysunek 5
Ćwiczenie 5
Udowodnij, że dla każdego automatu z p-przejściami istnieje automat
z p-przejściami o jednoelementowym zbiorze stanów początkowych .
Rozwiązanie
Niech będzie automatem z
p-przejściami. Zdefiniujmy automat
,
gdzie jest nowym stanem dołożonym do ,
oraz
. Widać, że .
Ćwiczenie 6
Niech będzie automatem z p-przejściami
o następującej własności:
.
Załóżmy ponadto, że oraz są dowolnymi niepustymi podzbiorami
oraz że w dla każdego istnieje dokładnie
jedna para stanów taka, że . Jaki
język akceptuje automat ?
Rozwiązanie
Automat akceptuje język . Aby to pokazać, ustalmy
słowo i pokażemy, że . Niech
, , .
Wybierzmy dowolny stan początkowy . Niech dla dowolnego
stan będzie tym stanem, dla którego zachodzi
. Z założenia mamy, że . Możemy więc przejść słowem 1 ze stanu początkowego do stanu
. Następnie przechodzimy pod wpływem do stanu
. Zauważmy, że z założenia istnieje tylko jeden stan, do
którego możemy w ten sposób przejść. Teraz dla każdego możemy
przejść słowem 1 ze stanu do stanu , a
następnie pod wpływem litery do stanu . Po przejściu
do stanu przechodzimy słowem 1 do dowolnego stanu
końcowego. Możemy to zrobić, gdyż dla dowolnego z
założenia mamy . Ostatecznie przeszliśmy
ścieżkę
, gdzie
są pewnymi liczbami naturalnymi lub są równe 0. Ponieważ
powyższą procedurę możemy zastosować do dowolnego , zatem
, co mieliśmy dowieść.
Ćwiczenie 7
Niech . Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są akceptowane:
, gdzie dla
.
Słowo nazywamy odbiciem zwierciadlanym słowa .
Rozwiązanie
We wszystkich przypadkach dowód przeprowadzimy nie
wprost, zakładając, że język jest
rozpoznawany przez automat, a więc spełnia tezę lematu o pompowaniu.
Punkt 1. Rozważmy słowo , gdzie .
Podobnie jak w przykładzie 1.1 w wykładzie 6 (patrz przykład 1.1. w wykładzie 6) pokazujemy, że nie istnieją słowa oraz
takie, że
.
Punkt 2.
Jeśli przyjmiemy lub u=, to dla dowolnego dostatecznie długiego słowa
istnieją podsłowa takie, że
i
.
Warunek pompowania jest więc spełniony. Natomiast nie dla wszystkich słów z języka jest spełniony warunek ograniczający długość . Np. dla słowo , ale .
Punkt 3. Jedynym możliwym rozkładem słowa spełniającym warunek pompowania jest dla pewnego ,
, . Jednak dla
Ćwiczenie 8
Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są akceptowane:
,
.
Rozwiązanie
Tak samo jak w zadaniu 1 dowód przeprowadzimy nie wprost, zakładając, że język jest
rozpoznawany przez automat, a więc spełnia tezę lematu o pompowaniu.
Zauważmy, że dla języków nad alfabetem jednoelementowym warunek pompowania z lematu ma postać
takie, że
.
Wykładniki słów utworzonych dla kolejnych indeksów tworzą ciąg arytmetyczny.
Punkt 1. Dla każdej liczby pierwszej istnieje liczba pierwsza i liczba takie, że
Dla
Punkt 2. Dla każdej liczby istnieje i takie, że
Dla mamy następujące nierówności
.
Nierówności
są sprzeczne.
ZADANIA DOMOWE
Ćwiczenie 9
Dla następujących automatów określ równoważne automaty deterministyczne.
Rysunek 6
Rysunek 7
Rysunek 8
Ćwiczenie 10
Ustalmy oraz . Udowodnij, że
automat deterministyczny (obliczony algorytmem determinizacji z
wykładu) równoważny automatowi niedeterministycznemu z
rysunku 9, rozpoznającemu język
, posiada tyle samo stanów co .
Rysunek 9
Wskazówka
Porównaj ćwiczenie 1 (patrz ćwiczenie 1) Wynika to wprost z algorytmu determinizacji. Oznaczmy zbiór stanów automatu
niedeterministycznego przez . Niech . Wystarczy zauważyć, że w -tym kroku
działania, tzn. w momencie dodawania -tego stanu w budowanym
automacie deterministycznym , pozostałe stany mają
etykiety , , ..., , a funkcja przejść określona na nich ma postać:
, jeśli , , jeśli (). Ten fakt można w prosty sposób dowieść
indukcyjnie ze względu na . Dla dodawanego -szego stanu
funkcja przejść będzie natomiast zdefiniowana następująco:
. Zatem w ostatnim,
kroku, automat deterministyczny będzie miał stanów, czyli tyle
samo co automat . Algorytm zakończy w tym momencie
działanie. Automat deterministyczny przedstawiony jest na rysunku
10.
Rysunek 10
Ćwiczenie 11
Niech będzie automatem
deterministycznym dla automatu niedeterministycznego
. Czy zbiór stanów automatu
deterministycznego obliczonego za pomocą algorytmu
Determinizacja zależy od:
wyboru w stanu początkowego ,
wyboru w zbioru stanów końcowych ?
Ćwiczenie 12
Używając algorytmu UsuńPustePrzejścia, przekształć automat
z rysunku 11 w równoważny automat
niedeterministyczny bez p-przejść, a następnie zdeterminizuj go przy
użyciu algorytmu Determinizacja.
Rysunek 11
Ćwiczenie 13
Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są akceptowane: