- •1. Алфавит, слова, операции над словами
- •2. Языки. Операции над языками
- •3. Абстрактные формальные системы
- •4. Формальные порождающие грамматики
- •5. Классификация грамматик
- •Диаграмма грамматики.
- •Порождение и распознавание цепочек.
- •Детерминизация конечных автоматов
- •Автоматы с - переходами.
- •9. Минимизация числа состояний автомата
- •9.1. Лингвистический автомат.
- •9.2. Метод Хафмена.
- •Регулярные множества и регулярные выражения.
- •Разрешимые проблемы для а-грамматик
- •7. Нотации для задания кс-грамматик.
- •8. Структура цепочек. Су-схемы
- •9. Преобразования грамматик.
- •10. Разрешимые и неразрешимые свойства кс-грамматик
- •11. Синтаксический анализ для кс-языков
- •11.1 Ll(k)-грамматики
- •12.Элементы теории конечных автоматов
- •13.Сети автоматов. Их анализ и синтез.
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,>, значит, для выводаSK,, следовательно,()K, с другой стороны,L(), поэтому,L(), что требовалось доказать.
Теорема.
Если G=< VT,VN, S, R>– КС-грамматика, тоL(G) бесконеченсуществует нетерминальный символAiтакой, чтоS+XAiY,Ai+ZAiW,ZW1, иAi+V&(X,Y,Z,W,V VT*).
Доказательство:
Считаем, что рассматриваемая грамматика не содержит цепных правил.
1. Доказательство бесконечности языка при условии S+XAiY,Ai+ZAiW,ZW1, иAi+Vочевидно, т.к. при представленных условиях фрагмент выводаAi+ZAiWможет быть включен в вывод произвольное число раз; следовательно,S+XVY, иS+XZjVWjYдля всехj0,что и обеспечивает построение бесконечного множества цепочек заданного вида.
2. Пусть язык, порождаемый грамматикой, является бесконечным, а условие теоремы не выполняется. Тогда максимальная глубина (длина ветви) синтаксического дерева для цепочки, порождаемой грамматикой, не превышает VN. Число таких деревьев конечно, значит, конечно число цепочек, порождаемых грамматикой.
Если же язык бесконечен, то глубина деревьев не ограничена, значит, в каком-нибудь синтаксическом дереве Т существует нетерминал Ai, через который ветвь дерева проходит неоднократно, причем это дерево соответствует выводу терминальной цепочки. Значит, во-первых, существует путь из начальной вешнины в данную вершину, и в силу отсутствия цепных правил,S*Ai,*X,*Y,X,YVT*, во-вторых, в силу выводимости изAi терминальной цепочки,AiVVTVT, в третьих, из-за повторения нетерминалаAiв ветви дереваAi+Ai,*Z,*W,Z,W VT*, значит,Ai+ZAiW,ZW1. Что и требовалось доказать.
Из доказанной теоремы следует
Следствие 1. Для КС-грамматикиG=< VT,VN, S, R>существуют числаp,qтакие, что для любой цепочкиL(G), еслиp, то она имеет вид=, где,q, и для любого nцепочка видаnnL(G),n0.
Следствие 2.Язык {anbncn,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},U0U=/
U1=U0U. ПустьX=(1,2,…,m) –цепочки вU. ТогдаQ(X) – множество цепочек вида,n1.
Тогда для 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: {IbiIi,Ibii}. Грамматика является однозначной.
Из введенных утверждений следует теорема:
Теорема. Не существует алгоритма, который по двум КС-грамматикамG1иG2определял бы,L(G1)L(G2)=?
Доказательство: Если бы такой алгоритм существовал, то проблема Поста была бы разрешима.
Теорема. Не существует алгоритма, который по любой КС- грамматике позволял бы определить, является ли эта грамматика однозначной.
Доказательство:
Рассмотрим множества Q(X) дляX=(1,2,…,m) иQ(Y) дляY=(1,2,…m). Правила грамматики для порожденияQ(X):RX={AbiAi,Abii} правила грамматики для построения множестваQ(Y):RY={BbiBi,Bbii}.
Грамматика для порождения Q(X)Q(Y)G=<U, {A,B},I,R>, гдеR=RXRY{IAB}. Эта грамматика однозначна, еслиQ(X)Q(Y)=, а это свойство неразрешимо.
Другие неразрешимые проблемы для КС-языков:
1. Является ли КС-языком пересечение КС-языков?
2. Является ли КС-языком дополнение КС-языков?
Проблема тривиальности КС-языка L=V*(= проблеме пустоты дополнения)?
Проблема эквивалентности КС-грамматик.