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

О приведённых cfg

 

 

 

 

 

 

Мы можем

эффективно

построить

множество VN2 всех нетерминалов A,

таких,

что будет

существовать вывод

S 1A 2,

 

 

 

 

*

 

 

следующим образом.

G1

 

 

 

 

 

 

Для начала поместим S в искомое

множество.

Затем

последовательно

 

будем

добавлять к этому множеству любой нетерминал, который появляется в правой части любого правила из P1, определяющего нетерминал, уже имеющийся в этом множестве. Процесс завершается, когда никакие новые элементы не могут быть добавлены к упомянутому множеству.

21

О приведённых cfg

2

, VT, P2, S), где P2

Положим G2 = (VN

множество правил, оставшихся после

исключения

всех правил из

P1, которые

используют

символы из VN \

2

слева или

VN

справа. G2 — требуемая грамматика.

Покажем, что L(G1) = L(G2) и G2 удовлетворяет условию теоремы.

22

Оприведённых cfg

I.L(G1) L(G2).

Пусть x L(G1), т. е. S * x. G1

Очевидно, что все нетерминалы, встречающиеся в сентенциальных формах этого

вывода достижимы, т. е. принадлежат алфавиту VN2 , и соответственно в нём участвуют только правила из P2.

Следовательно, S * x и x L(G2).

G2

23

Оприведённых cfg

II.L(G2) L(G1).

Это очевидно, так как P2 P1.

Из I и II следует, что L(G1) = L(G2).

Если A V

2

(т. е.

A достижим),

то

N

существует

 

вида S

1A 2,

и

вывод

 

 

 

 

 

 

 

 

 

*

 

 

 

 

 

 

 

 

 

 

G

 

 

 

 

 

 

 

 

 

 

2

 

поскольку все нетерминалы продуктивны,

то S

 

1A 2

x1Ax3

x1x2x3,

 

 

*

 

 

 

 

 

 

 

 

*

*

 

 

 

G

2

 

G

2

G

2

 

 

 

 

 

 

 

 

 

 

, x , x V

 

 

 

где x

 

*.

 

 

 

 

 

1

 

2 3

T

 

 

 

 

КС-грамматика G, о которой идёт речь в теореме, есть G2.

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

24

О приведённых cfg

Определение 4.2. Контекстно-свободные грамматики, удовлетворяющие условию теоремы 4.3, принято называть

приведёнными.

25

Левосторонний вывод в КС-грамматике

Определение 4.3. Вывод в КС-грамматике назовем левосторонним, если на каждом его шаге производится замена крайнего левого вхождения нетерминала.

Формально: пусть G = (VN, VT, P, S) — КС-

грамматика. Вывод в грамматике G вида

S 1 2 ... n

— левосторонний, если для i = 1, 2,..., n – 1

имеет место i = xi Ai i , i + 1 = xi i i , где

 

 

V

*

 

 

*.

Ai i

P, xi

T , Ai

 

VN ,

i , i V

26

Левосторонний вывод в КС-грамматике

Для обозначения одного шага левосто-

роннего вывода будем

. , а нескольких шагов lm

использовать значок

значок * .

lm

Лемма 4.1 о левостороннем выводе.

Пусть G = (VN, VT, P, S) — контекстносвободная грамматика.

 

 

 

Если S

*

x,

G

левосторонний

где x V

 

 

,

T

 

вывод

 

S

грамматике.

то существует и

* x в той же

lm

27

Левосторонний вывод в КС-грамматике

Доказательство. Индукцией по длине вывода l докажем более общее утверждение: если для любого нетерминала A VN

*

 

существует вывод A x, то существует и

G

*

левосторонний вывод A x.

Утверждение леммы

lm будет

следовать как

частный случай при S = A. База. Пусть l = 1.

Для одношагового вывода утверждение выполняется тривиальным образом.

28

Левосторонний вывод в КС-грамматике

Индукционная гипотеза. Предположим,

что утверждение справедливо для любых выводов длиной l n (n 1).

Индукционный переход. Докажем, что оно справедливо и для l = n + 1.

n

 

Пусть A x — вывод длиной n + 1, и

G

 

пусть = B1B2 ... Bm , а x = x1x2 xm ,

 

, 1 i m.

где Bi V *, xi V T

29

Левосторонний вывод в КС-грамматике

т. е. вывод имеет вид

 

n

A B1B2 ... Bm x1x2 ... xm,

li

G

li n, 1 i m.

причём Bi xi ,

G

 

Заметим, что

некоторые Bi могут быть

терминалами, и в этом случае Bi = xi и вывод не занимает никаких шагов: Bi * xi.

lm

Если же Bi VN, то согласно индукцион-

ному предположению Bi * xi.

lm

30

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