Разрешимые и неразрешимые свойства КС-грамматик

10.1. Разрешимые свойства КС-грамматик

Теорема. Свойство lÎL(G) разрешимо для КС-грамматик.

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

Теорема. Если G=< VT,VN, S, R> – КС, неукорачивающая грамматика, то язык L(G) разрешим, т.е. для любой цепочки aÎ VT * можно определить, aÎL(G) или же aÏL(G).

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

Пусть, aÎL(G) и½a½=n. Тогда существует вывод цепочки a I,…, b, g,…, b, …,, a. Т.е. некоторая цепочка встречается в выводе более одного раза. Тогда, удалив из вывода фрагмент g,…, b,получим опять вывод цепочки a.

Значит, для любого слова aÎL(G) существует его бесповторный вывод в G, т.е. вывод, в котором все цепочки различны, причем длина каждой цепочки £ n. Число таких цепочек ограничено числом

, а значит, длина вывода ограничена числом r(n)!(в принципе можно дать более точную оценку, но достаточно и этой). Откуда получается простой алгоритм распознавания нам здесь aÎL(G) или же aÏL(G)?

Перебираем все бесповторные последовательности цепочек длины £ n, в которых каждая следующая цепочка не короче предшествующей, и проверяем, является ли она выводом в данной грамматике. Сложность такой проверки ограничена, т.к. на каждом шаге проверяем выводимость ai+1 из ai. Если хоть одна последовательность является выводом требуемой цепочки, то aÎL(G) иначе aÏL(G).

Теорема. Если G – приведенная грамматика без цепных правил, то существуют константы с1 и с2, зависящие от G, что для любого вывода D(a) цепочки aÎL(G)

c1½a½£½D (a)½£c2½a½, где ½D (a)½ - длина вывода цепочки a.

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

Пусть имеется грамматика G=< VT,VN, S, R>.

Обозначим K - ½ VN ½, L – максимальная длина правой части правила в R, т.е. L={max½b½/ A ®bÎR & AÎ VN }. Т.к. G не содержит цепных и укорачивающих правил, то для любого вывода bÞK g, ½g½>½b½, значит, для вывода SÞK½a½g, ½g½>½a½, следовательно, ½D (a)½£K½a½, с другой стороны, ½a½£L½D (a)½, поэтому, ½a½/L£½D (a)½, что требовалось доказать.

Теорема.

Если G=< VT,VN, S, R> – КС-грамматика, то L(G) бесконечен Û существует нетерминальный символ Ai такой, что SÞ+ X Ai Y, AiÞ+ Z AiW, ½ZW½³ 1, и AiÞ+ V&(X,Y, Z, W,VÎVT*).

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

Считаем, что рассматриваемая грамматика не содержит цепных правил.

1. Доказательство бесконечности языка при условии SÞ+ X Ai Y, AiÞ+ Z AiW, ½ZW½³ 1, и AiÞ+ V очевидно, т.к. при представленных условиях фрагмент вывода AiÞ+ Z AiW может быть включен в вывод произвольное число раз; следовательно, SÞ+ X VY, и SÞ+ X ZjVWjY для всех j³0,что и обеспечивает построение бесконечного множества цепочек заданного вида.

2. Пусть язык, порождаемый грамматикой, является бесконечным, а условие теоремы не выполняется. Тогда максимальная глубина (длина ветви) синтаксического дерева для цепочки, порождаемой грамматикой, не превышает ½ VN ½. Число таких деревьев конечно, значит, конечно число цепочек, порождаемых грамматикой.

Если же язык бесконечен, то глубина деревьев не ограничена, значит, в каком-нибудь синтаксическом дереве Т существует нетерминал Ai, через который ветвь дерева проходит неоднократно, причем это дерево соответствует выводу терминальной цепочки. Значит, во-первых, существует путь из начальной вешнины в данную вершину, и в силу отсутствия цепных правил, SÞ* a Aib, aÞ*X, bÞ*Y, X,YÎVT*, во-вторых, в силу выводимости из Ai терминальной цепочки, AiÞ V&VT ÎVT, в третьих, из-за повторения нетерминала Ai в ветви дерева AiÞ+dAie, dÞ*Z, eÞ*W, Z, W ÎVT*, значит, AiÞ+ Z AiW, ½ZW½³ 1. Что и требовалось доказать.

