formal_language_theory / lectures / unit_2
.pdfДеревья вывода в контекстно-свободных грамматиках
Легко видеть, что если i < j, то узел i и все его потомки должны быть левее узла j и всех его потомков, и потому = 1 2 ... m.
Мы можем теперь, используя правило
AA1 A2 … Am
ивсе частичные выводы, следующие из
индукционного |
предположения, выстроить |
|||||||
вывод: A |
|
A A … A |
|
|
|
|
|
|
|
|
|
|
* |
|
A2 |
|
* |
|
GA |
1 2 |
|
m G |
1 |
… Am G |
||
|
|
1 2 |
|
A |
|
|
|
A |
|
… Am … . |
|||||||
|
* |
|
|
* |
|
|
|
|
|
G |
|
|
G |
|
1 |
2 |
m |
|
A |
|
|
A |
|
|
|
|
Итак, A * . Утверждение I доказано.
GA
101
Деревья вывода в контекстно-свободных грамматиках
|
|
. |
II. Пусть A |
* |
|
G |
||
|
A |
|
Индукцией по длине вывода l покажем,
что существует дерево вывода в грамматике GA, результат которого есть .
База. Пусть l = 1.
Если A , то на этом единственном шаге
GA
вывода используется правило A P. Пусть = A1A2 ... Am, то по определению
дерево, показанное на рис. 2.3, есть дерево вывода в грамматике GA. Очевидно, что его результат есть .
102
Деревья вывода в контекстно-свободных грамматиках
Индукционная гипотеза. Предположим,
что утверждение выполняется для всех l n
(n 1).
Индукционный переход. Пусть A l , где
GA l = n + 1. Этот вывод имеет длину, по крайней
мере, 2. Следовательно, имеется первый шаг и n других шагов (n 1), т. е. вывод имеет вид
A |
|
|
G |
||
|
||
|
A |
A1A2 ... Am
l1 GA
1 A2 ... Am
l 2 GA
… l m 1 2 … m = .
GA
Здесь l1 + l2 +…+ lm = n, причём li n (1 i m).
103
Деревья вывода в контекстно-свободных грамматиках
Если li = 0, то i = Ai.
Если li > 0, то по индукционному предположению существует дерево вывода Ti с корнем, имеющем метку Ai и результатомi. Но первый шаг вывода предполагает существование правила
A A1A2 ... Am P.
Следовательно, можно построить дерево вывода, верхняя часть которого будет иметь вид, как на рис. 2.3.
104
A
A1 |
… Ai |
… Am |
i
Рис. 2.4.
Далее, те вершины, которые помечены символами Ai и для
которых существуют |
выводы |
|
l i |
i при li > 0, заменим |
|
вида Ai |
||
G |
|
|
A |
|
|
деревьями |
вывода |
Ti с |
корнями, помеченными Ai, и результатами i. То, что получится (см. рис. 2.4),
является |
деревом |
вывода |
||
|
|
в грамматике GA. |
|
|
A |
* |
|
||
G |
|
|||
|
A |
|
|
|
Утверждение II доказано. Из I и II при A = S следует утверждение теоремы.
Next |
105 |
Замечание. Вообще говоря, грамматика — это (конечное) устройство, порождающее цепочки языка, по точно определённому правилу (и тем самым задающее множество всех синтаксически корректных строк). Многие типы грамматик являются частнами случаями переписывающих систем.
Переписывающая система — это пара Γ = (V, P), в которой V — алфавит, а P — конечное подмножество в V * V *;
106
элементы (u, v) P записываются в виде u v и называются переписывающими правилами / продукциями (или просто правилами или продукциями).
Для x, y V * мы пишем x y, если x = x1ux2, y = x1vx2 для некоторых u Γv P и x1, x2 V *.
Если понятно, |
о какой |
переписывающей |
||
системе Γ идёт |
речь, то будем писать |
|||
вместо . |
Рефлексивное и |
транзитивное |
||
Γ |
отношения |
|
обозначаются |
|
замыкания |
соответственно через * и + .
107
Если к переписывающей системе такой, что во всех правилах u v строка u не пуста, добавить аксиому, то получится понятие
чистой грамматики.
Для чистой грамматики G = (V, w, P) с аксиомой w V * определим язык, порождённый G, как
L(G) = {x V * | w * x}.
Таким образом, грамматика Хомского это переписывающая система, в которой
V = VN VT, причём VN VT = , а w = S.
108
В качестве примера переписывающих систем можно назвать систему Линден-
майера (Aristid Lindenmayer), разработанную для моделирования биологических процес-
сов (см. W. Brauer, G. Rozenberg, A. Salomaa
(Editors). DNA Computing New Computing Paradigms. Springer, 1998. 402 p.).
109