Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
57
Добавлен:
16.04.2015
Размер:
912.3 Кб
Скачать

Исключение нетерминалов из 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

Соседние файлы в папке lectures