Лемма о разрастании для контекстно-свободных языков

Материал из testwiki
Перейти к навигации Перейти к поиску

Лемма о разрастании для контекстно-свободных языков (или uvwxy теорема) — аналог одноименной леммы для регулярных языков позволяющая относительно несложно доказывать, что данный язык не порождается контекстно-свободной грамматикой.

Формулировка

Пусть L — контекстно-свободный язык над алфавитом V. Тогда

(n)(αL:|α|>n)(u,x,v,y,wV*):
α=uxvyw|xy|>0|xvy|n(i0:uxivyiwL)..

Иначе говоря, любую достаточно длинную строчку в L можно разбить на пять частей так, что повторение второй и четвёртой частей произвольное количество раз (возможно, 0) не приведут к выходу за пределы языка.

Доказательство

Пусть задан КС-язык (V, N, S, G), причем грамматика языка приведена (то есть не содержит правил вида A → ε или A → B).

Поскольку количество нетерминальных символов конечно, равно как и длина каждого правила вывода, то длина цепочки, высота дерева вывода для которой не превышает |N|, также ограничена сверху неким числом n.

Рассмотрим цепочку α:|α|>n. В силу вышесказанного высота дерева её вывода превысит |N|, то есть найдется путь из аксиомы в один из терминальных символов, длина которого будет больше, чем количество нетерминальных символов грамматики. Поскольку на каждом шаге заменяется один нетерминальный символ, как минимум один нетерминальный символ Q на этом пути будет заменён дважды. Из этого следует, что существует цепочка xQy с непустыми x или y, выводящаяся из Q. Следовательно, в процессе вывода S →* α процесс вывода Q →* xQy можно повторять сколь угодно много раз или опустить.

Следствия и примеры использования

  • В любом бесконечном КС-языке найдется бесконечное подмножество цепочек, длины которых образуют возрастающую арифметическую прогрессию.
  • Язык anbncn,n0 не является КС-языком: в нём невозможно выбрать две цепочки и накачивать их, не выходя за пределы языка (необходимо одновременно накачивать три цепочки).
  • Язык anbnck,n,k0,kn также не является КС-языком, но доказать это «накачиванием» уже не получится: можно накачивать «зоны» символов a и b, воспользовавшись тем, что символов c в цепочке может быть меньше. Но если рассмотреть принадлежащую языку цепочку anbncn, то или исключение накачиваемых цепочек выведет за пределы языка, что противоречит лемме о накачке.
  • Язык an2 также не является КС-языком, так как он противоречит следствию из леммы.

См. также

Литература


Шаблон:Нет источников Шаблон:ВС Шаблон:Формальные языки