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

Теория формальных языков и трансляций

Глава 4.

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

1

§ 4.1. Упрощение контекстно-свободных грамматик

Вэтой главе мы

опишем некоторые основные упрощения КС-грамматик;

докажем несколько важных теорем о нормальных формах Хомского (N. Chomsky)

и Грейбах (S. Greibach);

покажем, что существуют алгоритмы для определения, является ли язык, порождаемый КС-грамматикой, пустым, конечным или бесконечным.

2

Avram Noam Chomsky

born December 7, 1928

3

Упрощение контекстно-свободных грамматик

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

наконец, рассмотрим специальные типы КС-грамматик и языков, такие, как

последовательные и линейные грамматики.

4

Упрощение контекстно-свободных грамматик

Формальное определение КС-грамматики допускает структуры, которые в некотором смысле являются “расточительными”.

Например, словарь может включать нетерминалы, которые не используются в выводе хотя бы одной терминальной цепочки; или не запрещено иметь такое правило, как A A, и т. д.

Несколько последующих теорем дают ключ для исключения таких “излишеств”.

Будем предполагать, что КС-грамматики, рассматриваемые в этой главе, не содержат-правил.

5

Ret 141

Теорема 4.1. Существует алгоритм для определения, является ли язык, порождаемый данной КС-грамматикой, пустым.

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

Предположим, что L , т. е. существует вывод S * x, где x VT+.

Рассмотрим дерево, представляющее этот вывод. Пусть в нём есть путь с узлами n1 и n2, имеющими одну и ту же метку A VN, причём узел n1 расположен ближе к корню S,

чем узел n2 (рис. 4.1, a).

6

(a)

n1

A

a

n2 A

a

x1 = aaba

S

(б)

 

S

 

 

 

a

n2

A

a

 

B

 

 

a

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

 

 

 

 

 

B

G = ({S, A, B}, {a, b},

 

 

 

 

 

 

{S Aa, A aB, B Aa, B b}, S)

 

 

 

 

 

x = x3x1x4

 

 

 

 

 

 

 

 

 

 

 

 

b

x3 = ; x4 = a

 

 

 

 

 

Рис. 4.1.

x2 = ab.

 

Ret 9

7

 

Алгоритмическая разрешимость проблемы пустоты языка, порождаемого данной КС-грамматикой

Поддерево с корнем n1 представляет вывод

*

 

 

представляет

A x1. Поддерево с корнем n2

 

 

 

 

вывод A

*

x2.

 

 

 

Заметим, что x2 является подцепочкой цепочки x1, которая, впрочем, может совпадать с x1.

Кроме того, x = x3x1x4, где x3, x4 VT*, причём одна из них или обе могут быть пустыми

цепочками.

8

Алгоритмическая разрешимость проблемы пустоты языка, порождаемого данной КС-грамматикой

Если в дереве с поддерево с корнем n1 n2, то получим дерево представляющее вывод

корнем S заменить поддеревом с корнем

(см. рис. 4.1, б ),

 

 

 

S

*

x3x2x4.

 

Так мы исключили, по крайней мере, один узел (n1) из исходного дерева вывода.

Если в полученном дереве имеется путь с двумя узлами, помеченными одним и тем же нетерминалом, процесс может быть повторен с деревом вывода S * x3x2x4.

9

Алгоритмическая разрешимость проблемы пустоты языка, порождаемого данной КС-грамматикой

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

Поскольку каждая итерация исключает один или более узлов, а дерево конечно, то процесс в конце концов закончится.

10

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