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

Деревья вывода в контекстно-свободных грамматиках

Легко видеть, что если 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

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