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
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:
}}
}}


ROZWIĄZANIE. Nie wprost, załóżmy, że <math>\displaystyle L</math> jest bezkontekstowy i niech  
<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. Wystarczy  udowodnić, że każdy język bezkontekstowy jest regularny. Niech  
<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:
}}
}}


ROZWIĄZANIE. Język <math>\displaystyle L=L_1 \cap \overline{L}_2</math>, gdzie<br>
<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:
}}
}}


ROZWIĄZANIE. Gramatyka nie jest jednoznaczna. Oto dwie pochodne lewostronne słowa <math>\displaystyle (())()</math>:<br>
<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:
}}
}}


ROZWIĄZANIE.<br>
<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:
}}
}}


ROZWIĄZANIE <math>\displaystyle w_1 \not \in L(G)</math>, <math>\displaystyle w_2, w_3 \in L(G)</math>.
<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:

  1. L={anbmck:k=max{n,m}}
  2. L={akbncm:k<n<m}
  3. L={wwa|w|:w{a,b}*}
Rozwiązanie

Lemat 1 (Ogden)

Dla dowolnego języka bezkontekstowego LA* istnieje liczba naturalna M1 taka, że każde słowo wL, w którym wyróżniono M lub więcej pozycji, można przedstawić w formie w=u1w1uw2u2, gdzie w1,w2,v1,v2,uA* oraz

  1. w1w2 zawiera przynajmniej jedną wyróżnioną pozycję,
  2. w1uw2 zawiera co najwyżej M wyróżnionych pozycji,
  3. u1w1iuw2iu2L dla i=0,1,...

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 L={aibjck:i=j,j=k,k=i} nie jest bezkontekstowy.

Rozwiązanie

Ćwiczenie 3

Udowodnij, że dla dowolnego języka L nad alfabetem jednoelementowym

L3L2
Rozwiązanie

Ćwiczenie 4

Udowodnij, że język L={anbn:nnie jest wielokrotnością liczby5} jest bezkontekstowy.

Rozwiązanie

Ćwiczenie 5

Czy gramatyka poprawnych nawiasów
({v0},{(,)},v0,P), gdzieP:v0v0v0|(v0)|1

jest jednoznaczna?

Rozwiązanie

Ćwiczenie 6

Określ gramatyki generujące języki

  1. L1={anbmcm:m,n0}{anbncm:m,n0},
  2. L2={anbnapbq:n,p,q1}{anbmapbp:n,m,p1}.

Czy gramatyki te są jednoznaczne?

Rozwiązanie

Ćwiczenie 7

Dana niech będzie gramatyka (v0 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ę.

  1. w1=bac,
  2. w2=babcab,
  3. w3=bcaaca.
Rozwiązanie

2. ZADANIA DOMOWE

Ćwiczenie 1

Wykorzystując lemat o pompowaniu udowodnij, że następujące języki nie są bezkontekstowe:

  1. L={anbmck:k=min{m,n}}
  2. L={anbmck:k=mn}
  3. L={anbn2}

Ćwiczenie 2

Stosując lemat Ogdena pokaż, że język L={aibjck:i,j,k>1, k=ir, k=js, gdzie r,s{2,3,...}} nie jest bezkontekstowy.

Wskazówka

Ćwiczenie 3

Udowodnij, że język L={ww:w{a,b}*{ab2a}} jest bezkontekstowy.

Ćwiczenie 4

Czy gramatyka poprawnych nawiasów

({v0,v1},{(,)},v0,P), gdzieP:v0v1v0|1,v1(v0)

rozważana w przykładzie Uzupelnic lekcja9-w-ex1.2| jest jednoznaczna?

Ćwiczenie 5

Określ gramatyki generujące języki

  1. L3={anbmcndp:m,n,p0}{anbmcpdm:m,n,p0},
  2. L4={anb2n:n1}{anb3n:n1}.

Czy gramatyki te są jednoznaczne? Wykaż, że język L4 jest jednoznaczny.

Ćwiczenie 6

Napisz algorytmy rozstrzygające, czy dany język bezkontekstowy jest

  1. nieskończny,
  2. niepusty.

Ćwiczenie 7

Dana niech będzie gramatyka (v0 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ę.

  1. w1=cabba,
  2. w2=baccab,
  3. w3=aabbcc.