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
Linia 69: | Linia 69: | ||
być <math>\displaystyle w_1 \in a^+</math> lub <math>\displaystyle w_2 \in a^+</math>. | być <math>\displaystyle w_1 \in a^+</math> lub <math>\displaystyle w_2 \in a^+</math>. | ||
Jeśli <math>\displaystyle w_2 \in b^*</math> lub <math>\displaystyle w_2 \in a^*</math> to <math>\displaystyle w_1 \in a^+</math>. Jeśli natomiast <math>\displaystyle w_2 \in a^+</math>, to <math>\displaystyle w_1 \in a^*</math> (dlaczego?). Rozważmy | Jeśli <math>\displaystyle w_2 \in b^*</math> lub <math>\displaystyle w_2 \in a^*</math> to <math>\displaystyle w_1 \in a^+</math>. Jeśli natomiast <math>\displaystyle w_2 \in a^+</math>, to <math>\displaystyle w_1 \in a^*</math> (dlaczego?). | ||
przypadek, gdy <math>\displaystyle w_1 \in a^+</math> oraz <math>\displaystyle w_2 \in b^*</math> (pozostałe przypadki | Rozważmy przypadek, gdy <math>\displaystyle w_1 \in a^+</math> oraz <math>\displaystyle w_2 \in b^*</math> (pozostałe przypadki | ||
traktowane są analogicznie). Niech <math>\displaystyle p=|w_1|</math>. Ponieważ <math>\displaystyle 1 \leqslant p | traktowane są analogicznie). Niech <math>\displaystyle p=|w_1|</math>. Ponieważ <math>\displaystyle 1 \leqslant p | ||
\leqslant M</math>, to <math>\displaystyle p</math> dzieli <math>\displaystyle M!</math>. Niech <math>\displaystyle q=\frac{M!}{p}</math>. Słowo | \leqslant M</math>, to <math>\displaystyle p</math> dzieli <math>\displaystyle M!</math>. Niech <math>\displaystyle q=\frac{M!}{p}</math>. Słowo <math>\displaystyle z=u_1w_1^{2q+1}uw_2^{2q+1}u_2</math> należy do <math>\displaystyle L</math>, ale <math>\displaystyle w_1^{2q+1}=a^{p(2q+1)}=a^{2pq+p}=a^{2M!+p}</math>. Ponieważ <math>\displaystyle \sharp_a | ||
<math>\displaystyle z=u_1w_1^{2q+1}uw_2^{2q+1}u_2</math> należy do <math>\displaystyle L</math>, ale | u_1uu_2=M-p</math>, to mamy <math>\displaystyle \sharp_a z = 2M!+p+(M-p)=2M!+M</math>, ale jednocześnie <math>\displaystyle \sharp_c z = 2M!+M = \sharp_a z</math>. Otrzymaliśmy sprzeczność. | ||
<math>\displaystyle w_1^{2q+1}=a^{p(2q+1)}=a^{2pq+p}=a^{2M!+p}</math>. Ponieważ <math>\displaystyle \sharp_a | |||
u_1uu_2=M-p</math>, to mamy <math>\displaystyle \sharp_a z = 2M!+p+(M-p)=2M!+M</math>, ale | |||
jednocześnie <math>\displaystyle \sharp_c z = 2M!+M = \sharp_a z</math>. Otrzymaliśmy | |||
sprzeczność. | |||
W pozostałych przypadkach w analogiczny sposób dochodzimy do takiej | W pozostałych przypadkach w analogiczny sposób dochodzimy do takiej |
Wersja z 10:11, 27 sie 2006
Ć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 Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle L=\left\{ a^{n}b^{n}:n \;} nie jest wielokrotnością liczby 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ę:
- ,
- ,
- .