Выталкивающий автомат - Pushdown automaton

Комбинационная логикаКонечный автоматВыталкивающий автоматМашина ТьюрингаТеория автоматовAutomata theory.svg
Об этом изображении
Классы автоматов
(При нажатии на каждый слой открывается статья на эту тему)

в теория вычислений, филиал теоретическая информатика, а выталкивающий автомат (КПК) является разновидностью автомат в котором работает куча.

Автоматы выталкивания используются в теориях о том, что может быть вычислено машинами. Они более способные, чем конечные автоматы но менее способный, чем Машины Тьюринга.Детерминированные автоматы выталкивания могу признать все детерминированные контекстно-свободные языки в то время как недетерминированные могут распознать все контекстно-свободные языки, причем первый часто используется в парсер дизайн.

Термин «выталкивание» относится к тому факту, что куча может рассматриваться как «опущенный вниз», как раздающий подносы в кафетерии, поскольку операции никогда не работают с другими элементами, кроме верхнего элемента. А стековый автомат, напротив, разрешает доступ к более глубоким элементам и операции с ними. Стек-автоматы могут распознавать строго больший набор языков, чем автоматические выталкивающие.[1]А автомат вложенного стека обеспечивает полный доступ, а также позволяет составленным значениям быть целыми субстеками, а не просто отдельными конечными символами.

Неформальное описание

Схема выталкивающего автомата

А конечный автомат просто смотрит на входной сигнал и текущее состояние: у него нет стека для работы. Он выбирает новое состояние, результат следования за переходом. А автомат выталкивания (КПК) отличается от конечного автомата двумя способами:

  1. Он может использовать верхнюю часть стека, чтобы решить, какой переход выбрать.
  2. Он может управлять стеком как часть выполнения перехода.

Автомат выталкивания читает заданную строку ввода слева направо. На каждом шаге он выбирает переход, индексируя таблицу по входному символу, текущему состоянию и символу наверху стека. Автомат выталкивания также может управлять стеком как часть выполнения перехода. Манипуляция может заключаться в перемещении определенного символа в верхнюю часть стека или в выталкивании из верхней части стека. В качестве альтернативы автомат может игнорировать стек и оставить его как есть.

Сложить вместе: учитывая входной символ, текущее состояние и символ стека, автомат может следовать переходу в другое состояние и при необходимости манипулировать (толкать или выталкивать) стеком.

Если в каждой ситуации возможно не более одного такого действия перехода, то автомат называется детерминированный автомат выталкивания (DPDA). В общем случае, если возможны несколько действий, автомат называется Общее, или же недетерминированный, КПК. Данная входная строка может приводить недетерминированный автомат выталкивания к одной из нескольких последовательностей конфигурации; если один из них приводит к принятию конфигурации после прочтения всей входной строки, последняя считается принадлежащей язык, принятый автоматом.

Формальное определение

Мы используем стандартные обозначения формального языка: обозначает множество конечной длины струны по алфавиту и обозначает пустой строкой.

КПК формально определяется как набор из семи:

куда

  • конечный набор состояния
  • конечное множество, которое называется вводить алфавит
  • конечное множество, которое называется сложить алфавит
  • конечное подмножество , то переходное отношение
  • это начальное состояние
  • это начальный символ стека
  • это набор принимающие государства

Элемент это переход . Имеет предполагаемое значение, что , в состоянии , на входе и с как самый верхний символ стека, может читаться , измените состояние на , поп , заменив его, нажав . В Компонент отношения перехода используется для формализации того, что КПК может либо прочитать букву из ввода, либо продолжить, оставив ввод нетронутым.[нужна цитата ]

Во многих текстах[2]:110 отношение перехода заменяется (эквивалентной) формализацией, где

  • это функция перехода, отображение на конечные подмножества

Здесь содержит все возможные действия в состоянии с в стеке при чтении на входе. Например один пишет именно когда потому что . Обратите внимание, что конечный в этом определение существенно.

