Контекстно-свободные языки
[59/92%]Вспомним КС-грамматику , приведённую в примере 2.4. Для удобства переименуем её переменные в одиночные буквы следующим образом.
Приведите деревья вывода и выводы для каждой строки.
a
((a))
Используя языки и вместе с примером 2.36, покажите, что класс контекстно-свободных языков не замкнут относительно пересечения.
Используя пункт (a) и закон де Моргана (теорема 0.20), покажите, что класс контекстно-свободных языков не замкнут относительно дополнения.
ᴬ Ответьте на каждый пункт для следующей контекстно-свободной грамматики .
Что является переменными ?
Что является терминалами ?
Какая переменная является начальной для ?
Приведите три строки из .
Приведите три строки, не принадлежащие .
Верно или неверно: .
Верно или неверно: aba.
Верно или неверно: .
Верно или неверно: .
Верно или неверно: aba.
Верно или неверно: aba.
Верно или неверно: .
Верно или неверно: .
Верно или неверно: .
Дайте словесное описание .
Приведите контекстно-свободные грамматики, порождающие следующие языки. Во всех пунктах алфавит равен 0,1.
ᴬ
ᴬ
Пустое множество
Приведите неформальные описания и диаграммы состояний автоматов с магазинной памятью для языков из упражнения 2.4. Во всех пунктах алфавит равен 0,1.
Пустое множество
Приведите контекстно-свободные грамматики, порождающие следующие языки.
ᴬ Множество строк над алфавитом , в которых букв a больше, чем букв b
Дополнение языка
ᴬ
ᴬ Приведите неформальные словесные описания автоматов с магазинной памятью для языков из упражнения 2.6.
ᴬ Покажите, что строка the girl touches the boy with the flower имеет два различных левосторонних вывода в грамматике со стр. 103. Опишите словесно два различных смысла этого предложения.
Приведите контекстно-свободную грамматику, порождающую язык
Является ли ваша грамматика неоднозначной? Почему да или почему нет?
Приведите неформальное описание автомата с магазинной памятью, распознающего язык из упражнения 2.9.
Преобразуйте КС-грамматику из упражнения 2.1 в эквивалентный МП-автомат, используя процедуру из теоремы 2.20.
Преобразуйте КС-грамматику из упражнения 2.3 в эквивалентный МП-автомат, используя процедуру из теоремы 2.20.
Пусть — следующая грамматика. ; ; а — следующее множество правил:
Опишите словесно.
Докажите, что не является регулярным.
Преобразуйте следующую КС-грамматику в эквивалентную КС-грамматику в нормальной форме Хомского, используя процедуру из теоремы 2.9.
Приведите контрпример, показывающий, что следующая конструкция не доказывает, что класс контекстно-свободных языков замкнут относительно операции звезды. Пусть — КС-язык, порождаемый КС-грамматикой . Добавим новое правило и назовём получившуюся грамматику . Предполагается, что эта грамматика порождает .
Покажите, что класс контекстно-свободных языков замкнут относительно регулярных операций: объединения, конкатенации и звезды.
Используя результаты упражнения 2.16, приведите ещё одно доказательство того, что каждый регулярный язык является контекстно-свободным, показав, как напрямую преобразовать регулярное выражение в эквивалентную контекстно-свободную грамматику.
ᴬ
Пусть — контекстно-свободный язык, а — регулярный язык. Докажите, что язык контекстно-свободен.
Пусть . Используя пункт (a), покажите, что не является КС-языком.
- Пусть КС-грамматика — следующая грамматика.
Дайте простое словесное описание . Используя это описание, приведите КС-грамматику для — дополнения .
Пусть . Покажите, что если контекстно-свободен, а регулярен, то контекстно-свободен.
- Пусть . Приведите КС-грамматику, порождающую язык строк, в которых букв a вдвое больше, чем букв b. Докажите, что ваша грамматика верна.
- Пусть . Покажите, что является контекстно-свободным языком.
- Пусть . Покажите, что является контекстно-свободным языком.
- Пусть . Покажите, что является контекстно-свободным языком.
Для произвольного языка пусть . Покажите, что класс контекстно-свободных языков замкнут относительно операции SUFFIX.
Покажите, что если — КС-грамматика в нормальной форме Хомского, то для любой строки длины любой вывод требует ровно шагов.
- Пусть STMT — следующая грамматика.
— грамматика, естественно выглядящая как фрагмент языка программирования, но неоднозначна.
Покажите, что неоднозначна.
Приведите новую однозначную грамматику для того же языка.
- Приведите однозначные КС-грамматики для следующих языков.
- Покажите, что язык из упражнения 2.9 существенно неоднозначен.
Используя лемму о накачке, покажите, что следующие языки не являются контекстно-свободными.
ᴬ
ᴬ
Пусть — язык всех палиндромов над , содержащих поровну нулей и единиц. Покажите, что не является контекстно-свободным.
Пусть и . Покажите, что не является контекстно-свободным.
- Покажите, что не является контекстно-свободным.
Рассмотрим язык , где — грамматика из упражнения 2.13. Лемма о накачке для контекстно-свободных языков, теорема 2.34, утверждает существование длины накачки для . Каково минимальное значение , для которого работает лемма о накачке? Обоснуйте свой ответ.
Пусть — КС-грамматика в нормальной форме Хомского, содержащая переменных. Покажите, что если порождает некоторую строку, для которой существует вывод не менее чем из шагов, то бесконечен.
Приведите пример языка, который не является контекстно-свободным, но ведёт себя как КС-язык в лемме о накачке. Докажите, что ваш пример работает. (См. аналогичный пример для регулярных языков в задаче 1.54.)
- Докажите следующую усиленную форму леммы о накачке, в которой обе части и должны быть непустыми при разбиении строки . Если — контекстно-свободный язык, то существует число , такое что для любой строки длины не менее строку можно разбить на пять частей, , удовлетворяющих условиям:
для каждого , ,
и , и
.
ᴬ Обратитесь к задаче 1.41 за определением операции идеального перемешивания. Покажите, что класс контекстно-свободных языков не замкнут относительно идеального перемешивания.
Обратитесь к задаче 1.42 за определением операции перемешивания. Покажите, что класс контекстно-свободных языков не замкнут относительно перемешивания.
Задача 1.42: Для языков и перемешиванием и называется язык
- Будем говорить, что язык префиксно замкнут, если все префиксы каждой строки языка также принадлежат этому языку. Пусть — бесконечный, префиксно замкнутый, контекстно-свободный язык. Покажите, что содержит бесконечное регулярное подмножество.
- Вспомните определения и из задачи 1.40.
Покажите, что класс КС-языков не замкнут относительно операции NOPREFIX.
Покажите, что класс КС-языков не замкнут относительно операции NOEXTEND.
- Пусть . Здесь . Докажите, что не является контекстно-свободным.
Для строк и будем писать , если символы являются перестановкой символов . Иными словами, , если и содержат одни и те же символы в одинаковых количествах, но, возможно, в другом порядке. Для произвольной строки определим . Для произвольного языка положим .
Покажите, что если , то SCRAMBLE регулярного языка контекстно-свободен.
Что происходит в пункте (a), если содержит три или более символов? Докажите свой ответ.
Если и — языки, определим . Покажите, что если и — регулярные языки, то — КС-язык.
- Пусть . Докажите, что не является КС-языком.
Рассмотрим следующую КС-грамматику :
Опишите и покажите, что неоднозначна. Приведите однозначную грамматику , для которой , и наметьте доказательство того, что однозначна.
Пусть , и пусть — совокупность строк, содержащих хотя бы одну единицу во второй половине. Иными словами, .
Постройте МП-автомат, распознающий .
Приведите КС-грамматику, порождающую .
Пусть . Пусть — язык всех строк, содержащих единицу в своей средней трети. Пусть — язык всех строк, содержащих две единицы в своей средней трети. Так, , а .
Покажите, что — КС-язык.
Покажите, что не является КС-языком.
- Мы определили вращательное замыкание языка как . Покажите, что класс КС-языков замкнут относительно вращательного замыкания.
- Мы определили CUT языка как . Покажите, что класс КС-языков не замкнут относительно операции CUT.
Покажите, что каждая ДКС-грамматика (DCFG) является однозначной КС-грамматикой.
ᴬ Покажите, что каждая ДКС-грамматика порождает беспрефиксный язык.
- Покажите, что класс ДКС-языков (DCFL) не замкнут относительно следующих операций:
Объединение
Пересечение
Конкатенация
Звезда
Обращение
Пусть — следующая грамматика:
Покажите, что . Используйте доказательство индукцией по длине .
Используя -тест, покажите, что является ДКС-грамматикой.
Опишите ДМП-автомат, распознающий .
Пусть — следующая грамматика, которую мы ввели в примере 2.45. Используя -тест, покажите, что не является ДКС-грамматикой.
- Пусть , где определена в задаче 2.55. Покажите, что не является ДКС-языком. (Подсказка: предположите, что — ДКС-язык, и рассмотрите его ДМП-автомат . Измените так, чтобы его входной алфавит стал . Когда он впервые попадает в допускающее состояние, пусть он с этого момента считает буквы c буквами b во входной строке. Какой язык будет допускать изменённый ?)
- Пусть . Докажите, что не является ДКС-языком.
- Пусть . Докажите, что не является ДКС-языком. (Подсказка: предположим, что когда некоторый ДМП-автомат запущен в состоянии с символом на вершине стека, никогда не опускает стек ниже , независимо от того, какую входную строку читает с этого момента. В таком случае содержимое стека в этот момент не может влиять на его дальнейшее поведение, так что дальнейшее поведение может зависеть только от и .)
- Если запретить -правила в КС-грамматиках, можно упростить -тест. В упрощённом тесте достаточно проверить, что у каждого допускающего состояния есть ровно одно правило. Докажите, что КС-грамматика без -правил проходит упрощённый -тест тогда и только тогда, когда она является ДКС-грамматикой.