Контекстно-свободные языки
[95/52%]Рассмотрим контекстно-свободную грамматику . Чему равен язык ?
Рассмотрим контекстно-свободную грамматику , ), где состоит из следующих правил:
Чему равен язык ?
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику, порождающую
Постройте контекстно-свободную грамматику, порождающую регулярный язык, допускаемый ДКА на рисунке 3.1.
Рисунок 3.1: ДКА для примера 3.8.
Постройте контекстно-свободную грамматику, порождающую регулярный язык, допускаемый НКА на рисунке 3.2(a).
Рисунок 3.2: Два НКА для примера 3.9.
Пусть — регулярная грамматика со следующими правилами:
Постройте НКА, допускающий .
Опишите словами и/или с помощью регулярных выражений язык, порождаемый каждой из следующих контекстно-свободных грамматик:
.
.
.
.
.
.
Покажите, что ни одна строка языка не содержит подстроку , где — контекстно-свободная грамматика со следующими правилами:
Покажите, что в каждой строке языка символов больше, чем символов , где — грамматика со следующими правилами:
Покажите, что следующая грамматика не порождает язык :
Покажите, что следующая грамматика порождает язык :
Для каждого из следующих регулярных языков постройте праволинейную грамматику и леволинейную грамматику для него:
.
.
Множество двоичных строк, не содержащих подстроку 000.
Множество двоичных строк, у которых суффикс длины десять начинается с 000.
Для каждой из следующих контекстно-свободных грамматик постройте НКА, допускающий :
.
.
.
.
.
Для каждой из следующих контекстно-свободных грамматик найдите эквивалентную регулярную грамматику:
.
.
.
.
Контекстно-свободная грамматика называется линейной, если каждое её правило имеет вид , или , или , где и . Покажите, что язык, порождаемый линейной грамматикой, не обязательно регулярен.
Для каждого из следующих языков постройте контекстно-свободную грамматику, порождающую :
.
, где обозначает число вхождений символа в строку .
.
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику для языка
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику, порождающую язык
Найдите контекстно-свободную грамматику, порождающую
Найдите контекстно-свободную грамматику, порождающую
Для обозначим через двоичное представление целого числа (без ведущих нулей). Найдите контекстно-свободную грамматику, порождающую
(Повторное рассмотрение) Найдите контекстно-свободную грамматику, порождающую
Для каждого из следующих языков постройте контекстно-свободную грамматику, порождающую этот язык:
.
.
.
.
Для каждого из следующих языков постройте контекстно-свободную грамматику, порождающую этот язык:
.
.
.
.
.
.
.
.
.
.
Для каждого из следующих языков постройте контекстно-свободную грамматику, порождающую этот язык:
.
.
.
.
.
.
.
Постройте контекстно-свободную грамматику, порождающую все регулярные выражения над алфавитом .
Для каждого из следующих языков постройте для него контекстно-свободную грамматику.
.
. (Строка является подпоследовательностью строки , где каждый и каждый — отдельная буква, если существуют , такие что для .)
.
.
.
.
.
.
Определите, принадлежит ли abaca языку , где .
Рассмотрим следующую грамматику , в которой слово вида обозначает нетерминал, а остальные слова обозначают терминалы:
Пусть — предложение
Найдите два различных дерева разбора для .
Покажите, что следующая контекстно-свободная грамматика для арифметических выражений над переменными и неоднозначна:
Найдите эквивалентную однозначную грамматику для .
Пусть обозначает число вхождений символа a в строку . Пусть .
Покажите, что оба решения из примера 3.6 для неоднозначны:
Найдите однозначную контекстно-свободную грамматику для языка .
Покажите, что контекстно-свободная грамматика с правилами
однозначна.
Пусть — контекстно-свободная грамматика с правилами
Постройте дерево разбора для .
Покажите, что эта грамматика однозначна.
Пусть — контекстно-свободная грамматика с правилами
Покажите, что неоднозначна.
Найдите однозначную контекстно-свободную грамматику, эквивалентную .
Рассмотрим грамматику с правилами
Найдите минимальное , при котором является сильной -грамматикой.
Покажите, что грамматика из примера 3.25(b) является сильной -грамматикой.
Удовлетворяет ли грамматика из примера 3.24(b) условию леммы 3.26? Удовлетворяет ли она условию сильной хотя бы для одного ?
Преобразуйте грамматику из примера 3.25 в эквивалентную ей однозначную грамматику.
Левой факторизацией грамматики называется операция замены правил на и , где и . Докажите следующие утверждения:
Грамматика неоднозначна тогда и только тогда, когда неоднозначна грамматика , полученная в результате левой факторизации грамматики .
Если после операции левой факторизации грамматика становится сильной -грамматикой, то обязательно является сильной -грамматикой. Верно ли обратное?
Для каждой из следующих контекстно-свободных грамматик определите, является ли она сильной -грамматикой. Если нет, найдите эквивалентную ей сильную LL(1)-грамматику.
.
.
Покажите, что следующие грамматики не являются сильными -грамматиками ни при каком , но при этом являются однозначными.
.
.
Рассмотрим МП-автомат , где определена следующим образом:
Определите, чему равно .
Постройте МП-автомат, принимающий язык .
Постройте МП-автомат, принимающий язык
Постройте МП-автомат, принимающий язык
Постройте МП-автомат, принимающий язык
Постройте МП-автомат , принимающий следующий язык:
Постройте МП-автомат , принимающий язык
Для каждого из следующих языков постройте МП-автомат, принимающий . Кроме того, для каждой заданной строки покажите принимающий путь вычисления вашего МП-автомата на .
.
.
.
.
.
.
.
.
.
.
acabcc.
В примере 3.32 после завершения обработки входных символов мы переходим в одно из заключительных состояний или , если стек непуст. Покажите, что эти два отдельных состояния необходимы. А именно, предположим, что мы объединили состояния и с рисунка 3.15 в единственное заключительное состояние с инструкциями
Покажите, что в этом случае новый МП-автомат будет принимать некоторые строки, не принадлежащие .
Покажите, что каждая из следующих модификаций модели автомата с магазинной памятью эквивалентна нашему исходному определению автомата с магазинной памятью в том смысле, что класс языков, принимаемых автоматами с магазинной памятью, остаётся тем же.
МП-автомату разрешается заносить в стек два стековых символа за один шаг; то есть функция переходов имеет следующий вид:
МП-автомату разрешается заносить в стек любое число стековых символов за один шаг; то есть функция переходов имеет следующий вид:
МП-автомат обязан снимать со стека верхний элемент при каждом шаге и может заносить в стек два стековых символа за один шаг; то есть функция переходов имеет следующий вид:
(Предполагается, что МП-автомат начинает работу со специальным символом $ в стеке, то есть начальная конфигурация есть ().)
МП-автомат принимает входную строку, если после завершения чтения входных символов он достигает заключительного состояния (независимо от того, пуст стек или нет); то есть МП-автомат принимает строку , если для некоторого и некоторого .
МП-автомат называется детерминированным МП-автоматом, если ни одна конфигурация не имеет более одной последующей конфигурации (однако у незаключительной конфигурации может не быть последующей). Для каждого из примеров 3.28--3.33 выполните следующее:
Определите, является ли МП-автомат, заданный в примере, детерминированным.
Если ответ на (a) отрицательный, определите, существует ли эквивалентный детерминированный МП-автомат, принимающий тот же язык. Если да, приведите ваш детерминированный МП-автомат; если нет, покажите почему. [Указание: один из способов устранить (часть) недетерминизма в МП-автомате состоит в использовании модели МП-автомата из упражнения 3(c).]
Рассмотрим контекстно-свободную грамматику с правилами
Постройте автомат с магазинной памятью , такой что .
Постройте контекстно-свободную грамматику , такую что , где — автомат с магазинной памятью из примера 3.29.
Покажите, что если — регулярный язык, а — контекстно-свободный язык, то — контекстно-свободный язык.
Покажите, что — контекстно-свободный язык.
Покажите, что если — контекстно-свободный язык, а — регулярный язык, то частное является контекстно-свободным языком.
Покажите, что если регулярен, то
контекстно-свободен.
Для каждой из следующих контекстно-свободных грамматик , следуя процедуре из теоремы 3.35, постройте автомат с магазинной памятью, допускающий язык :
.
.
Грамматика из решения 2 примера 3.6.
Однозначная грамматика из примера 3.24(b).
Для каждого из следующих автоматов с магазинной памятью , следуя процедуре из теоремы 3.37, постройте контекстно-свободную грамматику, порождающую язык :
Автомат из примера 3.30.
Автомат с рисунка 3.14(a) (для языка ).
Постройте автоматы с магазинной памятью, допускающие следующие языки:
.
.
.
.
Покажите, что если — регулярный язык, то каждый из следующих языков контекстно-свободен:
.
.
.
.
Покажите, что — контекстно-свободный язык, если контекстно-свободен, а регулярен.
Автомат с двумя магазинными памятями (2-стековый автомат) — это автомат с магазинной памятью, имеющий два стека. На каждом шаге может, помимо входного символа, читать верхние символы обоих стеков и записывать символы в оба стека. Формально, 2-стековый автомат — это шестёрка , где имеют тот же смысл, что и для обычного автомата с магазинной памятью, а — функция переходов
Пусть , и . Тогда инструкция означает, что автомат читает входной символ , верхний символ стека 1, верхний символ стека 2, а затем переходит в состояние , заменяет на и заменяет на .
Дайте формальное определение понятий конфигурации и следующей конфигурации 2-стекового автомата.
Постройте 2-стековый автомат, допускающий язык .
Постройте 2-стековый автомат, допускающий язык .
Автомат с магазинной памятью называется линейно ограниченным автоматом, если существует константа , такая что размер стека автомата в ходе вычисления на любом входе ограничен величиной . Покажите, что класс языков, допускаемых линейно ограниченными автоматами с магазинной памятью, в точности совпадает с классом контекстно-свободных языков.
Покажите, что не является контекстно-свободным языком.
Покажите, что не является контекстно-свободным языком.
Покажите, что не является контекстно-свободным языком.
Покажите, что не является контекстно-свободным языком.
Покажите, что не является контекстно-свободным.
Покажите, что если множество обладает тем свойством, что каждое его подмножество контекстно-свободно, то обязательно конечно.
Покажите, что не является контекстно-свободным.
Покажите, что не является контекстно-свободным.
Покажите, что язык является существенно неоднозначным.
Язык над одноэлементным алфавитом является контекстно-свободным тогда и только тогда, когда он регулярен.
Покажите, что не является пересечением контекстно-свободных языков над алфавитом ни для какого .
Покажите, что язык не является контекстно-свободным.
Покажите, что не является контекстно-свободным.
Докажите следующие варианты леммы о накачке для контекстно-свободных языков:
Для любого контекстно-свободного языка существует константа , такая что любую строку из с можно разложить в вид , удовлетворяющий следующим условиям:
(1) ,
(2) , и
(3) для любого , .
Для любого контекстно-свободного языка существует константа , такая что любую строку из с можно разложить в вид , удовлетворяющий следующим условиям:
(1) ,
(2) , и
(3) для любого , .
Для любого контекстно-свободного языка и любого существует константа , такая что любую строку из с можно разложить в вид , удовлетворяющий следующим условиям:
(1) , и
(2) для любого , .
Для любого контекстно-свободного языка и любого существует константа , такая что любую строку из с можно разложить в вид , удовлетворяющий следующим условиям:
(1) , и
(2) для любого , .
Для любого контекстно-свободного языка и любого существует константа , такая что любую строку из с можно разложить в вид , удовлетворяющий следующим условиям:
(1) ,
(2) , и
(3) для любого , .
Для каждого из следующих языков определите, является ли он контекстно-свободным, и обоснуйте свой ответ.
.
.
.
.
.
.
.
.
.
Далее каждую двоичную строку из будем рассматривать как двоичное представление натурального числа. Для каждого из следующих языков определите, является ли он контекстно-свободным, и обоснуйте свой ответ.
.
.
. [Указание: рассмотрите строку , где — константа из леммы о накачке.]
.
. [Указание: используя свойство замкнутости, сведите эту задачу к пункту (a) выше.]
.
.
.
Для каждого из следующих языков определите, является ли он контекстно-свободным, и обоснуйте свой ответ.
. [Указание: рассмотрите пересечение этого языка с регулярным языком . Заметьте, что тогда обязано начинаться с 101.]
.
.
.
.
.
Напомним, что обозначает число вхождений буквы в строку . Для каждого из следующих языков определите, является ли он контекстно-свободным, и обоснуйте свой ответ.
.
.
.
.
.
.
Покажите, что язык является существенно неоднозначным.
Используя лемму Парикха, покажите, что следующие языки не являются контекстно-свободными:
.
. [Указание: используйте подход примера 3.58. Сначала докажите, что в одном из порождающих множеств обязательно найдётся тройка .]
.
Пусть обозначает строку, полученную из двоичной строки заменой 0 на 1 и 1 на 0. Для каждого из следующих языков определите, является ли он контекстно-свободным, и обоснуйте свой ответ.
.
.
.
.
Вспомните операцию над языками , определённую в упражнении 2 раздела 2.6. Покажите, что контекстно-свободные языки не замкнуты относительно операции .
Покажите, что контекстно-свободные языки не замкнуты относительно операции MIN .
Рассмотрите операцию и язык . Покажите, что — контекстно-свободный язык, а — нет.
Найдите контекстно-свободный язык , такой что не является контекстно-свободным.
Пусть — контекстно-свободный язык. Докажите или опровергните следующие утверждения:
Если регулярен, то контекстно-свободен.
контекстно-свободен.
контекстно-свободен.
контекстно-свободен.
контекстно-свободен.
контекстно-свободен.
Покажите, что множество всех строк над алфавитом
представляющих корректное умножение, не является контекстно-свободным (ср. пример 2.65).
Контекстно-свободная грамматика называется линейной грамматикой, если правая часть каждого правила содержит не более одного нетерминального символа. Язык называется линейным языком, если для некоторой линейной грамматики . Покажите, что для любого линейного языка существует константа , такая что любую строку из длины можно разложить в вид , удовлетворяющий следующим условиям:
(1) .
(2) .
(3) для всех .
Покажите, что следующие языки не являются линейными.
.
.
.