Języki, automaty i obliczenia/Ćwiczenia 11: Automat ze stosem
Ć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ęzyki są deterministyczne?
Wszystkie rozważane automaty będą określone grafem, niemniej dla większej czytelności podamy również alfabet stosu.
gdzie , a jest symbolem początkowym stosu.
Zauważ, że automat ten akceptuje język zarówno przez stany końcowe jak i przez pusty stos.
Automat jest deterministyczny, a to oznacza, że język jest też deterministyczny.
gdzie , a jest symbolem początkowym stosu i akceptuje język przez pusty stos.
Automat jest niedeterministyczny i język 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 i
z ćwiczenia 1.
gdzie , a jest symbolem początkowym stosu. Automat ten akceptuje język przez stany końcowe i jest automatem deterministycznym.
gdzie , a jest symbolem początkowym stosu. Automat akceptuje język przez stany końcowe i jest automatem niedeterministycznym. Uzasadnij ten fakt. Czy język jest językiem niedeterministycznym?
Ćwiczenie 2
Napisz na podstawie dowodu twierdzenia 2.2
- algorytm konstrukcji automatu ze stosem rozpoznającego język generowany przez daną gramatykę bezkontekstową w postaci normalnej Greibach,
- 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:
- automat akceptujący język generowany przez gramatykę o zbiorze praw
, - 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 5gdzie , a jest symbolem początkowym stosu.
gdzie , a jest symbolem początkowym stosu.
Dla przykładu prześledźmy akceptację przez ten automat słowa .
Punkt 2.
Gramatykę zdefiniujemy przez podanie zbioru praw, wskazując równocześnie, z jakiego przejścia w automacie
dane prawo powstało:
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.
Ć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 (może to być 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.
- Podaj formalną definicję automatu z kolejką.
- Zdefiniuj dwa sposoby akceptacji słowa przez automat: przez stan końcowy oraz przez pustą kolejkę.
Ćwiczenie 6
Czy moc obliczeniowa automatu z kolejką jest taka sama jak moc automatu ze stosem?
Ć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:
Ćwiczenie 8
Określ automat ze stosem, który rozpoznaje język Łukasiewicza zapisany w wersji postfiksowej (patrz wykład 11, uwagi o języku Łukasiewicza po dowodzie twierdzenia 2.1)