Języki, automaty i obliczenia/Ćwiczenia 6: Automat niedeterministyczny. Lemat o pompowaniu

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenia 6

Ćwiczenie 1

Skonstruuj automat niedeterministyczny akceptujący język L=A*aA*bA*, a następnie określ równoważny automat deterministyczny przy pomocy algorytmu Determinizacja.

Rozwiązanie

Ćwiczenie 2

Zastosuj algorytm Determinizacja podany na wykładzie do

determinizacji automatu z rysunku 2.
Rysunek 2
Rozwiązanie

Ćwiczenie 3

Dla dowolnego n>1 skonstruuj n-stanowy automat niedeterministyczny 𝒜 nad 3-elementowym alfabetem w ten sposób, by automat deterministyczny posiadał dokładnie 2n1 stanów.

Rozwiązanie

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 𝒜=(S,A,f,I,F) będzie niedeterministycznym automatem z p-przejściami. Dla stanu sS zbiór

DOM(s)={tS: tf(s,1)}

nazywamy pustym domknięciem stanu s.

Zbiór DOM(s) jest zbiorem wszystkich stanów, do których można dojść ze stanu s przechodząc po ścieżce etykietowanej słowem pustym 1. Zauważmy także, że dla dowolnego sS zachodzi warunek sDOM(s), gdyż ze stanu s do niego samego można przejść pod wpływem słowa o długości 0, a w0=1.

Dla dowolnego PS określamy

DOM(P)=pPDOM(p),f(DOM(P),a)=pPtDOM(p)f(t,a)


Algorytm UsuńPustePrzejścia - buduje niedeterministyczny automat bez p-przejść równoważny danemu niedeterministycznemu automatowi z p-przejściami



  1  Wejście: 𝒜=(S,A,f,I,F) - automat niedeterministyczny z p-przejściami.
  2  Wyjście: 𝒜=(S,A,f,I,F) - automat niedeterministyczny bez p-przejść
taki, że L(𝒜)=L(𝒜). 3 for each sS do 4 DOM [s]f(s,1); DOM[s] jest zbiorem 5 for i1 to |S| do 6 DOM [s]f DOM[s],1); bardziej efektywne jest użycie IFS 7 end for 8 end for 9 SS; 10 II; 11 F; rozpocznij od zbioru pustego 12 for each sS do 13 if F DOM[s] then 14 FF{s}; 15 end if 16 end for 17 for each sS do 18 for each aA do 19 Yf DOM[s],a); stosujemy wzór (1) 20 for each tY do 21 f(s,a)f(s,a) DOM[t]; 22 end for 23 end for 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

Ć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 I.

Rozwiązanie

Ćwiczenie 6

Niech 𝒜=(S,A,f,I,T) będzie automatem z p-przejściami o następującej własności:

s1,s2S s2f(s1,1).

Załóżmy ponadto, że I oraz T są dowolnymi niepustymi podzbiorami S oraz że w 𝒜 dla każdego aA istnieje dokładnie jedna para stanów s1,s2 taka, że s2f(s1,a). Jaki język akceptuje automat 𝒜?

Rozwiązanie

Ćwiczenie 7

Niech A={a,b}. Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są akceptowane:

  1. L={anbm:0nm}
  2. L={wA*:#aw=#bw}
  3. L={ww:wA*}, gdzie dla w=a1...anA*
    w=an..a1.

Słowo w nazywamy odbiciem zwierciadlanym słowa w.

Rozwiązanie

Ćwiczenie 8

Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są akceptowane:

  1. L={an:n jest liczbą pierwszą},
  2. L={an!:n1}.
Rozwiązanie
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 n>0 oraz a1,a2,...,anA={a,b}. Udowodnij, że automat deterministyczny (obliczony algorytmem determinizacji z wykładu) równoważny automatowi niedeterministycznemu z rysunku 9, rozpoznającemu język

L=A*a1A*a2...A*anA*, 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 S. Niech S={s1,s2,...,sn,sn+1}. Wystarczy zauważyć, że w i-tym kroku działania, tzn. w momencie dodawania i-tego stanu w budowanym automacie deterministycznym (in), pozostałe i1 stany mają etykiety e1={s1}, e2={s1,s2}, ..., ei1={s1,s2,...,si1}, a funkcja przejść określona na nich ma postać: f(ej,a)=ej+1, jeśli a=aj, f(ej,a)=ej, jeśli a=aj (1ji2). Ten fakt można w prosty sposób dowieść indukcyjnie ze względu na i. Dla dodawanego n+1-szego stanu en+1 funkcja przejść będzie natomiast zdefiniowana następująco: f(en+1,a)=en+1aA. Zatem w ostatnim, n+1 kroku, automat deterministyczny będzie miał n+1 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 =(S,A,f,s0,T) będzie automatem deterministycznym dla automatu niedeterministycznego 𝒜=(S,A,f,s0,T). Czy zbiór stanów S automatu deterministycznego obliczonego za pomocą algorytmu Determinizacja zależy od:

  1. wyboru w 𝒜 stanu początkowego s0,
  2. wyboru w 𝒜 zbioru stanów końcowych T?

Ć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:

  1. L={an2:n0},
  2. L={a2n:n0},
  3. L={anbm:0<n<m},
  4. L={anbmcn+m:n,m>0},
  5. L={ww:wA*} dla dowolnego alfabetu A,
  6. L={wA*:|w|=n2,n} dla dowolnego alfabetu A.