Języki, automaty i obliczenia/Ćwiczenia 10: Lemat o pompowaniu dla języków bezkontekstowych. Własności języków bezkontekstowych. Problemy rozstrzygalne: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Rogoda (dyskusja | edycje)
Rogoda (dyskusja | edycje)
(Brak różnic)

Wersja z 09:34, 23 sie 2006

{Automat ze stosem.Gramatyki bezkontekstowe i automaty ze stosem.}

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