Нажимной автомат
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2022 г. ) |
В теории вычислений , разделе теоретической информатики , автомат с выталкивающим устройством ( КПК ) является тип автомата , использующий стек .
Автоматы с выталкиванием используются в теориях о том, что могут вычислять машины. Они более эффективны, чем конечные автоматы , но менее эффективны, чем машины Тьюринга (см. ниже ). Детерминированные автоматы с выталкиванием вниз могут распознавать все детерминированные контекстно-свободные языки , в то время как недетерминированные могут распознавать все контекстно-свободные языки , причем первые часто используются при парсеров разработке .
Термин «нажатие вниз» относится к тому факту, что стопку можно рассматривать как «нажатую вниз», как диспенсер подносов в кафетерии, поскольку операции никогда не работают с элементами, кроме верхнего элемента. Стековой автомат , напротив, разрешает доступ к более глубоким элементам и операции с ними. Стековые автоматы могут распознавать строго больший набор языков, чем автоматы с проталкиванием вниз. [1] Автомат с вложенным стеком обеспечивает полный доступ, а также позволяет составным значениям представлять собой целые подстеки, а не просто отдельные конечные символы.
Неофициальное описание
[ редактировать ]Конечный автомат просто смотрит на входной сигнал и текущее состояние: у него нет стека для работы, и поэтому он не может получить доступ к предыдущим значениям входа. Он может только выбрать новое состояние в результате перехода. Автомат с выталкиванием (PDA) отличается от конечного автомата двумя способами:
- Он может использовать вершину стека, чтобы решить, какой переход предпринять.
- Он может манипулировать стеком в рамках выполнения перехода.
Автомат с выталкиванием считывает заданную входную строку слева направо. На каждом этапе он выбирает переход, индексируя таблицу по входному символу, текущему состоянию и символу наверху стека. Автомат с опусканием вниз также может манипулировать стеком в рамках выполнения перехода. Манипуляция может заключаться в перемещении определенного символа на вершину стека или в снятии его с вершины стека. Альтернативно автомат может игнорировать стек и оставить его как есть.
В совокупности: учитывая входной символ, текущее состояние и символ стека, автомат может следовать за переходом в другое состояние и при необходимости манипулировать (перемещать или извлекать) стек.
Если в каждой ситуации возможно не более одного такого переходного действия, то автомат называется детерминированным автоматом с выталкиванием (DPDA) . Вообще, если возможно несколько действий, то автомат называется общим , или недетерминированным , КПК . Данная входная строка может привести недетерминированный автомат с выталкиванием к одной из нескольких последовательностей конфигурации; если один из них приводит к принятию конфигурации после прочтения полной входной строки, говорят, что последняя принадлежит языку, принятому автоматом .
Формальное определение
[ редактировать ]Мы используем стандартные обозначения формального языка: обозначает набор строк конечной длины в алфавите и обозначает пустую строку .
КПК формально определяется как кортеж из семи элементов:
где
- это конечное множество состояний
- — конечное множество, которое называется входным алфавитом
- это конечное множество, которое называется алфавитом стека
- является конечным подмножеством , переходное соотношение
- это начальное состояние
- это начальный символ стека
- это набор принимающих состояний
Элемент представляет собой переход . Это имеет предполагаемый смысл, который , в штате , на входе и с как самый верхний символ стека, может читаться , измените состояние на , поп , заменив его, нажав . Компонент отношения перехода используется для формализации того, что КПК может либо прочитать букву из ввода, либо продолжить, оставив ввод нетронутым. [ нужна ссылка ]
Во многих текстах [2] : 110 отношение перехода заменяется (эквивалентной) формализацией, где
- — функция перехода , отображающая на конечные подмножества
Здесь содержит все возможные действия в состоянии с в стеке во время чтения на входе. Один пишет например именно тогда, когда потому что . Обратите внимание, что конечность в этом определении является существенной.
Вычисления
Для формализации семантики опускающего автомата вводится описание текущей ситуации. Любой тройной кортеж называется мгновенным описанием (ID) , который включает в себя текущее состояние, часть входной ленты, которая не была прочитана, и содержимое стека (самый верхний символ, записанный первым). Переходное отношение определяет ступенчатое соотношение из по мгновенным описаниям. Для обучения существует шаг , для каждого и каждый .
В целом автоматы с выталкиванием являются недетерминированными, что означает, что в данном мгновенном описании может быть несколько возможных шагов. Любой из этих шагов может быть выбран в расчете. Согласно приведенному выше определению, на каждом этапе всегда извлекается один символ (верхняя часть стека), заменяя его необходимым количеством символов. Как следствие, ни один шаг не определен, когда стек пуст.
Вычисления автомата с понижением уровня представляют собой последовательность шагов. Вычисление начинается в исходном состоянии с начальным символом стека в стеке и строка на входной ленте, то есть с первоначальным описанием . Есть два режима приема. Автомат с выталкиванием либо принимает окончательное состояние, что означает, что после прочтения входных данных автомат достигает принимающего состояния (в ), или принимает пустой стек ( ), что означает, что после прочтения входных данных автомат очищает свой стек. Первый режим приема использует внутреннюю память (состояние), второй — внешнюю память (стек).
Формально определяют
- с и (конечное состояние)
- с (пустая стопка)
Здесь представляет собой рефлексивное и транзитивное замыкание ступенчатого отношения означает любое количество последовательных шагов (ноль, один или более).
Для каждого отдельного автомата с понижающей передачей эти два языка не должны иметь никакого отношения: они могут быть равны, но обычно это не так. Спецификация автомата должна также включать предполагаемый режим приемки. При рассмотрении всех автоматов с выталкиванием оба условия приемки определяют одно и то же семейство языков.
Теорема. Для каждого понижающего автомата можно построить автомат с выталкивающим устройством такой, что , и наоборот, для каждого автомата с понижающей передачей можно построить автомат с выталкивающим устройством такой, что
Пример
[ редактировать ]Ниже приводится формальное описание КПК, распознающего язык. по окончательному состоянию:
, где
- говорится:
- входной алфавит:
- алфавит стека:
- начальное состояние:
- начальный символ стека: Z
- принимающие государства:
Переходное отношение состоит из следующих шести инструкций:
- ,
- ,
- ,
- ,
- , и
- .
Проще говоря, первые две инструкции говорят, что в состоянии p символ 0 каждый раз, когда считывается один символ A. , в стек помещается Установка символа A поверх другого символа A формализуется как замена вершины A на AA (аналогично для помещения символа A поверх Z ).
Третья и четвертая инструкции говорят, что в любой момент автомат может перейти из состояния p в состояние q .
Пятая инструкция говорит, что в состоянии q символа 1 для каждого прочитанного один A. выталкивается
что машина может перейти из состояния q в состояние r только тогда, когда стек состоит из одного Z. Наконец, шестая инструкция говорит ,
Кажется, не существует общепринятого представления для КПК. Здесь мы изобразили инструкцию ребром из состояния p в состояние q, отмеченным (прочитайте a ; замените A на ).
Объяснение
[ редактировать ]Ниже показано, как приведенный выше КПК выполняет вычисления на различных входных строках. Индекс M от символа шага здесь опущено.
- Входная строка = 0011. В зависимости от момента перехода из состояния p в состояние q выполняются различные вычисления. Только один из них принимает.
Конечное состояние — принятие, но ввод не принимается таким образом, поскольку он не был прочитан.
Дальнейшие действия невозможны.
Принятие вычислений: заканчивается принятием состояния, пока весь ввод прочитан.
- Входная строка = 00111. И снова происходят различные вычисления. Ничто из этого не принимает.
Конечное состояние — принятие, но ввод не принимается таким образом, поскольку он не был прочитан.
Дальнейшие действия невозможны.
Конечное состояние — принятие, но ввод не принимается таким образом, поскольку он не был (полностью) прочитан.
Контекстно-свободные языки
[ редактировать ]Любая контекстно-свободная грамматика может быть преобразована в эквивалентный недетерминированный автомат с выталкиванием вниз. Процесс вывода грамматики моделируется крайним левым способом. Когда грамматика перезаписывает нетерминал, КПК берет самый верхний нетерминал из своего стека и заменяет его правой частью грамматического правила ( expand ). Там, где грамматика генерирует терминальный символ, КПК считывает символ из ввода, когда он является самым верхним символом в стеке ( соответствие ). В каком-то смысле стек КПК содержит необработанные данные грамматики, что соответствует предварительному обходу дерева вывода.
Технически, учитывая контекстно-свободную грамматику, КПК имеет единственное состояние, 1, и его отношение перехода строится следующим образом.
- для каждого правила ( расширять )
- для каждого символа терминала ( соответствовать )
КПК принимает пустой стек. Его начальный символ стека является начальным символом грамматики. [3]
Для контекстно-свободной грамматики в нормальной форме Грейбаха определение (1,γ) ∈ δ(1, a , A ) для каждого грамматического правила A → a γ также дает эквивалентный недетерминированный автомат с выталкиванием вниз. [2] : 115
Обратно, найти грамматику для данного КПК не так-то просто. Хитрость заключается в том, чтобы закодировать два состояния КПК в нетерминалах грамматики.
Теорема. Для каждого понижающего автомата можно построить контекстно-свободную грамматику такой, что . [2] : 116
Язык строк, принимаемый детерминированным автоматом с выталкиванием (DPDA), называется детерминированным контекстно-свободным языком . Не все контекстно-свободные языки являются детерминированными. [примечание 1] Как следствие, DPDA является строго более слабым вариантом PDA. Даже для обычных языков существует проблема резкого увеличения размера: для любой рекурсивной функции и для сколь угодно больших целых чисел , есть КПК размером описание регулярного языка, наименьший DPDA которого имеет как минимум государства. [5] Для многих нерегулярных КПК любой эквивалентный DPDA потребует неограниченного числа состояний.
Конечный автомат с доступом к двум стекам — более мощное устройство, эквивалентное по мощности машине Тьюринга . [2] : 171 Линейный ограниченный автомат — это устройство, которое более мощно, чем автомат с выталкиванием, но уступает машине Тьюринга. [примечание 2]
Машины Тьюринга
[ редактировать ]Автомат с выталкиванием вычислительно эквивалентен «ограниченной» машине Тьюринга (TM) с двумя лентами, которая ограничена следующим образом: на первой ленте TM может только читать входные данные и перемещаться слева направо (он не может вносить изменения). ). На второй ленте он может только «пересылать» и «извлекать» данные. Или, что то же самое, он может читать, писать и перемещаться влево и вправо с ограничением: единственное действие, которое он может выполнять на каждом шаге, — это либо удалить самый левый символ в строке (pop), либо добавить дополнительный символ слева слева. -самый символ в строке (push).
То, что КПК слабее ТМ, может быть связано с тем, что процедура pop удаляет некоторые данные. Чтобы сделать КПК таким же сильным, как ТМ, нам нужно где-то сохранить данные, потерянные из-за «поп». Мы можем добиться этого, введя второй стек. В модели TM КПК, описанной в последнем абзаце, это эквивалентно TM с тремя лентами, где первая лента является входной лентой только для чтения, а 2-я и 3-я ленты представляют собой ленты «push and pop» (стек). . Для того, чтобы такой КПК имитировал любой заданный ТМ, мы подаем вход КПК на первую ленту, оставляя при этом оба стека пустыми. Затем он передает весь входной сигнал с входной ленты в первый стек. Когда весь ввод переносится в 1-й стек, мы действуем как обычный TM, где перемещение вправо по ленте равнозначно извлечению символа из 1-го стека и помещению символа (возможно, обновленного) во второй стек, и перемещение влево соответствует извлечению символа из второго стека и помещению символа (возможно, обновленного) в первый стек. Таким образом, у нас есть КПК с двумя стеками, который может имитировать любую ТМ.
Обобщение
[ редактировать ]Обобщенный автомат с выталкиванием вниз (GPDA) — это КПК, который записывает в стек всю строку некоторой известной длины или удаляет всю строку из стека за один шаг.
GPDA формально определяется как кортеж из шести человек:
где , и определяются так же, как и КПК.
- :
является функцией перехода.
Правила вычислений для GPDA такие же, как и для PDA, за исключением того, что 'песок теперь это строки, а не символы.
GPDA и PDA эквивалентны в том смысле, что если язык распознается КПК, он также распознается GPDA, и наоборот.
Можно сформулировать аналитическое доказательство эквивалентности GPDA и PDA, используя следующее моделирование:
Позволять быть переходом GPDA
где .
Постройте следующие переходы для КПК:
Стековые автоматы
[ редактировать ]В качестве обобщения автоматов с выталкиванием вниз Гинзбург, Грейбах и Харрисон (1967) исследовали стековые автоматы , которые могут дополнительно делать шаг влево или вправо во входной строке (окруженный специальными символами конечного маркера для предотвращения выскальзывания), а также шагать вверх или вниз по входной строке. стек в режиме только для чтения. [6] [7] Стековой автомат называется нестирающим, если он никогда не извлекается из стека. Класс языков, принимаемый недетерминированными, нестиранными стековыми автоматами, — это NSPACE ( n 2 ), который является расширенным набором контекстно-зависимых языков . [1] Класс языков, принимаемый детерминированными нестиранными стековыми автоматами, - это DSPACE ( n ⋅log( n )). [1]
Поочередно опускающиеся автоматы
[ редактировать ]Попеременный автомат с выталкиванием (APDA) — это автомат с выталкиванием с набором состояний
- где .
государства в и называются экзистенциальными соответственно. универсальный . В экзистенциальном состоянии APDA недетерминированно выбирает следующее состояние и принимает его, если хотя бы одно из результирующих вычислений принимает его. В универсальном состоянии APDA переходит ко всем следующим состояниям и принимает, если все результирующие вычисления принимаются.
Модель была представлена Чандрой , Козеном и Стокмейером . [8] Ладнер , Липтон и Стокмейер [9] доказал, что эта модель эквивалентна EXPTIME , т.е. язык принимается некоторым APDA тогда и только тогда , когда он может быть определен с помощью алгоритма экспоненциального времени.
Айзиковиц и Камински [10] представили синхронизированные чередующиеся автоматы с выталкиванием (SAPDA), которые эквивалентны конъюнктивным грамматикам точно так же, как недетерминированные PDA эквивалентны контекстно-свободным грамматикам.
См. также
[ редактировать ]- Контекстно-свободная грамматика
- Счётчик-автомат
- Конечный автомат
- Автомат очереди
- Штабелируемая машина
Примечания
[ редактировать ]- ^ Набор битовых палиндромов четной длины не может быть распознан детерминированным КПК, но это контекстно-свободный язык с грамматикой S → ε | 0 С 0 | 1 С 1. [4]
- ^ Линейные ограниченные автоматы являются акцепторами класса контекстно-зависимых языков, [2] : 225 который является собственным суперклассом контекстно-свободных языков и собственным подклассом распознаваемых по Тьюрингу (т.е. рекурсивно перечислимых ) языков. [2] : 228
Ссылки
[ редактировать ]- ^ Jump up to: а б с Джон Э. Хопкрофт; Джеффри Д. Уллман (1967). «Нестирающие стек-автоматы» . Журнал компьютерных и системных наук . 1 (2): 166–186. дои : 10.1016/s0022-0000(67)80013-8 .
- ^ Jump up to: а б с д и ж Джон Э. Хопкрофт и Джеффри Д. Ульман (1979). Введение в теорию автоматов, языки и вычисления . Ридинг/Массачусетс: Аддисон-Уэсли. ISBN 0-201-02988-Х .
- ^ «Пушдаун-автоматы» . www.cs.odu.edu . Проверено 7 апреля 2024 г.
- ^ Джон Э. Хопкрофт; Раджив Мотвани; Джеффри Д. Уллман (2003). Введение в теорию автоматов, языки и вычисления . Эддисон Уэсли. Здесь: п.6.4.3, стр.249
- ^ Хольцер, Маркус; Кутриб, Мартин (2019). «Нерекурсивные компромиссы есть «почти везде» ». Вычисления с предвидением и промышленностью . 11558 : 25–36. дои : 10.1007/978-3-030-22996-2_3 . Это следует из цитируемой [22, предложение 7] и сформулированного наблюдения о том, что любой детерминированный автомат с выталкиванием может быть преобразован в эквивалентный конечный автомат [ объяснить ] не более чем двукратного экспоненциального размера.
- ^ Сеймур Гинзбург, Шейла А. Грейбах и Майкл А. Харрисон (1967). «Стековые автоматы и компиляция» . Дж. АКМ . 14 (1): 172–201. дои : 10.1145/321371.321385 .
- ^ Сеймур Гинзбург, Шейла А. Грейбах и Майкл А. Харрисон (1967). «Односторонний стек-автомат» . Дж. АКМ . 14 (2): 389–418. дои : 10.1145/321386.321403 .
- ^ Чандра, Ашок К.; Козен, Декстер К.; Стокмейер, Ларри Дж. (1981). «Чередование» . Журнал АКМ . 28 (1): 114–133. дои : 10.1145/322234.322243 . ISSN 0004-5411 .
- ^ Ладнер, Ричард Э.; Липтон, Ричард Дж.; Стокмейер, Ларри Дж. (1984). «Попеременные автоматы с выталкиванием и стекированием». SIAM Journal по вычислительной технике . 13 (1): 135–155. дои : 10.1137/0213010 . ISSN 0097-5397 .
- ^ Айзиковиц, Тамар; Камински, Майкл (2011). «LR (0) Конъюнктивные грамматики и детерминированные синхронизированные автоматы с переменным нажатием». Информатика – теория и приложения . Конспекты лекций по информатике. Том. 6651. стр. 345–358. дои : 10.1007/978-3-642-20712-9_27 . ISBN 978-3-642-20711-2 . ISSN 0302-9743 .
- Майкл Сипсер (1997). Введение в теорию вычислений . Издательство ПВС. ISBN 0-534-94728-Х . Раздел 2.2: Автоматы с опусканием вниз, стр. 101–114.
- Жан-Мишель Отебер, Жан Берстель, Люк Боассон, Контекстно-свободные языки и автоматы с опусканием вниз , в: Г. Розенберг, А. Саломаа (ред.), Справочник по формальным языкам, Vol. 1, Springer-Verlag, 1997, 111–174.