Języki, automaty i obliczenia/Ćwiczenia 11: Automat ze stosem

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Ćwiczenia 11

Ćwiczenie 1

Określ automaty ze stosem akceptujące następujące języki. Ustal czy akceptacja jest przez pusty stos czy przez stany końcowe. Czy język L jest deterministyczny?

  1. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L_1=\{a^{n}b^{n+m}a^{m}:\: m,n\geqslant 1\} }
  2. L2={ww:w{a,b}*}
  3. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L_3=\{a^{n}b^m:\: 1\leqslant n\leqslant m\} }
  4. L4={w{a,b}+:#aw=#bw}

Wszystkie rozważane automaty będą określone grafem, niemniej dla większej czytelności podamy również alfabet stosu.

Rozwiązanie punktu 1

gdzie AS={z0,a,b}, a z0 jest symbolem początkowym stosu. Zauważ, że automat ten akceptuje język L1 zarówno przez stany końcowe jak i przez pusty stos. Automat jest deterministyczny, a to oznacza, że język L1 jest też deterministyczny.

Rozwiązanie punktu 2

gdzie AS={z0,a,b}, a z0 jest symbolem początkowym stosu i akceptuje język L2 przez pusty stos. Automat jest niedeterministyczny i język L2 też jest niedeterministyczny. Nie wiadomo od której litery czytanego słowa automat powinien wymazywać stos. Dlatego równolegle z wpisywaniem na stos automat zaczyna wymazywać za każdym razem gdy wystąpią dwie takie same litery obok siebie. Porównaj otrzymany automat z automatami otrzymanymi dla języków L5 i L6 z ćwiczenia 1.

Rozwiązanie punktu 3

gdzie AS={z0,a}, a z0 jest symbolem początkowym stosu. Automat ten akceptuje język L3 przez stany końcowe i jest automatem deterministycznym.

Rozwiązanie punktu 4

gdzie AS={z0,a,b}, a z0 jest symbolem początkowym stosu. Automat akceptuje język L4 przez stany końcowe i jest automatem niedeterministycznym. Uzasadnij ten fakt. Czy język L4 jest językiem niedeterministycznym?

Ćwiczenie 2

Napisz na podstawie dowodu twierdzenia Uzupelnic lekcja11-w twas-bk|

  1. algorytm konstrukcji automatu ze stosem rozpoznającego język generowany przez daną gramatykę bezkontekstową w postaci normalnej Greibach,
  2. algorytm konstrukcji gramatyki bezkontekstowej generującej język rozpoznawany przez pusty stos przez dany automat ze stosem.

Ćwiczenie 3

Wykorzystując algorytmy z poprzedniego zadania określ

  1. automat akceptujący język generowany przez gramatykę G o zbiorze praw
    P:v0av0v1|av1,v1b
  2. gramatykę generującą język akceptowany przez pusty stos przez automat zadany rysunkiem

<flash>file=ja-lekcja11-c-rys5.swf|width=250|height=150</flash>

<div.thumbcaption>Rysunek 5

gdzie AS={z0,a}, a z0 jest symbolem początkowym stosu.


Rozwiązanie

gdzie AS={v0,v1,a,b}, a v0 jest symbolem początkowym stosu.
Dla przykładu prześledźmy akceptację przez ten automat słowa a2b2.
(v0,q)|(v1v0a,q)|a(v1v0,q)|(v1v1a,q)|a(v1v1,q)|(v1b,q)|b(v1,q)|b(b,q)|b(1,q)

Punkt 2.
Gramatykę zdefiniujemy przez podanie zbioru praw wskazując równocześnie z jakiego przejścia w automacie dane prawo powstało.
v0(q0,z0,q1)
(q0,z0,q1)a(q0,a,q1)(z0,q0,a)|(a,q0)
(q0,a,q1)a(q0,a,q1)(q1,a,q1)(a,q0,a)|(a2,q0)
(q0,a,q1)b(a,q0,b)|(1,q1)
(q1,a,q1)b(a,q1,b)|(1,q1)

Zauważmy, że w obu konstrukcjach otrzymujemy gramatykę i automat różne od wyjściowych.

Ćwiczenie 4

Udowodnij, że każdy automat ze stosem, w którym wielkość stosu jest ograniczona pewną stałą, jest równoważny pewnemu automatowi skończenie stanowemu.

Rozwiązanie

Ćwiczenie 5

Oto nieformalny opis automatu z kolejką:

Automat z kolejką jest podobny do automatu ze stosem, ale zamiast stosu (LIFO - last in, first out) posiada kolejkę FIFO (first in, first out). W każdym kroku automat czyta symbol z taśmy (być może słowo puste), usuwa z kolejki początkowy symbol (być może słowo puste) oraz wstawia na koniec kolejki słowo (być może słowo puste). Automat z kolejką akceptuje słowo przy stanie końcowym lub przy pustej kolejce.

  1. Podaj formalną definicję automatu z kolejką
  2. Zdefiniuj dwa sposoby akceptacji słowa przez automat: przez stan końcowy oraz przez pustą kolejkę
Rozwiązanie punktu 1
Rozwiązanie punktu 2

Ćwiczenie 6

Czy moc obliczeniowa automatu z kolejką jest taka sama jak moc automatu ze stosem?

Wskazówka
Rozwiązanie
ZADANIA DOMOWE

Ćwiczenie 7

Określ automaty ze stosem akceptujące następujące języki przez pusty stos i przez stany końcowe. Wskaż, które języki są deterministyczne.

  1. L5={wcw{a,b,c}*:w{a,b}*}
  2. L6={wxw{a,b}*:x{a,b},w{a,b}*}
  3. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L_7=\{a^{n}b^m \in \{a,b\}^*:\: 1\leqslant m\leqslant n\} }
  4. Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L_8=\{a^{n}b^{m} \in \{a,b\}^*:\: m \neq n\} }

Ćwiczenie 8

Określ automat ze stosem, który rozpoznaje język Łukasiewicza zapisany w wersji postfiksowej (Uzupelnic lekcja11-w luk|)