Расчеты

шаг выталкивающего автомата

В целях формализации семантики автомата выталкивания вводится описание текущей ситуации. Любая тройка называется мгновенным описанием (ID) , который включает текущее состояние, часть входной ленты, которая не была прочитана, и содержимое стека (самый верхний символ, записанный первым). Отношение перехода определяет шаг-отношение из по мгновенным описаниям. Для инструкции есть шаг , для каждого и каждый .

В общем случае автоматы выталкивания недетерминированы, что означает, что в данном мгновенном описании может быть несколько возможных шагов. Любой из этих шагов может быть выбран в вычислении. С приведенным выше определением на каждом шаге всегда выталкивается один символ (верх стека), заменяя его таким количеством символов, которое необходимо. Как следствие, шаг не определяется, когда стек пуст.

Вычисления автомата выталкивания представляют собой последовательность шагов. Вычисление начинается в начальном состоянии с начальным символом стека в стеке и строка на входной ленте, таким образом, с начальным описанием . Есть два режима принятия. Автомат выталкивания принимает либо в конечном состоянии, что означает, что после чтения его ввода автомат достигает состояния приема (в ), либо принимает пустой стек (), что означает, что после чтения ввода автомат опустошает свой стек. Первый режим приема использует внутреннюю память (состояние), второй - внешнюю память (стек).

Формально определяется

  1. с и (конечное состояние)
  2. с (пустая стопка)

Здесь представляет рефлексивный и переходное закрытие шагового отношения означает любое количество последовательных шагов (ноль, один или несколько).

Для каждого отдельного выталкивающего автомата эти два языка не должны иметь никакого отношения: они могут быть равны, но обычно это не так. Спецификация автомата также должна включать предполагаемый режим приемки. Применительно ко всем автоматам выталкивания оба условия приема определяют одно и то же семейство языков.

Теорема. Для каждого автомата выталкивания можно построить выталкивающий автомат такой, что , и наоборот, для каждого автомата выталкивания можно построить выталкивающий автомат такой, что

Пример

Ниже приводится формальное описание КПК, распознающего язык. по конечному состоянию:

КПК для
(по конечному состоянию)

, куда

  • состояния:
  • входной алфавит:
  • сложить алфавит:
  • начальное состояние:
  • символ начала стека: Z
  • принимающие государства:

Отношение перехода состоит из следующих шести инструкций:

,
,
,
,
, и
.

На словах первые две инструкции говорят, что в состоянии п в любое время символ 0 читается, один А помещается в стек. Толкающий символ А поверх другого А оформляется как замена верхней А к AA (и аналогично для нажатия символа А на вершине Z).

Третья и четвертая инструкции говорят, что в любой момент автомат может выйти из состояния п заявить q.

Пятая инструкция говорит, что в состоянии q, для каждого символа 1 читать, один А выскакивает.

Наконец, шестая инструкция говорит, что автомат может перейти из состояния q к принимающему государству р только когда стек состоит из одного Z.

Вроде бы нет общепринятого представления для КПК. Здесь мы изобразили инструкцию по краю государства п заявить q помеченный (читать а; заменять А к ).

Понимание вычислительного процесса

принятие вычислений для 0011

Ниже показано, как упомянутый выше КПК вычисляет различные входные строки. Нижний индекс M от символа шага здесь опущено.

  1. Входная строка = 0011. Существуют различные вычисления, в зависимости от момента перехода из состояния. п заявить q сделан. Только один из них принимает.

    1. Конечным состоянием является принятие, но ввод таким образом не принимается, поскольку он не был прочитан.

    2. Дальнейшие шаги невозможны.

    3. Принятие вычисления: завершается в состоянии принятия, пока считан полный ввод.
  2. Входная строка = 00111. Опять же, есть разные вычисления. Ни один из них не принимает.

    1. Конечным состоянием является принятие, но ввод таким образом не принимается, поскольку он не был прочитан.

    2. Дальнейшие шаги невозможны.

    3. Конечным состоянием является принятие, но ввод не принимается таким образом, поскольку он не был (полностью) прочитан.

