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
Matiunreal (dyskusja | edycje) |
Matiunreal (dyskusja | edycje) |
||
Linia 38: | Linia 38: | ||
</div></div> | </div></div> | ||
{{lemat|1 | {{lemat|1 (Ogden)|| | ||
(Ogden) | |||
Dla dowolnego języka bezkontekstowego <math>\displaystyle L \subset A^*</math> istnieje | Dla dowolnego języka bezkontekstowego <math>\displaystyle L \subset A^*</math> istnieje | ||
Linia 61: | Linia 60: | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | |||
Nie wprost, załóżmy, że <math>\displaystyle L</math> jest bezkontekstowy i niech | |||
<math>\displaystyle M</math> będzie stałą z lematu Ogdena. Rozważmy słowo | <math>\displaystyle M</math> będzie stałą z lematu Ogdena. Rozważmy słowo | ||
<math>\displaystyle w=a^Mb^{M!+M}c^{2M!+M}</math>. Wyróżnijmy wszystkie pozycje, na których | <math>\displaystyle w=a^Mb^{M!+M}c^{2M!+M}</math>. Wyróżnijmy wszystkie pozycje, na których | ||
Linia 86: | Linia 86: | ||
W pozostałych przypadkach w analogiczny sposób dochodzimy do takiej | W pozostałych przypadkach w analogiczny sposób dochodzimy do takiej | ||
sprzeczności. Zatem <math>\displaystyle L</math> nie jest bezkontekstowy. | sprzeczności. Zatem <math>\displaystyle L</math> nie jest bezkontekstowy. | ||
</div></div> | |||
{{cwiczenie|3|| | {{cwiczenie|3|| | ||
Linia 93: | Linia 94: | ||
}} | }} | ||
Rozwiązanie | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | ||
Wystarczy udowodnić, że każdy język bezkontekstowy jest regularny. Niech | |||
<math>\displaystyle L \subset \{a\}^*</math> będzie językiem bezkontekstowym. Z lematu o pompowaniu wynika, że | <math>\displaystyle L \subset \{a\}^*</math> będzie językiem bezkontekstowym. Z lematu o pompowaniu wynika, że | ||
<math>\displaystyle \exists N,M \geqslant 1</math> takie, że każde słowo <math>\displaystyle w \in L</math> o długości <math>\displaystyle |w| > N</math> można | <math>\displaystyle \exists N,M \geqslant 1</math> takie, że każde słowo <math>\displaystyle w \in L</math> o długości <math>\displaystyle |w| > N</math> można | ||
Linia 108: | Linia 110: | ||
Zatem <center><math>\displaystyle L=\{w \in L : |w|\leqslant p\} \cup \bigcup_{i=1}^n w_i(a^n)^*. </math></center> | Zatem <center><math>\displaystyle L=\{w \in L : |w|\leqslant p\} \cup \bigcup_{i=1}^n w_i(a^n)^*. </math></center> | ||
</div></div> | |||
{{cwiczenie|4|| | {{cwiczenie|4|| | ||
Linia 115: | Linia 118: | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | |||
Język <math>\displaystyle L=L_1 \cap \overline{L}_2</math>, gdzie<br> | |||
<math>\displaystyle L_1=\left\{ a^{n}b^{n}:n\geqslant 0\right\} </math> jest językiem bezkontekstowym,<br> | <math>\displaystyle L_1=\left\{ a^{n}b^{n}:n\geqslant 0\right\} </math> jest językiem bezkontekstowym,<br> | ||
<math>\displaystyle L_2=\left\{ w \in \{a,b\}^* : |w|=5k \; \text{dla pewnego}\; k\geqslant 0 \right\} </math> jest językiem regularnym.<br> | <math>\displaystyle L_2=\left\{ w \in \{a,b\}^* : |w|=5k \; \text{dla pewnego}\; k\geqslant 0 \right\} </math> jest językiem regularnym.<br> | ||
Języki regularne są domknięte ze względu na uzupełnienie, a przecięcie języka bezkontekstowego z regularnm jest | Języki regularne są domknięte ze względu na uzupełnienie, a przecięcie języka bezkontekstowego z regularnm jest | ||
językiem bezkontekstowym. | językiem bezkontekstowym. | ||
</div></div> | |||
{{cwiczenie|5|| | {{cwiczenie|5|| | ||
Linia 128: | Linia 133: | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | |||
Gramatyka nie jest jednoznaczna. Oto dwie pochodne lewostronne słowa <math>\displaystyle (())()</math>:<br> | |||
<math>\displaystyle v_0\mapsto v_0v_0 \mapsto (v_0)v_0 \mapsto ((v_0))v_0\mapsto (())v_0 \mapsto (())(v_0) \mapsto | <math>\displaystyle v_0\mapsto v_0v_0 \mapsto (v_0)v_0 \mapsto ((v_0))v_0\mapsto (())v_0 \mapsto (())(v_0) \mapsto | ||
(())()</math><br> | (())()</math><br> | ||
Linia 134: | Linia 140: | ||
\mapsto (())v_0v_0 \mapsto (())(v_0) v_0 \mapsto | \mapsto (())v_0v_0 \mapsto (())(v_0) v_0 \mapsto | ||
(())()v_0 \mapsto (())() </math> | (())()v_0 \mapsto (())() </math> | ||
</div></div> | |||
{{cwiczenie|6|| | {{cwiczenie|6|| | ||
Linia 143: | Linia 150: | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | |||
Język <math>\displaystyle L_1</math> jest generowany przez gramatykę <math>\displaystyle G_1</math> o zbiorze praw<br> | Język <math>\displaystyle L_1</math> jest generowany przez gramatykę <math>\displaystyle G_1</math> o zbiorze praw<br> | ||
<math>\displaystyle P_1 : v_0 \rightarrow v_1c \; |\; a w_1 \; |\;av_2 b\; |\; 1 ,\;\; v_1 \rightarrow v_1c \; |\;av_2 b \; |\;1 , \;\; | <math>\displaystyle P_1 : v_0 \rightarrow v_1c \; |\; a w_1 \; |\;av_2 b\; |\; 1 ,\;\; v_1 \rightarrow v_1c \; |\;av_2 b \; |\;1 , \;\; | ||
Linia 174: | Linia 181: | ||
\{a^n b^m c^m : m,n \geqslant 0, n\neq m \}</math>.<br> | \{a^n b^m c^m : m,n \geqslant 0, n\neq m \}</math>.<br> | ||
Tym razem nie jest to rozkład na sumę języków bezkontekstowych. | Tym razem nie jest to rozkład na sumę języków bezkontekstowych. | ||
</div></div> | |||
{{cwiczenie|7|| | {{cwiczenie|7|| | ||
Linia 193: | Linia 201: | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span><div class="mw-collapsible-content" style="display:none"> | |||
<math>\displaystyle w_1 \not \in L(G)</math>, <math>\displaystyle w_2, w_3 \in L(G)</math>. | |||
</div></div> | |||
==2. ZADANIA DOMOWE== | ==2. ZADANIA DOMOWE== |
Wersja z 10:59, 25 sie 2006
1. ĆWICZENIA 10
Ćwiczenie 1
Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe:
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.
Ćwiczenie 3
Udowodnij, że dla dowolnego języka nad alfabetem jednoelementowym
Ćwiczenie 4
Udowodnij, że język jest bezkontekstowy.
Ćwiczenie 5
jest jednoznaczna?
Ćwiczenie 6
Określ gramatyki generujące języki
- ,
- .
Czy gramatyki te są jednoznaczne?
Ćwiczenie 7
Dana niech będzie gramatyka ( jest symbolem początkowym):
Używając algorytmu Cocke'a-Youngera-Kasamiego sprawdź, czy poniższe słowa należą do języka generowanego przez tę gramatykę.
- ,
- ,
- .
2. ZADANIA DOMOWE
Ćwiczenie 1
Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe:
Ćwiczenie 2
Stosując lemat Ogdena pokaż, że język gdzie nie jest bezkontekstowy.
Ćwiczenie 3
Udowodnij, że język jest bezkontekstowy.
Ćwiczenie 4
Czy gramatyka poprawnych nawiasów
rozważana w przykładzie Uzupelnic lekcja9-w-ex1.2| jest jednoznaczna?
Ćwiczenie 5
Określ gramatyki generujące języki
- ,
- .
Czy gramatyki te są jednoznaczne? Wykaż, że język jest jednoznaczny.
Ćwiczenie 6
Napisz algorytmy rozstrzygające, czy dany język bezkontekstowy jest
- nieskończny,
- niepusty.
Ćwiczenie 7
Dana niech będzie gramatyka ( jest symbolem początkowym):
Używając algorytmu Cocke'a-Youngera-Kasamiego sprawdź, czy poniższe słowa należą do języka generowanego przez tę gramatykę.
- ,
- ,
- .