Лемма о разрастании для КС-грамматик — различия между версиями
Строка 1: | Строка 1: | ||
− | {{Лемма | + | ==Лемма о разрастании для КС-грамматик== |
+ | {''{Лемма | ||
|id= ==lemma== | |id= ==lemma== | ||
|about=о разрастании КС-грамматик | |about=о разрастании КС-грамматик |
Версия 00:31, 24 января 2012
Лемма о разрастании для КС-грамматик
{{Лемма |id= ==lemma== |about=о разрастании КС-грамматик |statement= Пусть контекстно-свободный язык над алфавитом , тогда существует такое , что для любого слова длины не меньше найдутся слова , для которых верно: и . |proof=
— Грамматика любого контекстно-свободного языка может быть записана в нормальной форме Хомского (НФХ). Пусть — количество нетерминалов в грамматике языка , записанной в НФХ.Выберем
. Построим дерево разбора произвольного слова длиной больше, чем . Высотой дерева разбора назовем максимальное число нетерминальных символов на пути от корня дерева к листу. Так как грамматика языка записана в НФХ, то у любого нетерминала в дереве могут быть, либо два потомка нетерминала, либо один потомок терминал. Поэтому высота дерева разбора слова не меньше .Выберем путь от корня дерева к листу максимальной длины. Количество нетерминалов в нем не меньше, чем
, следовательно, найдется такой нетерминал , который встречается на этом пути дважды. Значит, в дереве разбора найдется нетерминал , в поддереве которого содержится нетерминал . Выберем нетерминал , у которого в поддереве содержится такой же нетерминал и длина пути до корня максимальна среди всех нетерминалов, содержащих в поддереве такой же нетерминал.Найдем слова
.- Рассмотрим нетерминал , содержащийся в поддереве выбранного нетерминала. Тогда - строка терминалов которая выведена из рассмотренного нетерминала в данном дереве разбора. .
- Рассмотрим выбранный нетерминал . Пусть - строка терминальных символов, которая выведена из рассмотренного нетерминала в данном дереве разбора. Тогда , где - строки, состоящие из терминалов, которые могут содержать как терминалы, так и нетерминалы. При этом, как минимум одна из строк не пуста, так как грамматика языка записана в НФХ. Пусть - строки, состоящие из терминалов, которые выведены из соответственно, в данном дереве разбора. Тогда . Так как хотя бы одна из строк не пуста, то . Получаем .
- Рассмотрим стартовый нетерминал . Из выведена строка . При этом , где - выбранный ранее нетерминал. Из в данном дереве разбора выведена строка . Пусть - строки, состоящие из терминалов, которые выведены из соответственно, в данном дереве разбора. Тогда .
Таким образом, в рамках нашей грамматики мы можем построить цепочку вывода:
. }}Замечание. Условие леммы не является достаточным для контекстно-свободности языка. Но в силу необходимости, данная лемма часто используется для доказательства неконтекстно-свободности языков.
Пример доказательства неконтекстно-свободности языка с использованием леммы
Рассмотрим язык
. Покажем, что он не является контекстно-свободным. Для фиксированного рассмотрим слово . Пусть разбили на произвольным образом. Так как , то в слове не содержится либо ни одного символа , либо ни одного символа . Для любого такого разбиения выберем и получаем, количество символов 1 изменилось, а количество либо , либо осталось тем же. Очевидно, что такое слово не принадлежит рассмотренному языку. Значит, язык не является контекстно-свободным.Источники
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)