Wstęp do programowania / Ćwiczenia 3: Różnice pomiędzy wersjami
Linia 33: | Linia 33: | ||
==Zadanie 2== | ==Zadanie 2== | ||
Napisz gramatykę generującą język wszystkich słów nad alfabetem {0,1} postaci <math>0^n1^m0^{n+m}</math>. | 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"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie 1</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
J → ε | 1J0 | J → ε | 1J0 | ||
Linia 57: | Linia 58: | ||
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 zauważyć, ż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. | 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 zauważyć, ż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> | ||
</div> | </div> | ||
==Zadanie 3 (wyrażenia nawiasowe)== | ==Zadanie 3 (wyrażenia nawiasowe)== |
Wersja z 15:34, 28 maj 2020
<<< Powrót do modułu Gramatyki - definiowanie składni i semantyki wyrażeń
To są ćwiczenia z gramatyk bezkontekstowych.
Oglądaj wskazówki i rozwiązania __SHOWALL__
Ukryj wskazówki i rozwiązania __HIDEALL__
Zadanie 1 (palindromy)
Napisz gramatykę generującą wszystkie palindromy nad alfabetem {0,1}.
Rozwiązanie 1
Zadanie 2
Napisz gramatykę generującą język wszystkich słów nad alfabetem {0,1} postaci .
Rozwiązanie 1
Zadanie 3 (wyrażenia nawiasowe)
Napisz gramatykę generującą wszystkie poprawne wyrażenia nawiasowe.
Rozwiązanie 1
Rozwiązanie 2
Zgodność: oczywista.
Pełność: podobnie jak w Rozwiązaniu 1. Dla uzyskania danego słowa w o długości > 0 należy posłużyć się funkcją . Przyglądając się pierwszej pozycji j>0, dla której , zauważamy, że słowa oraz są poprawnymi wyrażeniami nawiasowymi o mniejszej długości. Zatem można uzyskać wyprowadzenie słowa w .
Zadanie 4
Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że
Rozwiązanie 1
Rozwiązanie 2
Zadanie 5
Podaj gramatykę języka słów w nad alfabetem {0,1} takich, że
Rozwiązanie 1
Zadanie 6 (liczby podzielne przez 3)
Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3.
Rozwiązanie 1
Ćwiczenie 1
Odpowiedź
Zadanie 7
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