Wstęp do programowania / Ćwiczenia 5: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
(Przerwa na górze)
(Zadanie 1½)
Linia 8: Linia 8:
  
 
==Zadanie 1 (palindromy)==
 
==Zadanie 1 (palindromy)==
Napisz gramatykę generującą wszystkie poprawne palindromy nad alfabetem {0,1}.
+
Napisz gramatykę generującą wszystkie palindromy nad alfabetem {0,1}.
  
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
Linia 28: Linia 28:
 
</div>
 
</div>
 
</div>  
 
</div>  
 +
 +
==Zadanie 1½==
 +
Napisz gramatykę generującą język wszystkich słów nad alfabetem {0,1} postaci <math>0^n1^m0^{n+m}</math>.
 +
 +
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 +
'''Rozwiązanie 1''' 
 +
<div class="mw-collapsible-content" style="display:none">
 +
J → &epsilon; | 1J0
 +
 +
S → J | 0S0
 +
 +
symbol startowy: S
 +
 +
''Zgodność'': (każde wygenerowane słowo należy do języka) pokażemy przez indukcję po długości wyprowadzenia, że każde słowo wyprowadzone z J jest postaci <math>1^m0^m</math> oraz że każde słowo wyprowadzone z S jest postaci <math>0^n1^m0^{n+m}</math>.
 +
 +
Przypadek bazowy: wyprowadzenie długości 1 jest możliwe tylko z J i rzeczywiście wyprowadzone słowo &epsilon; jest postaci <math>1^m0^m</math> (dla m=0).
 +
 +
Krok indukcyjny: załóżmy, że wszystkie wyprowadzenia o długości < n (dla pewnego n>1) spełniają tę własność. Weźmy dowolne wyprowadzenie o długości n. Jego pierwszym krokiem jest S → J, S → 0S0 lub J → 1J0,
 +
 +
W pierwszym przypadku wyprowadzenie zawiera wyprowadzenie o długości n-1 startujące z J. Z założenia indukcyjnego wiemy, że wyprowadzone słowo jest postaci <math>1^m0^m</math>, a więc również <math>0^n1^m0^{n+m}</math> (dla n=0).
 +
 +
W drugim przypadku wyprowadzone słowo jest postaci 0x0, gdzie x jest wyprowadzalny z S za pomocą n-1 kroków. Zatem z założenia indukcyjnego x jest postaci <math>0^n1^m0^{n+m}</math>, zatem <math>0x0=0^{n+1}1^m0^{n+m+1}</math>, zatem jest też jest tej postaci.
 +
 +
W trzecim przypadku wyprowadzone słowo jest postaci 1x0, gdzie x można wyprowadzić z J w n-1 krokach, zatem podobnie jak poprzednio 1x0 jest postaci <math>1^m0^m</math>, ponieważ x ma tę postać (z założenia indukcyjnego).
 +
 +
''Pełność'': (każde słowo języka da się wyprowadzić). Najpierw przez indukcję po m pokażemy, że każde słowo postaci <math>1^m0^m</math> można wyprowadzić z J. Następnie przez indukcję po n, że każde słowo postaci <math>0^n1^m0^{n+m}</math> można wyprowadzić z S.
 +
 +
Istotnie, jeśli m=0 to słowo <math>1^00^0=\epsilon</math> można wyprowadzić z J. Zakładając, że słowo <math>1^m0^m</math> można wyprowadzić z J, łatwo widać, że wyprowadzenie J → 1J0 →...→ 11<sup>m</sup>0<sup>m</sup>0 jest wyprowadzeniem słowa <math>1^{m+1}0^{m+1}</math>. Podobnie łatwo pokazać, że każde słowo postaci <math>0^n1^m0^{n+m}</math> da się wyprowadzić z S.
 +
</div>
 +
</div>
  
 
==Zadanie 2 (wyrażenia nawiasowe)==
 
==Zadanie 2 (wyrażenia nawiasowe)==
Linia 69: Linia 99:
  
 
==Zadanie 3==
 
==Zadanie 3==
Podaj gramatykę języka słow w nad alfabetem {0,1} takich, że <math>\#_0(w)=\#_1(w)</math>
+
Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że <math>\#_0(w)=\#_1(w)</math>
  
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
Linia 95: Linia 125:
  
 
==Zadanie 4==
 
==Zadanie 4==
Podaj gramatykę języka słow w nad alfabetem {0,1} takich, że <math>\#_0(w)=\#_1(w)+1</math>
+
Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że <math>\#_0(w)=\#_1(w)+1</math>
  
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
 
<div class="mw-collapsible mw-made=collapsible mw-collapsed">

Wersja z 12:48, 19 lip 2006

To są ćwiczenia z gramatyk bezkontekstowych.

Ogladaj rozwiązania __SHOWALL__
Ukryj rozwiązania __HIDEALL__


Zadanie 1 (palindromy)

Napisz gramatykę generującą wszystkie palindromy nad alfabetem {0,1}.

Rozwiązanie 1

Zadanie 1½

Napisz gramatykę generującą język wszystkich słów nad alfabetem {0,1} postaci .

Rozwiązanie 1

Zadanie 2 (wyrażenia nawiasowe)

Napisz gramatykę generującą wszystkie poprawne wyrażenia nawiasowe.

Rozwiązanie 1

Rozwiązanie 2

Zadanie 3

Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że

Rozwiązanie 1

Rozwiązanie 2

Zadanie 4

Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że

Rozwiązanie 1

Zadanie 5

Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3.

Rozwiązanie 1

Pytanko 1

Odpowiedź

Zadanie 6

Podaj gramatykę generującą słowa nad alfabetem {0,1}, w których nie występuje podsłowo 000.

Rozwiązanie 1

Rozwiązanie 2

Rozwiązanie 3

Dla ciekawskich