Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lects_1.pdf
Скачиваний:
25
Добавлен:
09.06.2015
Размер:
731.64 Кб
Скачать

2.9. Работа магазинного автомата

Определение. Конфигурацией автомата М называют тройку (s, α, γ) S x P* x H*, где s -

текущее состояние управляющего устройства, α - неиспользованная часть входной це-

почки α P*, самый левый символ этой цепочки a находится под головкой. Если a = ε,

то считается, что входная цепочка прочитана. γ - цепочка, записанная в магазине, γ H*,

самый правый символ цепочки считается вершиной магазина. Если γ = $, то магазин пуст.

Работа автомата может быть представлена как смена конфигураций. Один такт работы автомата заключается в определении новой конфигурации на основе исходной. Это записывается следующим образом:

( s, aα, γ h ) |-- ( s', α, γβ )

При этом предполагается, что автомат читает символ a, находящийся против головки, и символ h, находящийся в вершине магазина, определяет новое состояние s' и записывает цепочку β в магазин вместо символа h. Если β = $, то верхний символ оказывается удаленным из магазина.

Такая смена конфигураций возможна, если функция f( s, a, h ) определена и ей принад-

лежит значение ( s', β ). Описанный такт работы выполняется с перемещением головки. Для описания работы автомата без перемещения головки используется другой вид такта.

Если f0(s, ε, h) определена и ей принадлежит значение ( s', β ) , то он определяет смену конфигураций следующим образом:

( s, aα , γ h ) |-- ( s', aα , γβ )

Таким образом, возможны следующие случаи при работе автомата:

f(s, a, h) определена и выполняется такт работы,

f(s, a, h) не определена, но определена функция f0(s, ε, h) или f*(s, a, h) и выполняется пустой такт.

Функции f(s, a, h), f*(s, a, h) и f0(s, ε, h) не определены, в этом случае дальнейшая работа автомата невозможна.

22

В общем виде действия, задаваемые функцией переходов и выполняемые автоматом, можно представить следующим образом:

f( s, <входной символ>, <магазинный символ> )=( s1, <заносимая цепочка> )

При выполнении такта вначале считывается символ в вершине магазина, а затем на его место записывается новый символ или цепочка. Отдельные значения функции переходов часто называют командами магазинного автомата.

Начальной конфигурацией называется конфигурация (sо, α , hо), где sо - начальное состояние и hо - маркер дна магазина, а заключительной - конфигурация (s, $ , $) , где s принадлежит множеству конечных состояний F.

Для обозначения последовательности сменяющих друг друга конфигураций используют обозначение |--*. Таким образом, последовательность

( s1, α1, γ1 ) |-- ( s2, α2, γ2) |-- ... |-- ( sn, αn, γn )

можно представить в сокращенном виде следующим образом:

( s1, α1, γ1 ) |--* ( sn, αn, γn ).

2.10. Язык, допускаемый магазинным автоматом

Определение. Цепочка α называется допустимой для автомата М, если существует последовательность конфигураций, в которой первая конфигурация является начальной c

цепочкой α , а последняя - заключительной (sо, α, hо) |--* (s1, $ , $), где s1 F. Определение. Множество цепочек, допускаемых автоматом М, называется языком, допускаемым или определяемым автоматом М, и обозначается L(М).

L(М)= {α ¦ ( sо, α, hо ) ¦--* ( s', $, $ ) & s' F }

Рассмотрим пример. Пусть задан магазинный автомат М1

М1: P = {a , b}; S = {s0 , s1 , s2}; H = {h0 , a}; F = {s0}; f (s0, a, h0) = (s1, h0a),

f (s1, a, a ) = (s1, aa), f (s1, b, a ) = (s2, $), f (s2, b, a ) = (s2, $), f (s2, ε, h0) = (s0, $).

23

Этот автомат является детерминированным, поскольку каждому набору аргументов соответствует единственное значение функции. Работу автомата при распознавании входной цепочки aabb можно представить в виде последовательности конфигураций:

(s0,aabb,h0) |-- (s1,abb,h0a) |-- (s1,bb,h0aa) |-- (s2,b,h0a) |-- (s2,$,h0) |-- (s0,$,$)

Можно проверить, что при задании входной цепочки aabbb автомат не сможет закончить работу. Следовательно, эта цепочка не принадлежит языку, допускаемому автоматом M1. Магазинный автомат М2, заданный следующим описанием:

М2: P = {a, b}; S = {s0, s1, s2}; H = {h0, a, b}; F = {s2};

(1)f(s0, a, h0) = (s0, h0a),

(2)f(s0, b, h0) = (s0, h0b),

(3)f(s0, a, a) = {(s0,aa) , (s1 , $)},

(4)f(s0, b, a) = (s0,ab),

(5)f(s0, a, b) = (s0 , ba),

(6)f(s0, b, b) = {(s0 , bb) , (s1 , $)},

(7)f(s1, a, a) = (s1, $),

(8)f(s1, b, b) = (s1, $),

(9)f0(s2, ε, h0) = (s2, $),

является недетерминированным автоматом, поскольку одному и тому же набору аргументов, например (s0, a, a), соответствуют два значения функции. Рассмотрим работу автомата для входной цепочки abba. Если использовать последовательность команд (1), (4), (6.1), (5), то получим последовательность конфигураций:

(s0,abba,h0) |-- (s0,bba,h0a), (1) |-- (s0,ba,h0ab), (4) |-- (s0,a,h0abb), (6.1) |-- (s0,$,h0abba). (5),

которая показывает, что дальнейшая работа невозможна, т.к. входная цепочка прочитана и переход (s0,$,h0abba) не определен. Если же использовать последовательность команд (1), (4), (6.2), (7), (9), то получим заключительную конфигурацию:

(s0,abba,h0) |-- (s0, bba, h0a),

(1)

|-- (s0, ba, h0ab),

(4)

|-- (s1, a, h0a),

(6.2)

24

|-- (s1, $, h0),

(7)

|-- (s2, $, $).

(9).

Т.о. можно сделать вывод о том, что цепочка abba допускается автоматом М2.

2.11. Построение магазинного автомата

Если Г = { VT, VA, I, R } является КС-грамматикой, то для неё можно построить магазинный автомат М, такой что L(M) = L(Г).

Для простоты и наглядности построения магазинного автомата условимся использовать магазинные автоматы с одним состоянием s0. Пусть задана грамматика Г = { VT, VA, I, R}. Определим компоненты автомата М следующим образом:

S = { s0 }, P = VT , H = VT VA { h0} , F = { s0 },

в качестве начального состояния автомата примем s0. Построим функцию переходов следующим образом:

1.Для всех <A> VA, встречающихся в левой части правил <A> → α , построим команды вида:

f0( s 0 , ε , <A> ) = ( s0 , αR ),

где αR -зеркальное отображение цепочки α.

2.Для всех a VT построим команды вида

f( s0, a, a ) = ( s0, $ )

3. Для перехода в конечное состояние построим команду f*( s0 , ε , h0 ) = ( s0 , $ )

4. Начальную конфигурацию автомата определим в виде:

( s0 , ω , h0<I> ),

где ω − заданная цепочка, записанная на входной ленте.

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

25

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]