КПК и контекстно-свободные языки

Каждый контекстно-свободная грамматика может быть преобразован в эквивалентный недетерминированный автомат выталкивания. Процесс образования грамматики моделируется крайним левым образом. Если грамматика перезаписывает нетерминал, КПК берет самый верхний нетерминал из своего стека и заменяет его правой частью грамматического правила (расширять). Если грамматика генерирует терминальный символ, КПК считывает символ из ввода, когда это самый верхний символ в стеке (матч). В некотором смысле стек КПК содержит необработанные данные грамматики, соответствующие предварительному обходу дерева вывода.

Технически, учитывая контекстно-свободную грамматику, КПК имеет единственное состояние, 1, и его отношение перехода строится следующим образом.

  1. для каждого правила (расширять)
  2. для каждого терминального символа (матч)

КПК принимает пустой стек. Его начальный символ стека - это начальный символ грамматики.[нужна цитата ]

Для контекстно-свободной грамматики в Нормальная форма Грейбаха, определяя (1, γ) ∈ δ (1,а,А) для каждого правила грамматики Ааγ также дает эквивалентный недетерминированный автомат выталкивания.[2]:115

Наоборот, найти грамматику для данного КПК не так-то просто. Хитрость заключается в том, чтобы закодировать два состояния КПК в нетерминалах грамматики.

Теорема. Для каждого автомата выталкивания можно построить контекстно-свободную грамматику такой, что .[2]:116

Язык строк, принятый детерминированным автоматом с выталкиванием вниз, называется детерминированный контекстно-свободный язык. Не все контекстно-свободные языки детерминированы.[примечание 1] Как следствие, DPDA - строго более слабый вариант КПК. и не существует алгоритма преобразования КПК в эквивалентный DPDA, если такой DPDA существует.[нужна цитата ]

Конечный автомат с доступом к двум стекам - более мощное устройство, по мощности эквивалентное Машина Тьюринга.[2]:171 А линейно ограниченный автомат это устройство, которое более мощно, чем автомат с выталкиванием, но меньше, чем машина Тьюринга.[заметка 2]

Обобщенный автомат выталкивания (GPDA)

GPDA - это КПК, который записывает всю строку известной длины в стек или удаляет всю строку из стека за один шаг.

GPDA формально определяется как набор из шести:

куда , и определяются так же, как и КПК.

:

- функция перехода.

Правила вычислений для GPDA такие же, как для КПК, за исключением того, что 'песок теперь строки вместо символов.

GPDA и КПК эквивалентны в том смысле, что если язык распознается КПК, он также распознается GPDA, и наоборот.

Можно сформулировать аналитическое доказательство эквивалентности GPDA и КПК, используя следующую симуляцию:

Позволять быть переходом GPDA

куда .

Постройте для КПК следующие переходы:

Стек автомат

В качестве обобщения автоматов выталкивания вниз Гинзбург, Грейбах и Харрисон (1967) исследовали стековые автоматы, который может дополнительно перемещаться влево или вправо во входной строке (окруженный специальными символами конечных маркеров для предотвращения выскальзывания) и перемещаться вверх или вниз по стеку в режиме только для чтения.[4][5] Стек-автомат называется не стирающий если он никогда не выскакивает из стека. Класс языков, принимаемых недетерминированными, нестирающими стековыми автоматами, является NSPACE (п2), который является надмножеством контекстно-зависимые языки.[1] Класс языков, приемлемых для детерминированных нестирающихся стековых автоматов, равен DSPACE (п⋅log (п)).[1]

Автоматические чередующиеся выталкиватели

An автомат попеременного опускания (APDA) - автомат выталкивания с набором состояний

  • куда .

