13
продукции вида
eA → . Очевидно, что никакая другая продукция не может привести к
уменьшению длины строки при выводе.
Наличие у КС грамматики продукций вида
eA → осложняет процедуру
грамматического разбора и выводов в КС грамматике.
Продукцию вида
eA → будем называть е-ПРОДУКЦИЕЙ, а грамматику, которая не
имеет такой продукции е-СВОБОДНОЙ (НЕУКОРАЧИВАЮЩЕЙ).
ТЕОРЕМА 1.1. О е-свободной грамматике.
Для произвольной КС грамматики PIWVG ,,,= существует эквивалентная ей КС
грамматика
PIWVG ,,,
/
= такая, что
()
(){}
eGLGL \
/
= . То есть язык порождаемый КС
грамматикой
/
G эквивалентен языку порождаемому КС грамматикой G с точностью до пустой
строки.
Очевидно, что КС грамматика
/
G не содержит продукций вида eA → .
ДОКАЗАТЕЛЬСТВО.
А. Пусть в продукциях
КС грамматики G имеются продукции вида eA → , где WA∈
.
B. Приведем эффективную процедуру эквивалентного преобразования КС - грамматики
G в эквивалентную ей КС – грамматику
/
G .
Шаг 1. Представим множество продукций
КС грамматики G как объединение
непересекающихся множеств
/
и
//
, таких что
//
содержит все
е-продукции из множества продукций
.
{}
WAeAPPPPPP ∈→=/== |,0,
////////
IU
.
Шаг 2. Фиксируем некоторую продукцию из множества
//
.
Шаг 3. Добавляем в множество
/
продукции из множества продукций
в которых
опущены е-порождающие нетерминальные знаки
A .
Шаг 4. Удаляем из множества
//
выбранную продукцию eA → и переносим из
множества
/
в множество
//
новые е-продукции, которые появились в
множестве
/
на шаге 3.
Шаг 5. Если все е-продукции из множества
//
просмотрены, то есть 0
//
/=P , то
завершаем эффективную процедуру. Иначе переходим к
шагу 2.
C. Строим грамматику
1
////
,,, PIWVG = следующим образом:
1. Множества
//
,WV содержат те терминальные и нетерминальные знаки, которые
присутствуют в продукциях множества
/
.
2. Аксиома
=
/
/
3. Множество продукций
1
P содержит продукции множества
/
полученного в
пункте
B.
Мы задали все четыре элемента КС грамматики
/
G следовательно мы полностью
определили грамматику
/
G .
D. Приведенная в пункте B эффективная процедура результативна, то есть завершается за
конечное число шагов так как мощность множества продукций
конечно. Может
получиться, что множество
{}
eIP →=
//
и на каждом шаге 3 будет появляться новая
такая же продукция в множестве
//
. Это может служить еще одним условием
завершения эффективной процедуры.
E. Для каждого вывода в КС грамматике G существует вывод в КС грамматике
/
G
результатом которой будет та же строка. Верно и обратное.
eII
GG
≠⎯→⎯∃⎯→⎯
ααα
,,
/
/
.