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
m Zastępowanie tekstu - "\aligned" na "\begin{align}"
Linia 103: Linia 103:


{{cwiczenie|4||
{{cwiczenie|4||
Udowodnij, że język    <math>\displaystyle L=\left\{ a^{n}b^{n}:n \;</math> nie jest wielokrotnością liczby <math> 5 \rbrace</math>   
Udowodnij, że język    <math>\displaystyle L=\{ a^{n}b^{n}:n \text{ nie jest wielokrotnością liczby } 5 \}</math>   
jest bezkontekstowy.
jest bezkontekstowy.


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>\displaystyle L=L_1 \cap \overline{L}_2</math>, gdzie<br>
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=\{ a^{n}b^{n}:n\geqslant 0\}  </math>    jest językiem bezkontekstowym,<br>
<math>\displaystyle L_2=\left\{ w \in \{a,b\}^* : |w|=5k </math> dla pewnego <math> k\geqslant 0 \rbrace </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 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 141: Linia 141:
<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>\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>
v_2 \rightarrow a v_2 b \; |\;1 ,\\
\begin{align}
w_1 \rightarrow aw_1 \; |\; bw_2 c \; |\;1,\;\; w_2 \rightarrow  bw_2 c \; |\;1.</math><br>
& 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.
\end{align}
</math><br>
Gramatyka ta nie jest jednoznaczna. Każde słowo w postaci <math>\displaystyle a^nb^nc^n</math> ma dwa różne wyprowadzenia.
Gramatyka ta nie jest jednoznaczna. Każde słowo w postaci <math>\displaystyle a^nb^nc^n</math> ma dwa różne wyprowadzenia.
Na przykład dla słowa <math>\displaystyle abc</math> mamy:
Na przykład dla słowa <math>\displaystyle abc</math> mamy:
Linia 151: Linia 154:


Język <math>\displaystyle L_2</math> jest  generowany przez  gramatykę <math>\displaystyle G_2</math>  o zbiorze praw<br>
Język <math>\displaystyle L_2</math> jest  generowany przez  gramatykę <math>\displaystyle G_2</math>  o zbiorze praw<br>
<math>\displaystyle  P_2 : v_0 \rightarrow v_1 \; |\; v_2 ,    \;\;  v_1 \rightarrow av_1 \; |\;av_3    , \;\;
<math>
v_2 \rightarrow  v_2 b \; |\;v_4 b , \;\;  v_3 \rightarrow bv_3    \; |\; bv_5, \\
\begin{align}
v_4  \rightarrow  v_4 a  \; |\;v_6 a,        \;\;
& 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_5 \rightarrow av_5 b \; |\; ab ,\;\; v_6 \rightarrow  a v_6 b \; |\;ab.</math><br>
& v_4  \rightarrow  v_4 a  \; |\;v_6 a,        \;\; v_5 \rightarrow av_5 b \; |\; ab ,\;\; v_6 \rightarrow  a v_6 b \; |\;ab.
\end{align}
</math><br>
Gramatyka <math>\displaystyle G_2</math> też nie jest jednoznaczna. Każde słowo w postaci <math>\displaystyle a^n b^n a^p b^p</math> ma dwa różne wyprowadzenia.
Gramatyka <math>\displaystyle G_2</math> też nie jest jednoznaczna. Każde słowo w postaci <math>\displaystyle a^n b^n a^p b^p</math> ma dwa różne wyprowadzenia.
Natomiast język <math>\displaystyle L_2</math> jest również generowany przez gramatykę  <math>\displaystyle G_3</math>  
Natomiast język <math>\displaystyle L_2</math> jest również generowany przez gramatykę  <math>\displaystyle G_3</math>  
o zbiorze praw<br>
o zbiorze praw<br>
<math>\displaystyle P_3 : v_0 \rightarrow v_1 v_1\; |\; v_1 v_2 \; |\; v_2 v_1,    \;\;  v_1 \rightarrow av_1b \; |\;ab    , \;\;
<math>\displaystyle  
\begin{align}
& 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_2 \rightarrow  av_3 \; |\;v_4 b , \;\;  v_3 \rightarrow av_3    , \\
v_4  \rightarrow  v_4 b  \; |\;v_1 b        \;\;
& v_4  \rightarrow  v_4 b  \; |\;v_1 b        \;\;
\end{align}
</math><br>
</math><br>
i ta gramatyka jest jednoznaczna, co oznacza, że język <math>\displaystyle L_2</math> jest jednoznaczny.<br>
i ta gramatyka jest jednoznaczna, co oznacza, że język <math>\displaystyle L_2</math> jest jednoznaczny.<br>

Wersja z 15:20, 28 wrz 2020

Ć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:n nie jest wielokrotnością liczby 5} jest bezkontekstowy.

Rozwiązanie

Ćwiczenie 5

Czy gramatyka poprawnych nawiasów
({v0},{(,)},v0,P), gdzie P: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):

v0v0v1 | v3v1v1v1v2 | v2v3v2v4v1 | v3v3 | av3v1v2 | v4v2 | bv4v3v4 | v0v1 | c

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
ZADANIA DOMOWE

Ćwiczenie 8

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 9

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 10

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

Ćwiczenie 11

Czy gramatyka poprawnych nawiasów

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

rozważana w przykładzie 1.2 jest jednoznaczna?

Ćwiczenie 12

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 13

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

  1. nieskończny,
  2. niepusty.

Ćwiczenie 14

Dana niech będzie gramatyka (v0 jest symbolem początkowym):

v0v0v1 | v3v1v1v2v1 | v3v2v2v1v4 | v3v3 | av3v2v2 | v4v2 | bv4v1v4 | v0v1 | c.

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.