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

-Правила в cfg

Доказательство. При помощи тривиального расширения леммы 2.1 мы можем предположить, что S не появляется справа ни в одном правиле в P.

Для любого нетерминала A VN мы можем

решить, существует ли вывод A * , G поскольку, если такой вывод существует, то

существует и дерево вывода, ветви которого не длиннее, чем число нетерминалов грамматики G (этот аргумент использовался в теореме 4.1).

141

-Правила в cfg

Пусть A1, A2, ..., Ak — те нетерминалы из словаря VN, из которых цепочка может быть выведена, а B1, B2,..., Bm — те нетерминалы, из которых цепочка не выводима.

Мы построим новое множество правил P1 следующим образом:

(1) Если S * , то в P1 включим правило S . G

(2) Никакие правила грамматики G вида A в P1 не включаются.

142

-Правила в cfg

(3) Если A C1C2Cr P, r 1,

то в P1 включаются правила вида

A 1 2... r,

где i =

Ci, если Ci VT {B1, B2,..., Bm},

Ci или , при Ci {A1, A2, ..., Ak},

 

однако не все i = (1 ≤ i r).

143

-Правила в cfg

Другими словами, преобразования на шаге 3 состоят в том, что в правой части A-правила исходной грамматики G каждое вхождение Ci {A1, A2, ..., Ak}, альтернативно либо подменяется на , либо остается, как есть.

Вхождения других символов (терминальных и нетерминальных из множества {B1, B2,..., Bm}) не затрагиваются.

При этом не допускается, чтобы правая часть полученного правила обратилась в .

144

-Правила в cfg

Ясно, что новая грамматика

G1= (VN, VT, P1, S)

отличается от грамматики G только набором правил, причём все они имеют требуемый вид.

I. Докажем, что L(G1) L(G).

Пусть и при этом применяется

 

G

правило

1

 

A 1 2 ... r P1 \ P.

145

-Правила в cfg

Его применение эквивалентно применению правила A C1C2 ... Cr P, из которого оно было получено, и нескольких правил из множества правил P для выводов

Ci * , если i= . G

Шаги, на которых применяются правила, общие для G и G1, могут считаться выполняемыми в G.

Утверждение I доказано.

146

-Правила в cfg

II. Докажем теперь, что L(G) L(G1).

Индукцией

по числу

шагов l в выводе

 

l

 

 

*

докажем, что если A w и w , то A w

для A VN.

G

 

 

G1

 

 

 

 

База. Пусть l = 1.

 

 

 

Очевидно,

что вывод

A

 

w есть также

G

вывод A w, ибо по построению правило

G

1

A w находится также и P1.

147

-Правила в cfg

Индукционная гипотеза. Предположим, что утверждение выполняется для всех выводов длиной l n (n 1).

n 1

Индукционный переход. Пусть A w.

G

Более детально этот вывод имеет следующий вид:

 

 

 

 

 

n

A

C1C2

... Cr

 

G

 

G

 

 

 

 

 

 

li

 

 

 

 

 

причём Ci wi, li n.

 

 

Если wi

G

 

,

то

 

по

 

 

 

 

 

 

*

 

 

предположению Ci

G

wi.

 

 

 

 

1

 

 

w1w2...wr,

индукционному

148

-Правила в cfg

Кроме того, по построению из правила

A C1C2...Cr P

получается правило

A 1 2 r P1,

где i = Ci, если wi , илиi = , если wi = .

Следовательно, A * w. G1

Из рассуждений I и II следует, что

L(G1) = L(G).

Что и требовалось доказать.

149

-Правила в cfg

Из теоремы 4.11 непосредственно следует тот факт, что единственная разница между КС-грамматикой с правилами вида A и КС-грамматиками без -правил состоит в том, что первая может порождать пустое предложение.

Далее обозначение cfg мы будем использовать также и для КС-грамматик с-правилами, зная, что эквивалентная грамматика без -правил (за исключением быть может S ) может быть найдена.

150

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