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
m Zastępowanie tekstu – „.</math>” na „</math>.” |
m Zastępowanie tekstu – „ </math>” na „</math>” |
||
Linia 3: | Linia 3: | ||
{{cwiczenie|1|| | {{cwiczenie|1|| | ||
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>L=\left\{ a^{n}b^{m}c^{k}:k=\max \left\{ n,m\right\} \right\}, | # <math>L=\left\{ a^{n}b^{m}c^{k}:k=\max \left\{ n,m\right\} \right\}, </math> | ||
# <math>L=\left\{ a^{k}b^{n}c^{m}:k<n<m\right\}, | # <math>L=\left\{ a^{k}b^{n}c^{m}:k<n<m\right\}, </math> | ||
# <math>L=\left\{ w\overleftarrow{w}a^{|w|}:w\in \left\{ a,b\right\} ^{*}\right\}. | # <math>L=\left\{ w\overleftarrow{w}a^{|w|}:w\in \left\{ a,b\right\} ^{*}\right\}. </math> | ||
}} | }} | ||
Linia 43: | Linia 43: | ||
liczba naturalna <math>M \geqslant 1</math> taka, że każde słowo <math>w \in L</math>, w którym | liczba naturalna <math>M \geqslant 1</math> taka, że każde słowo <math>w \in L</math>, w którym | ||
wyróżniono <math>M</math> lub więcej pozycji, można przedstawić w formie | wyróżniono <math>M</math> lub więcej pozycji, można przedstawić w formie | ||
<math>w=u_1w_1uw_2u_2</math>, gdzie <math>w_{1,}w_{2},v_{1},v_{2},u\in A^{*} | <math>w=u_1w_1uw_2u_2</math>, gdzie <math>w_{1,}w_{2},v_{1},v_{2},u\in A^{*} </math> | ||
oraz | oraz | ||
# <math>w_1w_2</math> zawiera przynajmniej jedną wyróżnioną pozycję, | # <math>w_1w_2</math> zawiera przynajmniej jedną wyróżnioną pozycję, | ||
Linia 88: | Linia 88: | ||
<math> L \subset \{a\}^*</math> będzie językiem bezkontekstowym. Z lematu o pompowaniu wynika, że | <math> L \subset \{a\}^*</math> będzie językiem bezkontekstowym. Z lematu o pompowaniu wynika, że | ||
<math>\exists N,M \geqslant 1</math> takie, że każde słowo <math>w \in L</math> o długości <math>|w| > N</math> można | <math>\exists N,M \geqslant 1</math> takie, że każde słowo <math>w \in L</math> o długości <math>|w| > N</math> można | ||
przedstawić w formie <math>w=u_1w_1uw_2u_2</math>, gdzie <math>w_{1,}w_{2},v_{1},v_{2},u\in A^{*} | przedstawić w formie <math>w=u_1w_1uw_2u_2</math>, gdzie <math>w_{1,}w_{2},v_{1},v_{2},u\in A^{*} </math> oraz | ||
<math>|w_1uw_2 |\leqslant M</math>, <math>w_1w_2 \neq 1</math>, <math>u_1w_1^iuw_2^iu_2 \in L</math> dla <math>i=0,1,..</math>.<br> | <math>|w_1uw_2 |\leqslant M</math>, <math>w_1w_2 \neq 1</math>, <math>u_1w_1^iuw_2^iu_2 \in L</math> dla <math>i=0,1,..</math>.<br> | ||
Stąd, że <math> L \subset \{a\}^*</math> wynika, że <math>w=a^pa^k</math> dla pewnego <math>k\leqslant M</math> oraz <math>a^p(a^k)^i \in L</math> dla <math>i=0,1,..</math>..<br> | Stąd, że <math> L \subset \{a\}^*</math> wynika, że <math>w=a^pa^k</math> dla pewnego <math>k\leqslant M</math> oraz <math>a^p(a^k)^i \in L</math> dla <math>i=0,1,..</math>..<br> | ||
Linia 99: | Linia 99: | ||
<center><math>\forall w \in L:|w|>N \;\;w \in \bigcup_{i=1}^n w_i(a^n)^*</math>.</center> | <center><math>\forall w \in L:|w|>N \;\;w \in \bigcup_{i=1}^n w_i(a^n)^*</math>.</center> | ||
Zatem <center><math>L=\{w \in L : |w|\leqslant p\} \cup \bigcup_{i=1}^n w_i(a^n)^*. | Zatem <center><math>L=\{w \in L : |w|\leqslant p\} \cup \bigcup_{i=1}^n w_i(a^n)^*. </math></center> | ||
</div></div> | </div></div> | ||
Linia 110: | Linia 110: | ||
<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"> | <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>L=L_1 \cap \overline{L}_2</math>, gdzie<br> | Język <math>L=L_1 \cap \overline{L}_2</math>, gdzie<br> | ||
<math>L_1=\{ a^{n}b^{n}:n\geqslant 0\} | <math>L_1=\{ a^{n}b^{n}:n\geqslant 0\} </math> jest językiem bezkontekstowym,<br> | ||
<math>L_2=\left\{ w \in \{a,b\}^* : |w|=5k \text{ dla pewnego } k\geqslant 0 \right\} | <math>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 regularnym jest | Języki regularne są domknięte ze względu na uzupełnienie, a przecięcie języka bezkontekstowego z regularnym jest | ||
językiem bezkontekstowym. | językiem bezkontekstowym. | ||
Linia 117: | Linia 117: | ||
{{cwiczenie|5|| | {{cwiczenie|5|| | ||
Czy gramatyka poprawnych nawiasów <center><math>(\{v_0\},\{(,)\},v_0, P ), </math> gdzie <math> P: v_0 \rightarrow v_0 v_0\;|\;(v_0)\;|\;1</math></center> | Czy gramatyka poprawnych nawiasów <center><math>(\{v_0\},\{(,)\},v_0, P ),</math> gdzie <math> P: v_0 \rightarrow v_0 v_0\;|\;(v_0)\;|\;1</math></center> | ||
jest jednoznaczna? | jest jednoznaczna? | ||
Linia 128: | Linia 128: | ||
<math>v_0\mapsto v_0v_0 \mapsto v_0v_0 v_0 \mapsto (v_0)v_0v_0 \mapsto ((v_0))v_0v_0 | <math>v_0\mapsto v_0v_0 \mapsto v_0v_0 v_0 \mapsto (v_0)v_0v_0 \mapsto ((v_0))v_0v_0 | ||
\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> | </div></div> | ||
{{cwiczenie|6|| | {{cwiczenie|6|| | ||
Określ gramatyki generujące języki: | Określ gramatyki generujące języki: | ||
# <math>L_1 =\{a^n b^m c^m : m,n \geqslant 0 \} \cup \{a^n b^n c^m : m,n \geqslant 0 \} </math>, | # <math>L_1 =\{a^n b^m c^m : m,n \geqslant 0 \} \cup \{a^n b^n c^m : m,n \geqslant 0 \}</math>, | ||
# <math>L_2 =\{a^n b^n a^p b^q : n,p,q \geqslant 1 \}\cup \{a^n b^m a^p b^p : n,m,p \geqslant 1 \}</math>. | # <math>L_2 =\{a^n b^n a^p b^q : n,p,q \geqslant 1 \}\cup \{a^n b^m a^p b^p : n,m,p \geqslant 1 \}</math>. | ||
Linia 149: | Linia 149: | ||
Gramatyka ta nie jest jednoznaczna. Każde słowo w postaci <math>a^nb^nc^n</math> ma dwa różne wyprowadzenia. | Gramatyka ta nie jest jednoznaczna. Każde słowo w postaci <math>a^nb^nc^n</math> ma dwa różne wyprowadzenia. | ||
Na przykład dla słowa <math>abc</math> mamy: | Na przykład dla słowa <math>abc</math> mamy: | ||
<center><math>v_0 \mapsto v_1c \mapsto av_2bc \mapsto abc, | <center><math>v_0 \mapsto v_1c \mapsto av_2bc \mapsto abc, </math></center> | ||
<center><math>v_0 \mapsto aw_1 \mapsto abw_2c \mapsto abc. | <center><math>v_0 \mapsto aw_1 \mapsto abw_2c \mapsto abc. </math></center> | ||
Język <math>L_2</math> jest generowany przez gramatykę <math>G_2</math> o zbiorze praw<br> | Język <math>L_2</math> jest generowany przez gramatykę <math>G_2</math> o zbiorze praw<br> | ||
Linia 206: | Linia 206: | ||
{{cwiczenie|8|| | {{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>L=\left\{ a^{n}b^{m}c^{k}:k=min\{m,n\}\right\}, | # <math>L=\left\{ a^{n}b^{m}c^{k}:k=min\{m,n\}\right\}, </math> | ||
# <math>L=\left\{ a^{n}b^{m}c^{k}:k=mn\right\}, | # <math>L=\left\{ a^{n}b^{m}c^{k}:k=mn\right\}, </math> | ||
# <math>L=\left\{ a^{n}b^{n^{2}}\right\}. | # <math>L=\left\{ a^{n}b^{n^{2}}\right\}. </math> | ||
}} | }} | ||
Linia 214: | Linia 214: | ||
{{cwiczenie|9|| | {{cwiczenie|9|| | ||
Stosując lemat Ogdena, pokaż, że język <math>L=\{a^ib^jc^k: i,j,k>1,\ k | Stosując lemat Ogdena, pokaż, że język <math>L=\{a^ib^jc^k: i,j,k>1,\ k | ||
\not = ir,\ k \not = js, </math> gdzie <math>r,s \in \{2,3,...\}\}</math> nie jest | \not = ir,\ k \not = js,</math> gdzie <math>r,s \in \{2,3,...\}\}</math> nie jest | ||
bezkontekstowy. | bezkontekstowy. | ||
}} | }} | ||
Linia 225: | Linia 225: | ||
{{cwiczenie|10|| | {{cwiczenie|10|| | ||
Udowodnij, że język <math>L=\left\{ w\overleftarrow{w } : w \in \{a,b\}^* \setminus \{ab^2a\} \right\} | Udowodnij, że język <math>L=\left\{ w\overleftarrow{w } : w \in \{a,b\}^* \setminus \{ab^2a\} \right\} </math> | ||
jest bezkontekstowy. | jest bezkontekstowy. | ||
}} | }} | ||
Linia 231: | Linia 231: | ||
{{cwiczenie|11||}} | {{cwiczenie|11||}} | ||
Czy gramatyka poprawnych nawiasów | Czy gramatyka poprawnych nawiasów | ||
<center><math>(\{v_0,v_1\},\{(,)\},v_0, P ), </math> gdzie <math> | <center><math>(\{v_0,v_1\},\{(,)\},v_0, P ),</math> gdzie <math> | ||
P: v_0 \rightarrow v_1 v_0\;|\;1, \;\; v_1 \rightarrow (v_0)</math></center> | P: v_0 \rightarrow v_1 v_0\;|\;1, \;\; v_1 \rightarrow (v_0)</math></center> | ||
Linia 238: | Linia 238: | ||
{{cwiczenie|12|| | {{cwiczenie|12|| | ||
Określ gramatyki generujące języki: | Określ gramatyki generujące języki: | ||
# <math>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>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>L_4 =\{a^n b^{2n} : n \geqslant 1 \}\cup \{a^n b^{3n} : n \geqslant 1 \}</math>. | # <math>L_4 =\{a^n b^{2n} : n \geqslant 1 \}\cup \{a^n b^{3n} : n \geqslant 1 \}</math>. | ||
Wersja z 10:12, 5 wrz 2023
Ć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ę:
- ,
- ,
- .
Ć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.
Ćwiczenie 10
Udowodnij, że język jest bezkontekstowy.
Ćwiczenie 11
Czy gramatyka poprawnych nawiasów
rozważana w przykładzie 1.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):
Używając algorytmu Cocke'a-Youngera-Kasamiego, sprawdź, czy poniższe słowa należą do języka generowanego przez tę gramatykę:
- ,
- ,
- .