Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




 

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

Автомат с магазинной памятью (сокращенно МП-автомат) - это семерка

R = (Q, S, G, d, q0, Z0, F)

где

(1) Q - конечное множество символов состояний управляющего устройства;

(2) S - конечный входной алфавит;

(3) G - конечный алфавит магазинных символов;

(4) d - отображение множества Q ´(SÈ{e})´G в множество конечных подмножеств множества Q ´G *;

(5) q0Î Q - начальное состояние управляющего устройства;

(6) Z0 Î G - символ, находящийся в магазине в начальный момент (начальный символ магазина);

(7) F Í Q - множество заключительных состояний.

 

Конфигурацией МП-автомата называется тройка

(q, a, b) Î Q´S * ´G *,

где

(1) q - текущее состояние управляющего устройства;

(2) a - неиспользованная часть входной цепочки; первый символ цепочки a находится под входной головкой; если a = e, то считается, что входная лента прочитана;

(3) b - содержимое магазина; левый символ цепочки b считается верхним символом магазина; если b = e, то магазин считается пустым.

 

Такт работы автомата будем представлять в виде бинарного отношения перехода ú¾, определенного на конфигурациях. Будем писать

(q, aa, cb) ú¾ (q½, a, gb),

если множество d (q, a, c) содержит (q ½, g), где q, q ½Î Q, a Î SÈ{e}, aÎ S *, c Î G и b, gÎ G *.

 

Если a¹e, то говорят, что МП-автомат R, находясь в состоянии q и имея a в качестве текущего входного символа, расположенного под входной головкой, а c в качестве верхнего символа магазина, может перейти в новое состояние q½, сдвинуть входную головку на ячейку вправо и заменить верхний символ магазина цепочкой g магазинных символов. Эта цепочка может совпадать с заменяемым символом c. Если g =e, то верхний символ удаляется из магазина, и тем самым магазинный список сокращается.

Если a=e, будем называть этот такт e -тактом. В e -такте текущий входной символ не принимается во внимание и входная головка не сдвигается. Однако состояние управляющего устройства и содержимое магазина могут измениться. Заметим, что e -такт может происходить и тогда, когда вся входная цепочка прочитана.

 

Следующий такт невозможен, если магазин пуст.

 

Отношение ú¾ i традиционно обозначает выполнение i тактов (i ³ 0); ú¾* - реф­лек­­сив­но-транзитивное (i ³ 0), а ú¾ + - транзитивное (i > 0) замыкание отношения ú¾.

 

Начальной конфигурацией МП-автомата R называется конфигурация вида

(q0, a, Z0),

где aÎ S *, т.е. управляющее устройство находится в начальном состоянии q0, входная лента содержит цепочку a, которую нужно распознать, а в магазине есть только начальный символ Z0.

 

Заключительная конфигурация - это конфигурация вида

(q, e, b),

где q Î F и bÎ G *.

 

Говорят, что цепочка a допускается МП-автоматом, если

(q0, a, Z0) ú¾ * (q, e, b)

для некоторых q Î F и bÎ G *.

 

Языком, определяемым (или допускаемым) МП-автоматом R (обозначается L(R)), называется множество цепочек, допускаемых автоматом R.

 

Пример 6.1. Построим МП-автомат, определяющий язык

L = { 0 n 1 n ½ n ³ 0 }.

Пусть

R = ({q0, q1, q2}, {0, 1}, {z, 0}, d, q0, z, {q0}),

где

d (q0 , 0, z) = {(q1 , 0z)}

d (q1 , 0, 0) = {(q1 , 00)}

d (q1 , 1, 0) = {(q2 , e)}

d (q2 , 1, 0) = {(q2 , e)}

d (q2 , e, z) = {(q0 , e)}

 

