Задачи по разделам курса
2.3.19. Построить КС-грамматики для следующих языков:
![а)\ \{ 0^{n}1^{n} : n \ge 1
\\
б)\ \{ ww^{R} : w \in \{ a, b\} ^{*}\}
\\
в)\ Вcе\ цепочки\ из\ нулей\ и\ единиц\ с\ одинаковым\ числом\ те\ х\ и
\\
других
\\
г)\ \{ \{ a, b\} ^{*} \setminus \{ a^{m}b^{n}a^{m}b^{n}\} : m, n \ge 1\} ;
\\
д)\ \{ \{ a, b\} ^{*} \setminus \{ a^{2m}b^{3n}a^{2m}b^{n}\} : m, n \ge 1\} ;
\\
е)\ \{ \{ a, b\} ^{*} \setminus \{ a^{m}b^{n}a^{m}\} : m, n \ge 1\} ;
\\
ж)\ \{ \{ a, b\} ^{*} \setminus \{ ww\} : w \in \{ a, b^{*}\} ;
\\
з)\ \{ \{ a, b\} ^{*} \setminus \{ a^{n}b^{n}a^{n}\} : n \ge 1\} ;](/sites/default/files/tex_cache/42cbeba0407357d52ef7c40785c1ebcb.png)
2.3.20. Определить КС-грамматики, которые порождали бы следующие языки:
1) все строки - элементы множества {0, 1}* такие, что в каждой из них непосредственно справа от каждого символа 0 стоит символ 1.
2) все строки - элементы множества {0, 1}* такие, что результаты чтения этих строк слева направо и справа налево совпадают;
3) все строки - элементы множества {0, 1}*, которые содержат символов 0 вдвое больше, чем символов 1 ;
4) все строки - элементы множества {0, 1}*, которые имеют одинаковое число символов 0 и 1 ;
5) все строки - элементы множества {0, 1}*, которые имеют четное число символов 0 и нечетное число символов 1 ;
6) все строки - элементы множества {0, 1}*, в которых скобки расставлены правильно.
2.3.21. Построить КС-грамматики, порождающие языки:
![а)\ \{ a^{m}b^{n}c^{p}|m + n + p \equiv 0(mod 2);\ m, n, p \ge 0\} ;
\\
б)\ \{ a^{p}b^{q}c^{r}|p + q > r; p, q, r \ge 0\} ;
\\
в)\ \{ x|x \in \{ a, b\} *, |x|_{a} = |x|_{b}\} ;
\\
г)\ \{ x|x \in \{ a, b\} *, |x|_{a} > |x|_{b}\} ;
\\
д)\ построить\ однозначную\ КС-грамматику\ (однозначность
\\
должна\ быть\ доказана)\ для\ языка\ \{ x|x \in \{ a, b\} *, |x|_{a} = |x|_{b},
\\
и\ для\ \forall u, v : x = uv;\ |u| \ne 0,\ |v| \ne 0\ выполнено\ |u|_{a} > |u|_{b}\} .](/sites/default/files/tex_cache/1c69867f8f3c6bc230b04a404c2852f5.png)
2.3.22. Построить КС-грамматику, порождающую язык
![а) \{ a^{n}cb^{n}\} \cup \{ b^{n}ac^{n}\} ;\ n \ge 0
\\
б) \{ x|x \in \{ a, b\} * \setminus \varepsilon ;\ x \ne yy^{R}\}](/sites/default/files/tex_cache/89a1979266786871be2ac6be9b71923b.png)
2.3.23. Построить НС-грамматики для следующих языков:
а) (Винегрет)
б) (Винегрет 2)
в) {anpnrn} : n >=; 1} (Три мушкетeра)
г) {ambnambn : m, n >= 1} (Две калоши)
д) {a2mbnamb5n : m, n >= 1} (Калоши 2)
е) {ambnck : m >= n >= k >= 1} (Горка)
ж) {ambnck : 2m >= 3n >= k >= 1} (Горка 2)
з) (Бог любит троицу)
и)
к) (Квадратные числа)
л)
м) (Дама с собачкой)
н)
о) {an : n = 1, 2, 3, 5, 8, 13, ...} (Числа Фиббоначи)
п) {an : n = 1, 3, 6, 10, 15, ...} (Треугольные числа, an = n(n + 1)/2 )
р) {an : n = 1, 5, 12, 22, ...} (Пятиугольные числа, an = n + 3n(n - 1)/2. Пятиугольное число может быть разбито на три треугольных + n точек)
с) (Два лебедя)
т) (Кубические числа)
у)
ф) {an : n = 1, 2, 6, 24, ... , k!} (Факториал)
х) {012...0n-11n0n-1...120|n >= 1} (Пирамида Хеопса)
ч) {012...0n-11n1n0n-1...120|n >= 1} (Пирамиды майя)
ш)
щ) (Для студентов с исследовательской жилкой).
2.3.24. Построить КС-грамматики, порождающие языки
![а) \{ xcy|x \ne y;\ x, y \in \{ a, b\} ^{*}\} ;
\\
б) \{ a^{i}b^{j}c^{k}|i, j, k \ge 1\} \setminus \{ a^{n}b^{n}c^{n}|n \ge 1\} ;
\\
в) \{ a, b, c\} ^{*} \setminus \{ a^{n}b^{n}c^{n}|n \ge 0\} .](/sites/default/files/tex_cache/1917230af4c713d29c2b9be4c1278364.png)
2.3.25. Пусть G - грамматика с правилами:
![S \to CD \ \ C \to aCA|bCB|\varepsilon \ \ AD \to aD
\\
BD \to bD \ \ Aa \to aA \ \ Ab \to bA
\\
Ba \to aB \ \ Bb \to bB \ \ D \to \varepsilon](/sites/default/files/tex_cache/95d3ab91e4a683cebb02772c146bcb3d.png)
Показать, что .
2.3.26. Построить грамматику, порождающую данный язык:
{ancbnancbn|n > 0}:
2.3.27. Построить регулярную грамматику, порождающую цепочки в алфавите (a, b), в котором символ a не встречается два раза подряд.
2.3.28. Построить грамматику, порождающую
сбалансированные относительно круглых скобок цепочки
в алфавите . Сбалансированную цепочку
определим реккурентно: цепочка
сбалансирована, если:
а) не содержит скобок,
б) или
, где
и
сбалансированы.
2.3.29 Показать, что наличие в КС-грамматике правил вида
а) б)
, где
,
,
(VN
VT)*; A
VN, делает еe неоднозначной.
Можно ли преобразовать эти правила таким образом, чтобы
полученная эквивалентная грамматика была однозначной?
2.3.30. Показать, что грамматика G неоднозначна.
G : S -> abC|aB B -> bc; bC -> bc
2.3.31. Дана КС-грамматика G = (VT, VN, P, S). Предложить алгоритм построения множества
![X = \{ A \in V_{N}|A \varepsilon \} .](/sites/default/files/tex_cache/b75be30ec0771348119c1cd4dec30892.png)
2.3.32. Для произвольной КС-грамматики G предложить алгоритм, определяющий, пуст ли язык L(G).
2.3.33. Одинаковые ли языки порождают грамматики из а), б), в)?
![а) S \to aAb \ \ A \to BB \ \ B \to ab|A|\varepsilon ;
\\
б) S \to aAb \ \ A \to AaAb|\varepsilon ;
\\
в) S \to aB \ \ B \to aBB|b.](/sites/default/files/tex_cache/c90974d8603f869eda12fab55f480e52.png)
2.3.34. Эквивалентны ли грамматики с правилами
![S \to AB;\ B \to Bb|A;\ A \to Aa|B;\ C \to c.
\\
и
\\
S \to \varepsilon .](/sites/default/files/tex_cache/0eff78e884c1220434d7ab123519cf86.png)
2.3.35. Эквивалентны ли грамматики с правилами
A -> AB; B -> bC; A -> aAc|Sa; C -> c|Ca. и S -> As|Bc; B -> Ac|cS; A -> Bd; C -> c.