
Какую работу нужно написать?
Магазинные автоматы
Магазинный автомат - это односторонний в общем случае недетерминированный распознаватель, у которого в качестве вспомогательной памяти используется магазин (рис.1.16). Магазин можно представить в виде строки символов, правый символ которой называют дном магазина, а левый вершиной магазина. Из строки можно считать в определенный момент времени только символ вершины магазина. Причем при считывании символа он удаляется из магазина и вершиной магазина становится следующий (правый) по порядку символ. При записи символов в магазин они помещается слева от вершины магазина и в дальнейшем последний из них рассматривается как новая вершина магазина.
Магазинный
автомат или автомат с магазинной памятью
(МП - автомат) - это семерка
,
где Q - конечное множество состояний;
T - конечный входной алфавит; M - конечный
алфавит магазинных символов (стековый
алфавит);
- начальное состояние автомата;
- начальный символ магазина;
- конечное множество заключительных
состояний; t - функция переходов
отображает тройки, образованные
состоянием, текущим входным символом
на входной ленте или пустым символом
и вершиной магазина в множество всех
подмножеств
.
В начале работы на входной ленте записано
исходное предложение, ограниченное с
двух сторон концевыми маркерами,
считывающая головка установлена на
первый символ предложения, магазин пуст
и содержит начальный символ магазина,
магазинный автомат находится в начальном
состоянии. В процессе функционирования
строка на входной ленте просматривается
слева направо без возвратов. На каждом
шаге автомат переходит из одной
конфигурации в следующую.
Под
конфигурацией магазинного автомата
понимают тройку
- содержимое магазина,
- текущее состояние магазинного автомата,
- часть исходной строки на входной ленте,
начинающаяся с текущего символа (на
который указывает считывающая головка)
и кончающаяся последним символом строки.
Конфигурацию можно также записать в
виде
или
,
или
,
где
- символ на вершине магазина. Начальная
конфигурация в этом случае записывается
в виде
,
заключительная конфигурация -
,
где
и
.
Для записи перехода автомата из одной
конфигурации в другую применяется
бинарное отношение ├, определенное на
конфигурациях автомата. Будем писать
├
,
где если пара
и
.
Символ
считается допущенным, если автомат
читает его из входной строки и переходит
из конфигурации
в конфигурацию
.
При этом читающая головка перемещается
на один символ вправо и символ m в вершине
магазина заменяется строкой магазинных
символов b. Если
,
то происходит сокращение содержимого
магазина на символ m, при этом в вершине
магазина будет содержаться следующий
магазинный символ.
Строка
символов
,
где
допускается магазинным автоматом, если
существует последовательность
конфигураций такая, что
├
,
где
.
Поскольку разработчиков компиляторов
мало интересуют пустые символы в строках,
уберем их из определения допускаемой
строки. Тогда строка
,
где
,
допускается автоматом A, если существует
аналогичная строка, допускаемая автоматом
A, в которой
.
Последовательность конфигураций,
которые принимает магазинный автомат
при распознавании строки x обозначается
├
,
где
.
Если конечное состояние магазина
совпадает с начальным
,
говорят, что строка
допускается автоматом A с опустошенным
магазином
├
Если
автомат имеет пустой начальный символ
магазина
,
то говорят, что он допускает строку x с
пустым магазином.
├
Язык
T(A), допускаемый магазинным автоматом,
представляет собой множество строк,
определяемых формулой
и
├
Рассмотренный
магазинный автомат позволяет на каждом
шаге, либо удалить символ в вершине
магазина, либо заменить его строкой
магазинных символов конечной длины.
Это ограничение снято при определении
расширенного магазинного автомата [1],
который позволяет заменять строки
конечной длины , прилегающие к вершине
магазина. Данный магазинный автомат
является недетерминированным, поскольку
или
имеют множество значений (которое может
содержать и более одного элемента) и в
общем не существует правила для выбора
единственного значения из множества.
Множество может быть и пустым, тогда
автомат не может допускать следующие
входные символы.
Описанные
выше магазинные автоматы могут применяться
в качестве недетерминированных
распознавателей контекстно-свободных
языков. Доказано, что каждой КС грамматике
соответствует магазинный автомат A,
такой, что
.
Недетерминированный магазинный автомат
в виде нисходящего распознавателя
строится следующим образом. Определим
множества, описывающие автомат A.
- множество состояний; T - входной алфавит
состоит из терминальных символов;
- алфавит магазинных символов содержит
терминальные и нетерминальные символы;
- начальное состояние;
-
начальный символ магазина;
- множество конечных состояний.
Функция перехода t определяется следующим образом:
-
если множество продукций P содержит правило
, то
содержит
для всех продукций с нетерминалом A в левой части;
-
для
.