Работа МП-автомата R состоит в том, что он копирует в магазине начальную часть входной цепочки, состоящую из нулей, а затем устраняет из магазина по одному нулю на каждую единицу, которую он видит на входе. Кроме того, переходы состояний гарантируют, что все нули предшествуют единицам. Например, для входной цепочки 0011 автомат R проделает следующую последовательность тактов:

(q0 , 0011, z) ú¾ (q1 , 011, 0z)

ú¾ (q1 , 11, 00z)

ú¾ (q2 , 1, 0z)

ú¾ (q2 , e, z)

ú¾ (q0 , e, e)

Вообще можно показать, что

 

(q0 , 0, z) ú¾ (q1 , e, 0z)

(q1 , 0 i, 0z) ú¾ i (q1 , e, 0 i+1z)

(q1 , 1, 0 i+1z) ú¾ (q2 , e, 0 iz)

(q2 , 1 i, 0 iz) ú¾ i (q2 , e, z)

(q2 , e, z) ú¾ (q0 , e, e)

 

Объединяя все это, получаем для n ³ 1

(q0 , 0 n1 n, z) ú¾ 2n+1 (q0 , e, e)

и

(q0 , e, z) ú¾ 0 (q0 , e, e)

Таким образом, L Í L(R).

Покажем, что L Ê L(R), т.е. что R допускает только цепочки вида 0 n1n. Эта часть доказательства труднее. Обычно легче доказать, что такие-то цепочки распознаватель допускает, и так же, как для грамматик, гораздо труднее доказать, что он допускает цепочки только определенного вида.

В данном случае заметим, что если R допускает непустую цепочку, то он должен пройти через состояния q0 , q1 , q2 , q0 именно в этом порядке.

Далее, если (q0 , j, z) ú¾ i (q1 , e, y), то j = 0 i и y = 0 iz. Аналогично, если (q2 , j, y) ú¾ i (q2 , e, l), то j = 1 i и y = 0 il. К тому же (q1 , j, y) ú¾ (q2 , e, l) только тогда, когда j = 1 и y = 0l, а (q2 , j, z) ú¾ * (q0 , e, e) только тогда, когда j = e. Таким образом, если (q0 , a, z) ú¾ i (q0 , e, b) для некоторого i ³ 0, то либо a = e и i = 0, либо a = 0 n1n, i = 2n+1 и b = e. Следовательно, L Ê L(R). 

 

Пример 6.2. Построим МП-автомат, допускающий язык

L = {aa R ½ a Î {a, b} +}

Пусть

R = ({q0 , q1 , q2 }, {a, b}, {Z, a, b}, d, q0 , Z, {q2 }),

где

(1) d (q0 , a, Z) = {(q0 , aZ)}

(2) d (q0 , b, Z) = {(q0 , bZ)}

(3) d (q0 , a, a) ={(q0 , aa), (q1 , e)}

(4) d (q0 , a, b) = {(q0 , ab)}

(5) d (q0 , b, a) = {(q0 , ba)}

(6) d (q0 , b, b) ={(q0 , bb), (q1 , e)}

(7) d (q1 , a, a) ={(q1 , e)}

(8) d (q1 , b, b) ={(q1 , e)}

(9) d (q1 , e, Z) = {(q2 , e)}

 

МП-автомат R вначале копирует в магазине какую-то часть входной цепочки по правилам (1), (2), (4) и (5) и первым альтернативам правил (3) и (6). Однако R - недетерминированный распознаватель. В любой момент, когда текущий входной символ совпадает с верхним символом магазина, он может перейти в состояние q1 и начать сравнивать цепочку в магазине с оставшейся частью входной цепочки. Этот выбор осуществляют вторые альтернативы правил (3) и (6), а по правилам (7) и (8) происходит сравнение. Если R обнаруживает несовпадение очередных символов, то этот экземпляр МП-автомата “умирает”, т.е. перестает работать. Однако, так как автомат R - недетерминированный, то разные его экземпляры могут дать все возможные для него такты. Если какой-то выбор тактов приводит к тому, что Z снова оказывается верхним (и единственным) символом магазина, то по правилу (9) R стирает Z и попадает в заключительное состояние q2 . Итак, R допускает цепочку тогда и только тогда, когда все сравнения обнаружили совпадение символов.