Из доказанной теоремы следует

Следствие 1. Для КС-грамматики G=< VT,VN, S, R> существуют числа p, q такие, что для любой цепочки aÎL(G), если ½a½>p, то она имеет вид a=bgwde, где ½gd½>0, ½gwd½< q, и для любого n цепочка вида bgnwdne ÎL(G), n³0.

Следствие 2. Язык {an bn cn, n³1} не порождается КС-грамматикой.

Теорема. Свойство L(G)=Æ разрешимо для КС-грамматик.

Разрешимость свойства следует из рассмотренных ранее алгоритмов: Язык L(G) не пуст тогда и только тогда, когда начальный символ грамматики является производящим.

10.2. Неразрешимые свойства КС-грамматик.

Поскольку класс множеств (слов), порождаемых грамматиками, совпадает с классом перечислимых множеств, то для языков класса «0» справедлив аналог теоремы Райса «никакое нетривиальное свойство языков класса 0 не является алгоритмически разрешимым» (Т.е. для нетривиального свойства не существует алгоритма, который по произвольной грамматике G выяснял, обладает ли данным свойством язык L(G)).

Для КЗ-грамматик проблема пустоты и бесконечности неразрешимы. Для КС-грамматик эти проблемы разрешимы.

Неразрешимые проблемы для КС-грамматик следуют из неразрешимости проблемы Поста.

Формулировка этой проблемы в виде, удобном для наших целей, следующая: для двух списков цепочек X=(a1,a2,…,am) и Y=(b1,b2,…bm) в алфавите U определить, существует ли последовательность индексов i1,i2,…in, такая, что .

Пусть U и m фиксированы. Введём алфавит дополнительных символов U0={b1,b2,…bm}, U0Ç U=Æ/

U1= U0 ÈU. Пусть X=(a1,a2,…,am) –цепочки в U. Тогда Q(X) – множество цепочек вида , n³1.

Тогда для Q(X) справедливы утверждения

1. Если X=(a1,a2,…,am) и Y=(b1,b2,…bm) списки цепочек в U, то комбинаторная проблема Поста разрешима тогда и только тогда, когда Q(X) ÇQ(Y)=Æ. Пусть существует gÎ Q(X) и gÎQ(Y). Тогда , а значит,

2. Для любого списка X=(a1,a2,…,am) цепочек в U, Q(X) – КС-язык в U. Соответствующая КС-грамматикаG=< VT,VN, S, R> для языка Q(X) - G=< U1,{I}, I, R>; R: { I®bi I ai, I®bi ai }. Грамматика является однозначной.

Из введенных утверждений следует теорема:

Теорема. Не существует алгоритма, который по двум КС-грамматикам G1 и G2 определял бы, L(G1) ÇL(G2)=Æ?

Доказательство: Если бы такой алгоритм существовал, то проблема Поста была бы разрешима.

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

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

Рассмотрим множества Q(X) для X=(a1,a2,…,am) и Q(Y) для Y=(b1,b2,…bm). Правила грамматики для порождения Q(X): RX={ A®bi A ai, A®bi ai } правила грамматики для построения множества Q(Y): RY={ B®bi B bi, B®bi bi }.

Грамматика для порождения Q(X)ÈQ(Y) G=<U, {A,B}, I, R>, где R=RXÈRYÈ {I®A½B}. Эта грамматика однозначна, если Q(X)ÇQ(Y)=Æ, а это свойство неразрешимо.

Другие неразрешимые проблемы для КС-языков:

1. Является ли КС-языком пересечение КС-языков?

2. Является ли КС-языком дополнение КС-языков?

3. Проблема тривиальности КС-языка L=V*(= проблеме пустоты дополнения)?

4. Проблема эквивалентности КС-грамматик.


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



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