formal_language_theory / lectures / unit_2
.pdfЭквивалентность НС и неукорачивающих грамматик
Замечание 2.2. Отметим, что новые правила с нетерминалами A могут применяться только в одной указанной последовательности и никакого другого эффекта, кроме того, какое производит заменяемое правило, воспроизвести не могут.
Соблазн “оптимизировать” построение НСграмматики, не используя дополнительные нетерминалы A, а заменяя по-одному нетерминалы левой части X сразу на нетерминалы правой части Y, за исключением последнего правила, заменяющего последний X на все оставшиеся Y, мог бы привести к не эквивалентной грамматике.
31
Эквивалентность НС и неукорачивающих грамматик
Пример 2.3. Покажем на примере, как построить НС-грамматику, эквиваленную неукорачивающей грамматике примера 2.2:
G = (VN, VT, P, S), где VN = {S, B, C}, VT = {a, b, c},
P = { (1) S aSBC, (2) S aBC, (3) CB BC,
(4) aB ab, (5) bB bb, (6) bC bc, (7) cC cc}.
Все правила, кроме (3), не нуждаются ни в каких преобразованиях, т. к. уже соответствуют требованиям НС-грамматики.
32
Эквивалентность НС и неукорачивающих грамматик
Правило (3) заменим группой правил: (3.1) CB A1B, (3.2) A1B A1A2, (3.3) A1A2 BA2, (3.4) BA2 BC,
которые все также соответствуют требованиям НС-грамматики. Эти правила не для чего, кроме как для вывода:
CB A1B A1A2 BA2 BC
служить не могут. В них A1 и A2 новые нетерминалы.
Заметим, что последняя замена, указанная на общей схеме, не потребовалась, ибо здесь q = 0.
33
Грамматики типа 2 — cfg
Определение 2.8. Грамматика
G = (VN, VT, P, S)
является грамматикой типа 2 или контекстно-свободной грамматикой,
если каждое её правило имеет вид
A P,
где A VN, V .
34
Грамматики типа 2 — cfg
Вместо термина “контекстно-свободная грамматика” часто используют аббревиату-
ру cfg (context-free grammar) или сокращение КС-грамматика.
Замечание 2.3. Правило вида A позволяет заменить A на независимо от контекста, в котором появляется A.
35
Грамматики типа 2 — cfg
Грамматика, приведенная в примере 2.1, является не только грамматикой типа 0, грамматикой типа 1, но и контекстносвободной (по Хомскому типа 2).
36
Пример 2.3. Рассмотрим интересную контекстно-свободную грамматику
G = (VN, VT, P, S), где
VN = {S, A, B}, VT={a, b},
P ={S aB, S bA,
A a, A aS, A bAA, B b, B bS, B aBB}.
37
Пример 2.3 cfg
Индукцией по длине цепочки покажем, что
L(G) = {x {a, b}+ #a x = #b x},
где #a x обозначает число букв а в цепочке x, а #b x — число букв b.
Другими словами, язык, порождаемый этой грамматикой, состоит из непустых цепочек, в которых число букв а и b одинаково.
38
Пример 2.3 cfg
Заметим, что в порождении языка уча-
ствуют все правила P и только они.
Сучётом этого достаточно доказать для
xVT+ ,что
1)S * x тогда и только тогда, когда #a x = #b x;
2)A * x тогда и только тогда, когда #a x = #b x + 1;
3)B * x тогда и только тогда, когда #b x = #a x + 1.
39
Пример 2.3 cfg
I. Необходимость. Индукция по длине вывода l.
База (l = 1). Очевидно, что все три утверждения выполняются для всех выводов в один шаг, поскольку A a, B b, и никакая терминальная цепочка в один шаг не выводима из S.
40