Например, для входной цепочки abba автомат R может среди прочих сделать следующие последовательности тактов:

 

(1) (q0 , abba, Z) ú¾ (q0 , bba, aZ)

ú¾ (q0 , ba, baZ)

ú¾ (q0 , a, bbaZ)

ú¾ (q0 , e, abbaZ)

 

(2) (q0 , abba, Z) ú¾ (q0 , bba, aZ)

ú¾ (q0 , ba, baZ)

ú¾ (q1 , a, aZ)

ú¾ (q1 , e, Z)

ú¾ (q2 , e, e)

 

Так как последовательность (2) оканчивается заключительным состоянием q2, то МП-автомат R допускает входную цепочку abba. 

 

В примере 6.2 ясно видна недетерминированная природа МП-автомата R. Для любой конфигурации вида (q0 , aa, ab) автомат R может сделать один из двух тактов: либо поместить в магазин еще один символ a, либо устранить из магазина верхний символ a.

Отметим, что недетерминированный МП-автомат является удобным абстрактным определением языка, но для реализации на практике необходимо моделировать его детерминированно. В данном пособии мы лишь коснемся этого вопроса, отнеся изложение строгих алгоритмов такого моделирования к разделу “Синтаксический анализ” курса “Основы построения компиляторов”.

 

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

 

Расширенным МП-автоматом назовем семерку

R = (Q, S, G, d, q0, Z0, F)

где d - отображение конечного подмножества множества Q ´(SÈ{e})´G * в множество конечных подмножеств множества Q ´G *, а все другие символы имеют тот же смысл, что и раньше.

 

Конфигурация определяется так же, как и прежде, и мы пишем

(q, aj, ay) ú¾ (q½, j, by),

если d (q, a, a) содержит (q½, b), где q, q½Î Q, aÎ S È {e } и a, b Î G *. В этом такте цепочка a, расположенная в верхней части магазина, заменяется цепочкой b. Как и прежде, языком L(R), определяемым автоматом R, называется множество

{w ½ (q0 , w, Z0} ú¾ * (q, e, b) для некоторых qÎ F и a Î G * }

Заметим, что в отличие от обычного МП-автомата расширенный МП-автомат обладает способностью продолжать работу и тогда, когда магазин пуст.

 

Пример 6.3. Определим расширенный МП-автомат R, распознающий язык

L = {aa R ½ a Î {a, b} * }

Пусть

R = ({q, p}, {a, b}, {a, b, S, Z}, d, q, Z, {p}),

где

(1) d (q, a, e) = {(q, a)}

(2) d (q, b, e) = {(q, b)}

(3) d (q, e, e) = {(q, S)}

(4) d (q, e, aSa) = {(q, S)}

(5) d (q, e, bSb) = {(q, S)}

(6) d (q, e, SZ) = {(p, e)}

 

На входе aabbaa автомат R может сделать следующую последовательность тактов:

 

(q, aabbaa, Z) ú¾ (q, abbaa, aZ)

ú¾ (q, bbaa, aaZ)

ú¾ (q, baa, baaZ)

ú¾ (q, baa, SbaaZ)

ú¾ (q, aa, bSbaaZ)

ú¾ (q, aa, SaaZ)

ú¾ (q, a, aSaaZ)

ú¾ (q, a, SaZ)

ú¾ (q, e, aSaZ)

ú¾ (q, e, SZ)

ú¾ (p, e, e)

 

Работа автомата R состоит в том, что вначале он запасает в магазине некоторый префикс входной цепочки. Затем верхним символом магазина делается маркер S, указывающий предполагаемую середину входной цепочки. Далее R помещает в магазин очередной входной символ и заменяет в магазине aSa или bSb на S. Автомат работает до тех пор, пока не исчерпается вся входная цепочка. Если после этого в магазине останется SZ, то R сотрет SZ и попадет в заключительное состояние. 

 

