1. Алфавит, слова, операции над словами

Вид материалаДокументы

Содержание


10. Разрешимые и неразрешимые свойства КС-грамматик
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14

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


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

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

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

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

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

Пусть , L(G) и=n. Тогда существует вывод цепочки  I,…, , ,…, , … , , . Т.е. некоторая цепочка встречается в выводе более одного раза. Тогда, удалив из вывода фрагмент ,…, ,получим опять вывод цепочки .

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

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

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

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

c1 ()c2, где  () - длина вывода цепочки .

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

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

Обозначим K -  VN , L – максимальная длина правой части правила в R, т.е. L={max A R & A VN}. Т.к. G не содержит цепных и укорачивающих правил, то для любого вывода K , >, значит, для вывода SK, , следовательно,  ()K, с другой стороны, L (), поэтому, L (), что требовалось доказать.

Теорема.

Если 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*  Ai, *X, *Y, X,YVT*, во-вторых, в силу выводимости из Ai терминальной цепочки, Ai VVT VT, в третьих, из-за повторения нетерминала Ai в ветви дерева Ai+Ai, *Z, *W, Z, W  VT*, значит, Ai+ Z AiW, ZW 1. Что и требовалось доказать.

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

Следствие 1. Для КС-грамматики G=< VT,VN, S, R> существуют числа p, q такие, что для любой цепочки L(G), если p, то она имеет вид =, где ,  q, и для любого n цепочка вида nn L(G), n0.

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

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

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

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

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

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

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

Формулировка этой проблемы в виде, удобном для наших целей, следующая: для двух списков цепочек X=(1,2,…,m) и Y=(1,2,…m) в алфавите U определить, существует ли последовательность индексов i1,i2,…in, такая, что .

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

U1= U0 U. Пусть X=(1,2,…,m) –цепочки в U. Тогда Q(X) – множество цепочек вида , n1.

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

1. Если X=(1,2,…,m) и Y=(1,2,…m) списки цепочек в U, то комбинаторная проблема Поста разрешима тогда и только тогда, когда Q(X) Q(Y)=. Пусть существует  Q(X) и Q(Y). Тогда , а значит,

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

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

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

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

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

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

Рассмотрим множества Q(X) для X=(1,2,…,m) и Q(Y) для Y=(1,2,…m). Правила грамматики для порождения Q(X): RX={ Abi A i, Abii } правила грамматики для построения множества Q(Y): RY={ Bbi B i, Bbii }.

Грамматика для порождения Q(X)Q(Y) G=, где R=RXRY {IAB}. Эта грамматика однозначна, если Q(X)Q(Y)=, а это свойство неразрешимо.

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

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

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