Упражнение 2.1.25 |
Алгоритмически разрешимые проблемы
В этой лекции рассматриваются наиболее известные разрешимые проблемы, связанные с грамматиками, автоматами и регулярными выражениями. Поскольку все приведенные выше доказательства эквивалентности разных способов конечного задания формального языка были конструктивными, не важно, какой из эквивалентных способов задания языка (например, посредством контекстно-свободной грамматики или автомата с магазинной памятью) используется в точной формулировке массовой задачи.
Первые два раздела этой лекции посвящены контекстным языкам. В разделах 15.3-15.6 сформулированы теоремы о разрешимости для некоторых алгоритмических проблем. Доказательства этих теорем опираются на конструктивность рассуждений, проведенных в лекциях "3" и "8" . В разделе 15.7* приводится новый неожиданный результат, доказанный в 1997 году.
Проблема эквивалентности конечных автоматов (или, что то же самое, регулярных выражений) разрешима, но, к сожалению, она сложна, то есть нахождение ответа индивидуальной задачи требует (в некотором смысле) много времени. В разделе 15.9* указывается, что даже для регулярных выражений без итерации (которые, очевидно, соответствуют конечным автоматам без циклов) проблема неэквивалентности NP -полна (необходимые определения из теории сложности вычислений приведены в разделе 15.8*).
15.1. Неукорачивающие грамматики
Определение 15.1.1. Порождающая грамматика называется неукорачивающей (noncontracting), если для каждого правила выполняется неравенство .
Теорема 15.1.2. Существует алгоритм, позволяющий по произвольной неукорачивающей грамматике G и по слову w узнать, верно ли, что .
Теорема 15.1.3. Каждая контекстная грамматика является неукорачивающей. Каждая неукорачивающая грамматика эквивалентна некоторой контекстной грамматике.
Пример 15.1.4. Грамматика
эквивалентна контекстной грамматике из примера 1.5.4.Упражнение 15.1.5. Найти неукорачивающую грамматику, порождающую язык .
Упражнение 15.1.6. Найти неукорачивающую грамматику, порождающую язык .
Упражнение 15.1.7. Найти неукорачивающую грамматику, порождающую язык .
Упражнение 15.1.7. Найти неукорачивающую грамматику, порождающую язык .
15.2*. Линейно ограниченные автоматы
Определение 15.2.1. Машина Тьюринга
называется линейно ограниченным автоматом (linear bounded automaton), если не существует таких , , , и , что и |xay| > |b0wb0|.Теорема 15.2.2. Язык L, не содержащий пустого слова, порождается некоторой неукорачивающей грамматикой тогда и только тогда, когда существует линейно ограниченный автомат ( в общем случае недетерминированный ), допускающий язык L.
Замечание 15.2.3. Неизвестно, верен ли аналог теоремы 15.2.2 для детерминированных линейно ограниченных автоматов.
Теорема 15.2.4. Класс языков, порождаемых неукорачивающими грамматиками, то есть класс контекстных языков, замкнут относительно операций объединения, пересечения и дополнения.
Замкнутость относительно операции дополнения доказали в 1987 году (независимо друг от друга) Нил Иммерман (Neil Immerman) и Роберт Селепчени (Robert Szelepcs) (см. [Imm, Sze]). Замкнутость относительно операции объединения очевидна, а пересечение выражается через объединение и дополнение.
Упражнение 15.2.5. Является ли контекстным язык
Упражнение 15.2.6. Является ли контекстным язык
15.3. Проблема выводимости слова
Теорема 15.3.1. Существует алгоритм, позволяющий по произвольной контекстно-свободной грамматике G узнать, верно ли, что .
Теорема 15.3.2. Существует алгоритм, позволяющий по произвольной контекстно-свободной грамматике G и по слову w узнать, верно ли, что .
Упражнение 15.3.3. Принадлежит ли слово aaaaabbbabb языку, порождаемому грамматикой
Упражнение 15.3.4. Принадлежит ли слово abababa языку, порождаемому грамматикой