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

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

Таким образом, мы можем выстроить левосторонний вывод

A B1

 

 

l1

 

 

 

l

2

B2 ... Bm x1B2 ... Bm

l m 1

 

 

 

lm

 

 

 

lm

 

 

 

 

 

 

 

 

 

 

 

l m

 

 

 

 

 

… x x

 

... B

 

... x

 

= x

 

x x

 

lm

1

2

 

m lm

1 2

 

m

 

 

(l +l +…+l = n)*), воспользовавшись частич-

1 2

m

 

 

 

 

 

 

 

 

ными левосторонними выводами для тех Bi, которые являются нетерминалами, применяя их в последовательности слева направо.

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

*) Может быть некоторые li равны 0.

31

Цепные правила в КС-грамматиках

Теорема 4.4 о цепных правилах.

Любой контекстно-свободный язык может быть порождён контекстно-свободной грамматикой, не содержащей цепных правил, т. е. правил вида A B, где A и B — нетерминалы.

Доказательство. Пусть G = (VN, VT, P, S) — cfg и L = L(G).

Мы построим новое множество правил P1, прежде всего включив в него все нецепные правила из P.

Ret 39

32

Цепные правила в КС-грамматиках

Затем мы добавим в P1 правила вида A при условии, что существуют выводы вида

 

 

B, где A и B — нетерминалы, а B

A

*

G

нецепное правило из P.

Заметим, что мы легко можем проверить, существует ли

вывод вида A

 

 

 

*

 

B, поскольку, если

G

 

A B1

B2 ... Bm B

 

и некоторый нетерминал появляется дважды в этом выводе, то мы можем найти более короткую последовательность

 

 

 

цепных правил, которая даёт результат A

*

B.

G

 

 

Таким образом, достаточно рассматривать только те цепные выводы, длина которых меньше, чем число

нетерминалов в VN.

33

Цепные правила в КС-грамматиках

Мы теперь имеем модифицированную

грамматику G1 = (VN, VT, P1, S).

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

Пусть x L(G

*

 

), т. е. S x.

1

G

1

Правила, применяемые в этом выводе, все не цепные:

либо изначально взятые из P,

либо новые вида A , Bi , i = 1 , 2 , . . . , m , появившиеся благодаря выводу

 

 

 

 

 

.

A G B1

G

B2 G

... G

Bm G

 

Следовательно,

терминальная цепочка

 

 

 

 

 

 

 

водимая в G1, выводима и в G: S

*

 

x.

G

 

x, вы-

34

Цепные правила в КС-грамматиках

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

Пусть x L(G). Рассмотрим левосторонний

вывод S = 0

1 ... n= x.

 

 

G

G

G

 

 

 

 

Если i

i + 1

для 0 i < n посредством

G

 

 

 

 

нецепного правила, то i i+ 1.

 

 

 

 

G

 

 

 

 

1

 

Предположим,

что

i i+ 1

посредством

 

 

 

G

 

цепного правила, но что i– 1 i с помощью

 

 

 

G

 

нецепного правила при условии, конечно, что i 0.

35

Цепные правила в КС-грамматиках

Предположим также, что

i+ 1

i+ 2

... i + m 1

 

G

G

G

i+ m при

все посредством цепных правил, а

помощи нецепного правила.

 

Тогда все i+ 1, i + 2,

..., i+ m 1 одинаковой

длины, и поскольку вывод — левосторонний, то нетерминал, заменяемый в каждой из них, должен быть в одной и той же позиции.

36

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

Цепные правила в КС-грамматиках

S =

 

B

B

 

 

 

 

0

G

 

i 1

G

1

G

 

2

 

G

... G

Bm G

 

 

 

i

 

i + 1

 

 

G

i + m

 

 

 

 

 

 

 

 

 

 

 

i + m

1

 

и одни и те же на цепном участке!

 

 

 

B1 B2 , B2

 

 

 

B3 , …, Bm 1 Bm, Bm= B; B P

не цепное правило.

 

 

 

 

 

 

 

Следовательно, B1

P1 и

 

 

 

 

 

S =

 

 

 

 

 

 

 

 

0

G 1

 

G 1

i

G 1

i + m G 1

 

 

Но тогда i i + m посредством одного из правил

из P1 \ P.

 

G

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подобные рассуждения

на всех

участках лево-

стороннего вывода с цепными правилами, приводят в заключению, что x L(G1).

Из утверждений I и II следует L(G1) = L(G).

37

§ 4.2. Нормальная форма Хомского

Докажем первую из двух теорем о нормальных формах КС-грамматик. Каждая из них утверждает, что все КС-грамматики эквивалентны грамматикам с ограничениями на вид правил в этих нормальных формах.

Теорема 4.5 — НФХ.

Любой КС-язык может быть порождён грамматикой, в которой все правила имеют вид A BC или A a (A, B, C —

нетерминалы, a — терминал).

38

Нормальная форма Хомского

Доказательство. Пусть G — КС-грамматика и L = L(G). В соответствии с теоремой 4.4 мы можем найти эквивалентную cfg

1

 

G1 = ( VN , VT, P1, S),

 

такую, что множество её правил P1

не

содержит ни одного цепного правила.

 

Построим промежуточную грамматику

 

2

 

G2 = (VN , VT, P2, S)

 

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

39

Нормальная форма Хомского

Рассмотрим правило из P1

вида

A B1B2 ... Bm,

1

 

где Bi VN VT, i = 1, 2,..., m, m 2.

Если в нём есть вхождения терминалов, то заменим их на новые нетерминальные символы, для которых введём новые правила с правой частью, представленной этими терминалами.

Пусть пополненное множество нетерми-

налов —

V

2

, а пополненное множество

N

 

правил — P2.

40

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