formal_language_theory / lectures / unit_4
.pdfИсключение нетерминалов из cfg, из которых выводится только конечное число терминальных цепочек
Таким образом, имеем |
|
|
|
|||||||||
|
|
|
|
|
|
Ai |
u1u2 ... ur, |
|
||||
|
|
|
|
|
|
|
G |
|
|
|
|
|
причём |
здесь все |
2 |
up = wp, кроме тех up, |
|||||||||
|
||||||||||||
которые равны Cp {A1, A2,..., Ak}. Но для них |
||||||||||||
C |
lp |
|
|
|
l |
|
n, |
по индукционному |
||||
w , где |
|
|
||||||||||
p |
G |
1 |
p |
|
|
p |
|
* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
||
предположению Cp G wp. |
|
|
|
|||||||||
Поэтому Ai u1u2 |
2 |
* |
|
|||||||||
... ur |
|
|||||||||||
w1w2 ... wr. |
||||||||||||
|
|
|
G |
2 |
|
|
|
|
G |
2 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||||
Итак, |
* |
|
|
|
|
|
|
|
* |
w. |
||
из Ai G |
|
|
w следует вывод Ai G |
|||||||||
|
|
|
|
1 |
|
|
|
|
|
|
|
2 |
Поскольку S {A1, A2,..., Ak}, то |
|
L(G1) L(G2).
111
Исключение нетерминалов из cfg, из которых выводится только конечное число терминальных цепочек
II. L(G2) L(G1).
|
|
|
|
* |
|
|
Пусть . Покажем, что . |
||||||
G |
2 |
|
G |
1 |
||
Шаг вывода |
, на котором используется |
|||||
G |
|
|||||
|
|
|
|
|
||
|
|
2 |
u1u2...ur P2, производное |
|||
правило вида Ai |
от Ai C1C2 ... Cr P1, предполагает, что
(1) Ci = ui, если ui VT;
(2) Ci — нетерминал типа A, и Ci = ui;
(3) Ci — нетерминал типа B и Ci * ui
(i = 1, 2, ..., r).
G1
112
Исключение нетерминалов из cfg, из которых выводится только конечное число терминальных цепочек
Следовательно,
Ai |
|
C1C2 |
* |
|
... ur. |
|
G |
|
... Cr u1u2 |
||||
|
|
1 |
|
G |
1 |
|
|
|
|
|
|
Таким образом, применение одного правила
Ai u1u2...ur P2
в выводе равносильно применению G2 нескольких правил из множества P1,
позволяющих в цепочке заменить Ai на u1u2...ur , что дает .
113
Исключение нетерминалов из cfg, из которых выводится только конечное число терминальных цепочек
Итак, каждый шаг вывода терминальной цепочки в грамматике G2 может быть заменён несколькими шагами вывода в грамматике G1, т. е. L(G2) L(G1).
Из рассуждений I и II следует, что
L(G1) = L(G2).
114
Исключение нетерминалов из cfg, из которых выводится только конечное число терминальных цепочек
Пример 4.3. Рассмотрим грамматику
G1 = ({S, A, B}, {a, b, c, d }, P1, S), где
P1 = { S ASB , S AB , A a, A b,
B c, B d }.
Легко видеть, что A порождает только цепочки a и b, а B порождает только цепочки c и d. Однако, S порождает бесконечно много цепочек.
115
Пример 4.3. Исключение нетерминалов из cfg, из которых выводится только конечное число терминальных цепочек
Правило S ASB заменяется правилами
S aSc, S aSd, S bSc, S bSd.
Аналогично, правило S AB заменяется правилами
S ac, S ad, S bc, S bd.
Новая грамматика есть
G2 = ({S}, {a, b, c, d}, P2, S), где
P2={S aSc, S aSd, S bSc, S bSd, S ac, S ad, S bc, S bd}.
116
§ 4.5. Свойство самовставленности
Определение 4.5. Говорят, что КСграмматика G является самовставленной 1), если существует нетерминал A, такой, что
|
|
1A 2, где 1, 2 V |
|
A |
|
||
G |
|||
|
|
Говорят также, что нетерминал
самовставленным.
.
A является
1) self-embedding grammar.
117
Свойство самовставленности
Заметим, что именно свойство самовставленности является причиной появления цепочек вида uviwxiy. Это свойство самовставленности отличает строго контек- стно-свободные языки от регулярных множеств. Но отметим и то, что просто изза свойства самовставленности данной грамматики порождаемый ею язык не обязан быть нерегулярным.
118
Свойство самовставленности
Например, грамматика
G = ({S}, {a, b}, P, S), где
P = {S aSa, S aS, S a, S bS, S b},
несмотря на то, что она самовставленная, порождает регулярное множество.
Действительно, L(G) = {a, b}+, т. к. первое правило эквивалентно второму + третьему, и первое может быть удалено без изменения языка.
119
Свойство самовставленности
В этом параграфе будет показано, что КСграмматика, которая не является самовставленной, порождает регулярное множество.
Следовательно, КС-язык не регулярен тогда и только тогда, когда все его грамматики — самовставленные.
120