Пусть 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. Таких форм будет конечное число. Если среди них есть терминальные цепочки, то язык бесконечен.
Вопросы и упражнения
На какую теорему опирается доказательство признака бесконечности заданного КС-языка?