 
        
        formal_language_theory / lectures / unit_4
.pdf 
Левосторонний вывод в КС-грамматике
Таким образом, мы можем выстроить левосторонний вывод
| 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
