Недетерминированный магазинный автомат - это недетерминированный конечный автомат, вид функции перехода которого зависит от содержимого вершины некоторого стека. В недетерминированной конечном автомате набор возможных состояний определяется текущим состоянием, входным алфавитом и символом, который может быть извлечен из некоторого стека. При переходе недетерминированного магазинного автомата из одного состояния в другое, в стек может быть занесено произвольное конечное число некоторых символов.
Магазинным автоматом называется автомат:
M= (Q, U, Г, d, q0, Z0, F), где
Q - конечное множество символов состояний автомата,
U - конечный входной алфавит,
Г - конечный алфавит магазинных символов,
d - переходная функция d: Q´{VÈ{e}}´Г® Q´Г,
q0ÎQ - начальное состояние,
Z0ÎГ - начальный магазинный символ,
FÌQ - некоторое подмножество состояний автомата, которые называются заключительными состояниями.
Конфигурацией автомата называется множество троек
(q, w, a)Î Q´{VÈ{e}}´Г, где
|
|
q - текущее состояние автомата,
w - неиспользованная часть входной цепочки. Первый символ этой цепочки просматривается входной головкой автомата. Если w= {e}, значит входной символ прочитан,
a - содержимое магазина (стека). Если a= {e}, магазин пустой.
Конфигурация (q, aw, za) |- (q', w, ga), символ |- читается как «переходит в конфигурацию».
Если g= e, то верхний символ удаляется из магазина и магазинная цепочка сокращается.
Если а= e, то такт работы называется e-тактом. В e-такте текущий входной символ не воспринимается, входная головка не передвигается на следующий символ. Однако содержимое памяти магазина может изменяться.
Следующий такт работы невозможен, если магазин пуст: (q0, w, z0).
Заключительное состояние автомата (q, e, a), если qÎF.
Цепочка w допускается магазинным автоматом, если из начальной конфигурации за конечное число таков работы автомат перейдет в заключительное состояние: (q, w, z0)|-*(q, e, a).
Если P - автомат, то L(P) - язык, определяемый P.
Пример: L={0n1n | n³0}
Определим автомат P= ({q0, q1, q2}, {0,1}, {z, 0}, d, q, z, {q0})
d(g0, 0, z)= {(g1, 0z)}
d(g1, 0, 0)= {(g1, 00)}
d(g1, 1, 0)= {(g2, e)} e означает, что символ просто снимается со стека
d(g2, 1, 0)= {(g2, e)}
d(g1, e, z)= {(g0, e)}
Пусть на вход поступила цепочка 0011. Как будет выглядеть работа автомата:
(g0, 0011, z) |- (g1, 011, 0z) |- (g1, 11, 00z) |- (g2, 1, 0z) |- (g2, e, z) |-(g2, e, e)
Вопросы и упражнения
1. Что понимают под конфигурацией автомата?
2. Что такое e-такт?