|
|
Linia 1: |
Linia 1: |
| ==1. ĆWICZENIA 10== | | ==Ćwiczenia 10== |
|
| |
|
| {{cwiczenie|1|| | | {{cwiczenie|1|| |
Linia 205: |
Linia 205: |
| </div></div> | | </div></div> |
|
| |
|
| ==2. ZADANIA DOMOWE==
| | <center>ZADANIA DOMOWE</center> |
|
| |
|
| {{cwiczenie|1|| | | {{cwiczenie|8|| |
| Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe: | | Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe: |
| # <math>\displaystyle L=\left\{ a^{n}b^{m}c^{k}:k=min\{m,n\}\right\} </math> | | # <math>\displaystyle L=\left\{ a^{n}b^{m}c^{k}:k=min\{m,n\}\right\} </math> |
Linia 215: |
Linia 215: |
| }} | | }} |
|
| |
|
| {{cwiczenie|2|| | | {{cwiczenie|9|| |
| Stosując lemat Ogdena pokaż, że język <math>\displaystyle L=\{a^ib^jc^k: i,j,k>1,\ k | | Stosując lemat Ogdena pokaż, że język <math>\displaystyle L=\{a^ib^jc^k: i,j,k>1,\ k |
| \not = ir,\ k \not = js, </math> gdzie <math>\displaystyle r,s \in \{2,3,...\}\}</math> nie jest | | \not = ir,\ k \not = js, </math> gdzie <math>\displaystyle r,s \in \{2,3,...\}\}</math> nie jest |
Linia 227: |
Linia 227: |
| </div></div> | | </div></div> |
|
| |
|
| {{cwiczenie|3|| | | {{cwiczenie|10|| |
| Udowodnij, że język <math>\displaystyle L=\left\{ w\overleftarrow{w } : w \in \{a,b\}^* \setminus \{ab^2a\} \right\} </math> | | Udowodnij, że język <math>\displaystyle L=\left\{ w\overleftarrow{w } : w \in \{a,b\}^* \setminus \{ab^2a\} \right\} </math> |
| jest bezkontekstowy. | | jest bezkontekstowy. |
| }} | | }} |
|
| |
|
| {{cwiczenie|4|| | | {{cwiczenie|11|| |
| Czy gramatyka poprawnych nawiasów | | Czy gramatyka poprawnych nawiasów |
| <center><math>\displaystyle (\{v_0,v_1\},\{(,)\},v_0, P ),\; \text{ gdzie} \; | | <center><math>\displaystyle (\{v_0,v_1\},\{(,)\},v_0, P ),\; \text{ gdzie} \; |
Linia 240: |
Linia 240: |
| }} | | }} |
|
| |
|
| {{cwiczenie|5|| | | {{cwiczenie|12|| |
| Określ gramatyki generujące języki | | Określ gramatyki generujące języki |
| # <math>\displaystyle L_3 =\{a^n b^m c^nd^p : m,n,p \geqslant 0 \} \cup \{a^n b^m c^p d^m : m,n,p \geqslant 0 \} </math>, | | # <math>\displaystyle L_3 =\{a^n b^m c^nd^p : m,n,p \geqslant 0 \} \cup \{a^n b^m c^p d^m : m,n,p \geqslant 0 \} </math>, |
Linia 248: |
Linia 248: |
| }} | | }} |
|
| |
|
| {{cwiczenie|6|| | | {{cwiczenie|13|| |
| Napisz algorytmy rozstrzygające, czy dany język bezkontekstowy jest | | Napisz algorytmy rozstrzygające, czy dany język bezkontekstowy jest |
| # nieskończny, | | # nieskończny, |
Linia 255: |
Linia 255: |
| }} | | }} |
|
| |
|
| {{cwiczenie|7|| | | {{cwiczenie|14|| |
| Dana niech będzie gramatyka (<math>\displaystyle v_0</math> jest symbolem początkowym): | | Dana niech będzie gramatyka (<math>\displaystyle v_0</math> jest symbolem początkowym): |
|
| |
|
Ćwiczenia 10
Ćwiczenie 1
Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe:
Rozwiązanie
We wszystkich przypadkach dowód przeprowadzimy nie wprost zakładając, że język jest
bezkontekstowy, a więc spełnia tezę lematu o pompowaniu.
Punkt 1.
Rozważmy słowo , dla , gdzie jest stałą z lematu o pompowaniu.
Podobnie jak w przykładzie Uzupelnic lekcja11-w -ex1.1| pokazujemy, że jedyną możliwością rozłożenia
słowa zgodnym z lematem o pompowaniu jest przyjęcie jako i potęgi
jednej z liter . To wyklucza dla pewnych przynależność do języka słów .
Punkt 2.
Podobnie jak w punkcie 1 rozważmy szczególne dostatecznie długie słowo z języka , a mianowicie
i niech , gdzie jest stałą z lematu o pompowaniu. Dalsze rozumowanie
jest analogicze jak w punkcie 1.
Punkt 3.
Dostatecznie długie słowo możemy rozłożyć na katenację pięciu słów
tak by był spełniony warunek pompowania z lematu. Jeśli , to
dla dowolnego takiego, że . Dla ( jest stałą z lematu o pompowaniu) .
Innej możliwości rozkładu słowa z języka już nie ma. Dalej postępujemy standardowo.
Wprowadzimy uogólnienie lematu o pompowaniu dla języków bezkontekstowych. Dla słowa
o długości dowolną liczbę ze zbioru nazywamy pozycją w słowie . Ustalając
dowolny podzbiór będziemy mówić, że w słowie wyróżniono pozycje ze zbioru .
Lemat 1 (Ogden)
Dla dowolnego języka bezkontekstowego istnieje
liczba naturalna taka, że każde słowo , w którym
wyróżniono lub więcej pozycji, można przedstawić w formie
, gdzie
oraz
- zawiera przynajmniej jedną wyróżnioną pozycję,
- zawiera co najwyżej wyróżnionych pozycji,
- dla
Lemat o pompowaniu jest szczególnym przypadkiem lematu Ogdena. Lemat
Ogdena można próbować stosować w tych przypadkach, w których
lemat o pompowaniu nie działa.
Ćwiczenie 2
Stosując lemat Ogdena pokaż, że język nie jest bezkontekstowy.
Rozwiązanie
Nie wprost, załóżmy, że jest bezkontekstowy i niech
będzie stałą z lematu Ogdena. Rozważmy słowo
. Wyróżnijmy wszystkie pozycje, na których
znajdują się litery .
Weźmy rozkład . Zauważmy, że jeśli w lub
występują co najmniej dwie różne litery, to
(np. jeśli składa się z liter i to w słowie
przynajmniej jedna litera znajdzie się za jakąś literą ).
Ponieważ zaznaczyliśmy pozycje liter , to z założenia lematu musi
być lub .
Jeśli lub to . Jeśli
natomiast , to (dlaczego?). Rozważmy
przypadek, gdy oraz (pozostałe przypadki
traktowane są analogicznie). Niech . Ponieważ , to dzieli . Niech . Słowo
należy do , ale
. Ponieważ , to mamy , ale
jednocześnie . Otrzymaliśmy
sprzeczność.
W pozostałych przypadkach w analogiczny sposób dochodzimy do takiej
sprzeczności. Zatem nie jest bezkontekstowy.
Ćwiczenie 3
Udowodnij, że dla dowolnego języka nad alfabetem jednoelementowym
Rozwiązanie
Wystarczy udowodnić, że każdy język bezkontekstowy jest regularny. Niech
będzie językiem bezkontekstowym. Z lematu o pompowaniu wynika, że
takie, że każde słowo o długości można
przedstawić w formie , gdzie oraz
, , dla
Stąd, że wynika, że dla pewnego oraz dla .
Przyjmijmy . Wówczas dla każdego słowa o długości mamy
.
Dla oznaczmy przez
Jeśli , to niech będzie słowem o najmniejszej długości. Wówczas
Zatem
Ćwiczenie 4
Udowodnij, że język
jest bezkontekstowy.
Rozwiązanie
Język , gdzie
jest językiem bezkontekstowym,
jest językiem regularnym.
Języki regularne są domknięte ze względu na uzupełnienie, a przecięcie języka bezkontekstowego z regularnm jest
językiem bezkontekstowym.
Ćwiczenie 5
Czy gramatyka poprawnych nawiasów
jest jednoznaczna?
Rozwiązanie
Gramatyka nie jest jednoznaczna. Oto dwie pochodne lewostronne słowa :
Ćwiczenie 6
Określ gramatyki generujące języki
- ,
- .
Czy gramatyki te są jednoznaczne?
Rozwiązanie
Język jest generowany przez gramatykę o zbiorze praw
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle P_1 : v_0 \rightarrow v_1c \; |\; a w_1 \; |\;av_2 b\; |\; 1 ,\;\; v_1 \rightarrow v_1c \; |\;av_2 b \; |\;1 , \;\; v_2 \rightarrow a v_2 b \; |\;1 ,\\ w_1 \rightarrow aw_1 \; |\; bw_2 c \; |\;1,\;\; w_2 \rightarrow bw_2 c \; |\;1}
Gramatyka ta nie jest jednoznaczna. Każde słowo w postaci ma dwa różne wyprowadzenia.
Na przykład dla słowa mamy
Język jest generowany przez gramatykę o zbiorze praw
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle P_2 : v_0 \rightarrow v_1 \; |\; v_2 , \;\; v_1 \rightarrow av_1 \; |\;av_3 , \;\; v_2 \rightarrow v_2 b \; |\;v_4 b , \;\; v_3 \rightarrow bv_3 \; |\; bv_5, \\ v_4 \rightarrow v_4 a \; |\;v_6 a, \;\; v_5 \rightarrow av_5 b \; |\; ab ,\;\; v_6 \rightarrow a v_6 b \; |\;ab}
Gramatyka też nie jest jednoznaczna. Każde słowo w postaci ma dwa różne wyprowadzenia.
Natomiast język jest również generowany przez gramatykę
o zbiorze praw
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle P_3 : v_0 \rightarrow v_1 v_1\; |\; v_1 v_2 \; |\; v_2 v_1, \;\; v_1 \rightarrow av_1b \; |\;ab , \;\; v_2 \rightarrow av_3 \; |\;v_4 b , \;\; v_3 \rightarrow av_3 , \\ v_4 \rightarrow v_4 b \; |\;v_1 b, \;\; }
i ta gramatyka jest jednoznaczna, co oznacza, że język jest jednoznaczny.
Uwaga. Język można rozłożyć na sumę trzech rozłącznych i bezkontekstowych języków.
.
Gramatyka generuje niezależnie od siebie te trzy zbiory. Rozkładając analogicznie język otrzymujemy
.
Tym razem nie jest to rozkład na sumę języków bezkontekstowych.
Ćwiczenie 7
Dana niech będzie gramatyka ( jest symbolem początkowym):
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned v_0 & \rightarrow & v_0v_1\ |\ v_3v_1 \\ v_1 & \rightarrow & v_1v_2\ |\ v_2v_3 \\ v_2 & \rightarrow & v_4v_1\ |\ v_3v_3\ |\ a \\ v_3 & \rightarrow & v_1v_2\ |\ v_4v_2\ |\ b \\ v_4 & \rightarrow & v_3v_4\ |\ v_0v_1\ |\ c. \endaligned}
Używając algorytmu Cocke'a-Youngera-Kasamiego sprawdź, czy poniższe
słowa należą do języka generowanego przez tę gramatykę.
- ,
- ,
- .
ZADANIA DOMOWE
Ćwiczenie 8
Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe:
Ćwiczenie 9
Stosując lemat Ogdena pokaż, że język gdzie nie jest
bezkontekstowy.
Wskazówka
Rozważ słowo , gdzie jest liczbą
pierwszą większą niż i większą niż 3, gdzie jest stałą z
lematu. Jako pozycje oznaczone wybierz wszystkie pozycje liter .
Ćwiczenie 10
Udowodnij, że język
jest bezkontekstowy.
Ćwiczenie 11
Czy gramatyka poprawnych nawiasów
rozważana w przykładzie Uzupelnic lekcja9-w-ex1.2| jest jednoznaczna?
Ćwiczenie 12
Określ gramatyki generujące języki
- ,
- .
Czy gramatyki te są jednoznaczne? Wykaż, że język jest jednoznaczny.
Ćwiczenie 13
Napisz algorytmy rozstrzygające, czy dany język bezkontekstowy jest
- nieskończny,
- niepusty.
Ćwiczenie 14
Dana niech będzie gramatyka ( jest symbolem początkowym):
Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned v_0 & \rightarrow & v_0v_1\ |\ v_3v_1 \\ v_1 & \rightarrow & v_2v_1\ |\ v_3v_2 \\ v_2 & \rightarrow & v_1v_4\ |\ v_3v_3\ |\ a \\ v_3 & \rightarrow & v_2v_2\ |\ v_4v_2\ |\ b \\ v_4 & \rightarrow & v_1v_4\ |\ v_0v_1\ |\ c. \endaligned}
Używając algorytmu Cocke'a-Youngera-Kasamiego sprawdź, czy poniższe
słowa należą do języka generowanego przez tę gramatykę.
- ,
- ,
- .