Теорема 6.1. Я зык L определяется МП-автоматом тогда и только тогда, когда он определяется расширенным МП-автоматом.

 

Доказательство. Необходимость условия очевидна, - МП-автомат по определению является расширенным МП-автоматом. Докажем достаточность. Пусть R = (Q, S, G, d, q0 , Z0 , F) - расширенный МП-автомат. Тогда существует такой МП-автомат X, что L(X) = L(R).

Положим m = max{½a½ ½ d (q, a, a) ¹ Æ для некоторых qÎ Q, aÎ S È {e } }. Построим МП-автомат X, который будет моделировать автомат R, храня верхние m символов его магазина в “буфере” длины m, занимающем часть конечной памяти управляющего устройства автомата X. Тогда X сможет сказать в начале каждого такта, каковы m верхних символов магазина автомата R. Если в некотором такте R заменяет k верхних символов магазина цепочкой из j символов, то X заменит k первых символов в буфере этой цепочкой длины j. Если j < k, то X сделает k- j вспомогательных e -тактов, в течении которых k- j символов перейдут из верхней части магазина в буфер управляющего устройства. После этого буфер окажется заполненным и X готов моделировать очередной такт автомата. Если j > k, то символы передаются из буфера в магазин.

Итак, положим X = (Q1 , S, G1, d1, q1 , Z1 , F1 ), где

(1) Q1 = { [q,a ], ½ qÎ Q, a Î G1 *, 0 £ ½a½£ m};

(2) G1 = G È { Z1 };

(3) d 1 определяется так:

(а) Допустим, что d (q, a, X1 ... Xk ) содержит (r, Y1 ... Yj ).

(i) Если j ³ k, то для всех ZÎ G1 и a Î G1 *, ½a ½= m-k,

d 1 ([q, X1 ... Xka ], a, Z) содержит ([r, b ], g Z)

где bg = Y1 ... Yja и ½b ½= m.

(ii) Если j < k, то для всех ZÎ G1 и a Î G1 *, ½a ½= m-k,

d 1 ([q, X1 ... Xka ], a, Z) содержит ([r, Y1 ... Yja Z ], e)

(б) Для всех qÎ Q, ZÎ G1 и a Î G1 *, ½a ½< m,

d 1 ([q, a ], e, Z) = {([q, a Z ], e)}

Эти правила осуществляют заполнение буфера управляющего устройства, который содержит m символов.

(4) q1 = [q0 , Z0 Z1 m-1 ]. В начальный момент буфер содержит Z0 наверху и m-1 символов Z1 пониже. Символы Z1 используются как специальные маркеры, отмечающие дно магазина

(5) F1 = {[q, a ] ½ qÎ F, a Î G1 * }.

 

Непосредственно применяя правила, определяющие X, можно показать, что

(q, aw, X1 ... Xk Xk+1 ... Xn ) ú¾ R (r, w, Y1 ... Yj Xk+1 ... Xn )

тогда и только тогда, когда

([q, a ], aw, b) ú¾+ X ([r, a ½ ], w, b ½),

где

(1) ab = X1 ... Xn Z1 m,

(2) a½ b½ = Y1 ... Yj Xk+1 ... Xn Z1 m,

(3) ½a ½=½a½½= m,

(4) между двумя указанными конфигурациями МП-автомата X нет ни одной конфигурации, состояние которой имело бы вторую компоненту (буфер) длины m.

Таким образом,

(q0 , w, Z0 ) ú¾* R (q, e, a)

для некоторых qÎ F и a Î G * тогда и только тогда, когда

([q0 , Z0 Z1 m-1 ], w, Z1 ) ú¾* X ([q, b ], e, g)

где ½b½= m и bg = a Z1 m. Отсюда L(X) = L(R). 

 




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 417; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.