Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[01] Соколов В.А. Формальные языки и грамматики....doc
Скачиваний:
97
Добавлен:
29.10.2018
Размер:
1.44 Mб
Скачать

Лекция 14 Магазинные автоматы Детерминированные магазинные автоматы и детерминированные кс-языки

Е сли НМА таков, что каждый его шаг определен однозначно (т.е. отсутствует выбор при переходе из одной конфигурации в другую), то такой автомат называется детерминированным магазинным автоматом-распознавателем (ДМА). Дадим определение ДМА, основываясь на определении 12.1.

Определение 14.1.

Магазинный автомат

M = (Q, , V, , q0, z0, F)

называется детерминированным, если он является НМА в соответствии с определением 12.1 и удовлетворяет следующим ограничениям: для любых qQ, a  {} и bV

  1. |(q, a, b)|  1, т.е. (q, a, b) содержит не более одного элемента,

  2. если (q, , b) ¹ , то для любого а (q, a, b) = .

Первое из этих условий означает, что для любого входного символа и любого символа в вершине стека не может существовать более одного шага, а второе условие говорит о том, что когда в некоторой конфигурации возможен -переход, то никакой другой переход, сопровождающийся чтением входного символа, уже невозможен.

Определение 14.2.

Язык L называется детерминированным контекстно‑свобод-ным языком (ДКС-языком), если существует ДМА М такой, что L = L(M).

Пример 14.3.

Покажем, что язык

L = {anbn | n  0}

является детерминированным контекстно-свободным языком.

Нетрудно убедится, что

М = ({q0, q1, q2}, {a, b}, {0, 1}, , q0 , 0, {q0}),

где  определена соотношениями

(q0, a, 0) = {(q1, 10)},

(q1, a, 1) = {(q1, 11)},

(q1, b, 1) = {(q2, )},

(q2, b, 1) = {(q2, )},

(q2, , 0) = {(q0, )},

является ДМА и допускает язык L.

В отличие от конечных автоматов, детерминированные и недетерминированные магазинные автоматы не эквивалентны. Существуют контекстно-свободные языки, которые не являются детерминированными.

Пример 14.4.

Возьмем два языка:

L1 = {anbn | n  0}

и

L2 = {anb2n | n  0}.

Как ранее было показано, язык L1 контекстно-свободный. Несложной модификацией грамматики языка L1 можно получить КС-грамматику для L2, значит, L2 – тоже КС-язык.

Покажем, что язык

L = L1 L2

является контекстно-свободным. Это можно сделать разными способами. Пусть, скажем,

G1 = (N1, T, S1, P1)

и

G2 = (N2, T, S2, P2)

– КС-грамматики, порождающие языки L1 и L2, соответственно. Предположим, что N1N2 =  и SN1N2. Построим грамматику G, являющуюся комбинацией грамматик G1 и G2:

G = (N1 N2  {s}, T, S, P),

где

P = P1P2  {ss1, ss2}.

Нетрудно показать, что G порождает язык L, а следовательно, контекстно-свободный язык. Покажем, что L не является детерминированным КС-языком. Рассуждение построим следующим образом: предположив, что L – детерминированный КС-язык, приходим к заключению, что язык

L' = L  {anbncn | n  0}

должен тогда быть контекстно-свободным, а это не так.

Для доказательства того, что L' будет КС-языком, если L – детерминированный КС-язык, построим НМА M', распознающий L', основываясь на ДМА М, распознающем L.

Идея построения этого НМА заключается в том, чтобы добавить к устройству управления автомата М аналогичный блок, в котором переходы, осуществляемые при чтении входного символа b, заменены на аналогичные переходы для символа с. Этот новый блок устройства управления вступает в работу после того, как М заканчивает чтение anbn. Так как этот второй блок реагирует на сn совершенно так же, как первый (основной) блок на bn, то процесс распознавания anb2n превращается теперь в процесс распознавания строки anbncn. На рис. 14.1 эта конструкция изображена схематически.

bn аnbn Диаграмма М

 

Диаграмма

сn дополнительного

блока

Рис. 14.1. Диаграмма переходов M'

Итак, пусть

M = (Q, , V, , q0, z0, F),

где

Q = {q0, q1, ..., qn}.

Рассмотрим

M' = (Q', , V,   ', q0, z0, F' ),

где

Q' = Q  {q'0, q'1, ..., q'n},

F' = F  {q'i | qi F},

а функция ' построена из  добавлением соотношений

'(qf, , x) = {(q'f, x)}

для всех qfF и хV

и

'(q'i, c, x) = {(q'j, )}

для всех (qi, b, x) = {(qj, )} и

qi Q, xV,   V*.

Для М распознать строку anbn означает выполнение соотношения

(q0, anbn, z0) (qi, , ), где qiF.

Так как М – детерминированный, должно также выполняться соотношение

(q0, anb2n, z0) (qi, bn, ),

откуда следует, что для распознавания строки anb2n необходимо выполнение соотношения

(qi, bn, ) (qj, , ),

где qi – некоторое заключительное состояние из F. Но тогда, по построению автомата М', мы имеем:

(q'i, cn, ) (q'j, , ),

т.е. M' допускает строку anbncn. Нетрудно видеть, что никаких других строк, кроме тех, которые содержатся в L', НМА M' не допускает. Следовательно, L' = L(M'), а это значит, что L' – контекстно-свободный язык. Но это не так!

В следующей лекции, применяя Лемму о расширении, мы покажем (пример 15.8), что L' не является КС-языком. Поэтому наше исходное предположение о том, что L – детерминированный КС-язык, неверно.

Тем самым мы показали, что класс детерминированных КС-языков является собственным подмножеством класса всех КС-языков.