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

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

1. ĆWICZENIA 11

Ćwiczenie

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\geq 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\leq n\leq 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. Szukany automat określony jest rysunkiem

rys 1 ja-lekcja11-c-rys1

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.
Szukany automat określony jest rysunkiem

rys 2 ja-lekcja11-c-rys2

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 Uzupelnic 1|.
ROZWIĄZANIE punktu 3. Szukany automat określony jest rysunkiem

rys 3 ja-lekcja11-c-rys3

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. Szukany automat określony jest rysunkiem

rys 4 ja-lekcja11-c-rys4

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

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,

  1. algorytm konstrukcji gramatyki bezkontekstowej generującej język rozpoznawany przez pusty stsos

przez dany automat ze stsosem.

Ćwiczenie

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

  1. gramatykę generującą język akceptowany przez pusty stos przez automat zadany rysunkiem

rys5 ja-lekcja11-c-rys5

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

ROZWIĄZANIE. Zarówno w punkcie 1 jak i 2 rozważanym językiem jest Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L=\{a^{n}b^n:\: 1\leq n\} } .
Punkt 1. Gramatyka jest w postaci Greibach i możemy od razu określić automat. Zgodnie z konstrukcją jest to automat jednostanowy zadany rysunkiem

rys6 ja-lekcja11-c-rys6

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

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. Dla dowodu tej równoważności wystarczy dla automatu ze stosem z ograniczoną wielkością stosu określić równoważny automat skończenie stanowy. Niech k1 będzie dowolną stałą, a 𝒜S=(S,A,AS,fS,s0,z0,SF) automatem, w którym wielkość stosu ograniczona jest przez stałą k. Równoważny automat skończenie stanowy jest automatem niedeterministycznym z pustymi przejściami.
Niech 𝒜=(S×T,A,f,(s0,z0),F), gdzie T={wAs*:|w|k}, F=SF×T,
s,sS,zAS,u,vAS*,aA{1}

f((s,uz),a)={(s,uv):(uz,s)|a(uv,s)}

Co zmieni się w definiowanym automacie skończenie stanowym, jeśli automat ze stosem będzie akceptował przez pusty stos?

Ćwiczenie

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. Automatem z kolejką nad alfabetem A nazywamy system 𝒜𝒦=(Q,A,AK,f,s0,z0,QF) , w którym
A - jest alfabetem, AK - jest dowolnym skończonym i niepustym zbiorem zwanym alfabetem kolejki (niekoniecznie rozłącznym z A ), Q - jest dowolnym, skończonym i niepustym zbiorem zwanym zbiorem stanów, f:AK×Q×(A{1})𝒫sk(AK*×Q) jest funkcją przejść, której wartościami są skończone podzbiory AK*×Q (także zbiór pusty), q0Q jest stanem początkowym, z0AK symbolem początkowym kolejki, QFQ zbiorem stanów końcowych.

ROZWIĄZANIE punktu 2.

Automat z kolejką 𝒜𝒦=(Q,A,AK,f,s0,z0,QF) akceptuje przez stan końcowy słowo w=w1w2...wmA* (w1,w2,...,wmA,m0), jeśli istnieje sekwencja stanów r0,r1,...,rm oraz słów s0,s1,...,smAK* takich, że:

  • r0=q0,
  • s0=z0,
  • (ri+1,b)f(ri,wi+1,a), gdzie si=au oraz si+1=ub dla pewnego uAK*,
  • rmQF.

Automat akceptuje słowo w przez pustą kolejkę przy takich samych warunkach jak powyżej, z tym że ostatni z nich ma postać sm=1.

Ćwiczenie

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

WSKAZÓWKA. "Naturalnym" przykładem języka akceptowanego przez automat ze stosem był język L={ww,wA*}, gdyż stos działa w ten sposób, że elementy zdejmowane są z niego w odwrotnej kolejności niż były wkładane. Znajdź analogiczny "naturalny" przykład języka akceptowanego przez automat z kolejką. Zwróć uwagę, że w kolejce elementy wyjmowane są w takiej samej kolejności, w jakiej były do niej wkładane.

ROZWIĄZANIE. Nie. Automat z kolejką akceptuje język L={ww,wA*}, który nie jest akceptowany przez automat ze stosem.

ZADANIA DOMOWE

Ćwiczenie

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\leq m\leq 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

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