Автоматы с магазинной памятью и контекстно-свободные грамматики
[13/46%]Рассмотрим контекстно-свободную грамматику с правилами
Постройте автомат с магазинной памятью , такой что .
Постройте контекстно-свободную грамматику , такую что , где — автомат с магазинной памятью из примера 3.29.
Покажите, что если — регулярный язык, а — контекстно-свободный язык, то — контекстно-свободный язык.
Покажите, что — контекстно-свободный язык.
Покажите, что если — контекстно-свободный язык, а — регулярный язык, то частное является контекстно-свободным языком.
Покажите, что если регулярен, то
контекстно-свободен.
Для каждой из следующих контекстно-свободных грамматик , следуя процедуре из теоремы 3.35, постройте автомат с магазинной памятью, допускающий язык :
.
.
Грамматика из решения 2 примера 3.6.
Однозначная грамматика из примера 3.24(b).
(Теорема 3.35: Для любой контекстно-свободной грамматики существует автомат с магазинной памятью , такой что . Построение: на входе сначала помещаем в стек начальный символ , затем моделируем левый вывод строки грамматикой — на каждом шаге, если верхний символ стека — нетерминал , выбираем правило и заменяем на в стеке (символы помещаются по одному с помощью дополнительных временных состояний, поскольку автомат может поместить в стек лишь один символ за один шаг); если верхний символ — терминал , пытаемся сопоставить его со следующим входным символом, отвергая при несовпадении и иначе удаляя его из стека. Вход допускается ровно тогда, когда стек и вход одновременно исчерпаны.)
Для каждого из следующих автоматов с магазинной памятью , следуя процедуре из теоремы 3.37, постройте контекстно-свободную грамматику, порождающую язык :
Автомат из примера 3.30.
Автомат с рисунка 3.14(a) (для языка ).
(Теорема 3.37: Для любого автомата с магазинной памятью существует контекстно-свободная грамматика , такая что . Построение: сначала преобразуем в эквивалентный автомат , который всегда просматривает верхний символ стека (на первом шаге помещаем в стек новый символ дна стека $, а также разрешаем помещать в стек два символа за один шаг, чтобы по-прежнему можно было заменить один символ). Затем строим с нетерминалами — по одному на каждую пару состояний и символ стека , — призванными порождать в точности те строки , для которых может перейти из в . Правила грамматики : (1) для каждой инструкции с добавляем для каждого состояния ; (2) для каждой инструкции с (символ, помещаемый поверх ) добавляем для всех состояний ; и (3) для каждой инструкции (снятие со стека без добавления новых символов) добавляем . Начальный символ грамматики — это , где и — новые начальное и конечное состояния автомата .)
Постройте автоматы с магазинной памятью, допускающие следующие языки:
.
.
- .
- .
Покажите, что если — регулярный язык, то каждый из следующих языков контекстно-свободен:
.
.
- .
- .
Покажите, что — контекстно-свободный язык, если контекстно-свободен, а регулярен.
Автомат с двумя магазинными памятями (2-стековый автомат) — это автомат с магазинной памятью, имеющий два стека. На каждом шаге может, помимо входного символа, читать верхние символы обоих стеков и записывать символы в оба стека. Формально, 2-стековый автомат — это шестёрка , где имеют тот же смысл, что и для обычного автомата с магазинной памятью, а — функция переходов
Пусть , и . Тогда инструкция означает, что автомат читает входной символ , верхний символ стека 1, верхний символ стека 2, а затем переходит в состояние , заменяет на и заменяет на .
Дайте формальное определение понятий конфигурации и следующей конфигурации 2-стекового автомата.
Постройте 2-стековый автомат, допускающий язык .
Постройте 2-стековый автомат, допускающий язык .
Автомат с магазинной памятью называется линейно ограниченным автоматом, если существует константа , такая что размер стека автомата в ходе вычисления на любом входе ограничен величиной . Покажите, что класс языков, допускаемых линейно ограниченными автоматами с магазинной памятью, в точности совпадает с классом контекстно-свободных языков.