Wstęp do programowania / Ćwiczenia 5: Różnice pomiędzy wersjami
Linia 142: | Linia 142: | ||
Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3. | Podaj gramatykę generującą liczby w zapisie binarnym, które są podzielne przez 3. | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | {{rozwiazanie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> <div class="mw-collapsible-content" style="display:none"> | ||
<div class="mw-collapsible-content" style="display:none"> | |||
S<sub>0</sub> → 0 | S<sub>0</sub>0 | S<sub>1</sub>1 | S<sub>0</sub> → 0 | S<sub>0</sub>0 | S<sub>1</sub>1 | ||
Linia 157: | Linia 155: | ||
''Pełność'': Przez indukcję po długości liczby pokażemy, że każdą liczbę o reszcie z dzielenia przez 3 wynoszącej i da się wygenerować z symbolu S<sub>i</sub>. Istotnie, dla liczb jednocyfrowych jest to oczywiste. Dla pozostałych, postaci wb, wystarczy popatrzeć na ostatnią cyfrę b. Reszta z dzielenia wb przez 3 oraz wartość b determinują resztę z dzielenia w przez 3. Dla wszystkich sześciu przypadków w naszej gramatyce istnieje odpowiednia produkcja. Następnie wystarczy użyć założenia indukcyjnego, aby wygenerować w. | ''Pełność'': Przez indukcję po długości liczby pokażemy, że każdą liczbę o reszcie z dzielenia przez 3 wynoszącej i da się wygenerować z symbolu S<sub>i</sub>. Istotnie, dla liczb jednocyfrowych jest to oczywiste. Dla pozostałych, postaci wb, wystarczy popatrzeć na ostatnią cyfrę b. Reszta z dzielenia wb przez 3 oraz wartość b determinują resztę z dzielenia w przez 3. Dla wszystkich sześciu przypadków w naszej gramatyce istnieje odpowiednia produkcja. Następnie wystarczy użyć założenia indukcyjnego, aby wygenerować w. | ||
</div> | </div> | ||
</div> | </div>}} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | {{cwiczenie| 1||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> <div class="mw-collapsible-content" style="display:none"> | ||
<div class="mw-collapsible-content" style="display:none"> | |||
Jak należy zmodyfikować tę gramatykę, aby generowane liczby binarne nie mogły zaczynać się od 0 ? | Jak należy zmodyfikować tę gramatykę, aby generowane liczby binarne nie mogły zaczynać się od 0 ? | ||
</div> | </div> | ||
</div> | </div>}} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
{{odpowiedz||<div class="mw-collapsible mw-made=collapsible mw-collapsed"> <div class="mw-collapsible-content" style="display:none"> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
S<sub>0</sub> → S<sub>0</sub>0 | S<sub>1</sub>1 | S<sub>0</sub> → S<sub>0</sub>0 | S<sub>1</sub>1 | ||
Linia 178: | Linia 173: | ||
symbol startowy: S | symbol startowy: S | ||
</div> | </div> | ||
</div> | </div>}} | ||
==Zadanie 7== | ==Zadanie 7== |
Wersja z 11:59, 1 sie 2006
<<< Powrót do głównej strony wykładu
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
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