Государства в и называются экзистенциальный соотв. универсальный. В экзистенциальном состоянии APDA недетерминированно выбирает следующее состояние и принимает, если хотя бы один итоговых вычислений принимает. В универсальном состоянии APDA переходит во все следующие состояния и принимает, если все полученные вычисления принимают.

Модель была представлена Чандра, Козен и Stockmeyer.[6] Ladner, Lipton и Stockmeyer[7] доказано, что эта модель эквивалентна EXPTIME т.е. язык принят некоторыми APDA если и только если, это может быть решено с помощью алгоритма экспоненциального времени.

Айзиковиц и Камински[8] представил синхронизированные автоматы с попеременным опусканием (SAPDA), которые эквивалентны конъюнктивные грамматики так же, как недетерминированные КПК эквивалентны контекстно-свободным грамматикам.

Смотрите также

Примечания

  1. ^ Набор четной длины палиндромы битов не может быть распознан детерминированным КПК, но это контекстно-свободный язык, с грамматика S → ε | 0S0 | 1S1.[3]
  2. ^ Линейно ограниченные автоматы являются акцепторами класса контекстно-зависимых языков,[2]:225 который является надлежащим суперклассом контекстно-свободных языков и надлежащим подклассом распознаваемых по Тьюрингу языков (т.е. рекурсивно перечислимый ) языков.[2]:228

Рекомендации

  1. ^ а б c Джон Э. Хопкрофт; Джеффри Д. Ульман (1967). «Неизменные стековые автоматы». Журнал компьютерных и системных наук. 1 (2): 166–186. Дои:10.1016 / s0022-0000 (67) 80013-8.
  2. ^ а б c d е ж Джон Э. Хопкрофт и Джеффри Д. Уллман (1979). Введение в теорию автоматов, языки и вычисления. Ридинг / МА: Эддисон-Уэсли. ISBN  0-201-02988-X.
  3. ^ Джон Э. Хопкрофт; Раджив Мотвани; Джеффри Д. Ульман (2003). Введение в теорию автоматов, языки и вычисления. Эддисон Уэсли. Здесь: раздел 6.4.3, стр.249
  4. ^ Сеймур Гинзбург, Шейла А. Грейбах и Майкл А. Харрисон (1967). «Стек-автоматы и компиляция». J. ACM. 14 (1): 172–201. Дои:10.1145/321371.321385.
  5. ^ Сеймур Гинзбург, Шейла А. Грейбах и Майкл А. Харрисон (1967). «Автомат с односторонним стеком». J. ACM. 14 (2): 389–418. Дои:10.1145/321386.321403.
  6. ^ Chandra, Ashok K .; Kozen, Dexter C .; Стокмейер, Ларри Дж. (1981). «Чередование». Журнал ACM. 28 (1): 114–133. Дои:10.1145/322234.322243. ISSN  0004-5411.
  7. ^ Ladner, Ричард Э .; Липтон, Ричард Дж .; Стокмейер, Ларри Дж. (1984). «Чередование автоматов выталкивания и стека». SIAM Журнал по вычислениям. 13 (1): 135–155. Дои:10.1137/0213010. ISSN  0097-5397.
  8. ^ Айзиковиц, Тамар; Камински, Майкл (2011). "LR (0) Конъюнктивные грамматики и детерминированные синхронизированные чередующиеся автоматические выталкивания". Компьютерные науки - теория и приложения. Конспект лекций по информатике. 6651. С. 345–358. Дои:10.1007/978-3-642-20712-9_27. ISBN  978-3-642-20711-2. ISSN  0302-9743.

внешняя ссылка

  • JFLAP, тренажер для нескольких типов автоматов, включая недетерминированные автоматы с выталкиванием
  • CoAn, еще один симулятор для нескольких типов машин, включая недетерминированные автоматы с выталкиванием (C ++, Windows, Linux, MacOS)