Пример языка не являющегося КС-языком

Пусть L= {ap| p - простое число}. Предположим, что L - КС-язык, тогда существует грамматика G в НФХ, порождающая этот язык. Пусть N - множество нетерминалов этой грамматики и n= |N|.

Применим к этой грамматике основную теорему КС-языков. Тогда существуют l1=2n-1 и l2=2n, и z= uvwxy. Обозначим |uvwxy|=p> l1. uviwxiyÎL (для любых i³0), обозначим |vk|= k>0. Можно представить |zi|=|uviwxiy|= |uwy|+|vixi|= p0+k×i= p.

Если i= p0, то p0 - делитель числа p, но по условию p - простое число. Противоречие, следовательно L это не КС-язык.

Вопросы и упражнения

В чем заключается противоречие в данном доказательстве? Что показывает это противоречие?

Проблема конечности языка

Теорема: Пусть грамматика G – КС-грамматика в НФХ и имеет n нетерминалов. l1= 2n-1, l2= 2n.

Предположим, что zÎL(G) – самая короткая из всех цепочек языка L(G), длина которой |z|£ l1+l2.

Доказательство: Пусть z – самая короткая цепочка языка L(G), имеющая длину больше, чем l1. Предположим, что ее длина |z|>l1+l2. Так как z самая короткая цепочка, то не существует цепочек z1 таких, что l1<|z|£l1+l2.

Так как |z|> l1+l2> l1, применим к этой цепочке основную теорему КСЯ: z= uvwxy:

|vwx|£l2,

vx¹e,`

"i³0, uviwxiyÎL(G).

Возьмем i=0, тогда z0= uwyÎL(G).

Покажем, что |z0|>l1. |z|= |uvwxy|= |uwy|+|vx|= |uwy|+|vwx|–|w|³ l1+l2, |z0|=|uwy|>l1+l2-|vwx|+|w|³l1+l2–l2+|w|>l1.

Покажем, что |z0|<|z|. |uwy|= |uvwxy|–|vx|<|uvwxy|=|z|.

Таким образом, z – не самая короткая цепочка, что противоречит условиям. ЧТД.

Теорема: Пусть L – КСЯ, порождаемый грамматикой G в НФХ. Язык L(G) бесконечен тогда и только тогда, когда существует цепочка zÌL(G) и l1<|z|£l1+l2, где l1= 2n-1, l2= 2n, n – мощность множества нетерминалов G.

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

Необходимость: Пусть L(G) – бесконечен, тогда существуют цепочки произвольной длины и найдутся такие zÎL(G), что |z|>l1. Возьмем минимальную такую цепочку z1, тогда по предыдущей теореме l1<|z1|111111111231231123123£l1+l2.

Достаточность: Пусть существует zÌL(G) такая, что l1<|z|£l1+l2. По основной теореме z= uvwxy и zi= uviwxiyÎL(G) для любых i³0. Таких цепочек бесконечное количество, следовательно, язык L(G) бесконечен.

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

Алгоритм: Рассмотрим все синтаксикальные формы, выводимые из грамматики G и имеющие длину l1<k£l1+l2. Таких форм будет конечное число. Если среди них есть терминальные цепочки, то язык бесконечен.

Вопросы и упражнения

На какую теорему опирается доказательство признака бесконечности заданного КС-языка?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: