formal_language_theory / lectures / unit_4
.pdf-Правила в 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 C1C2…Cr 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