- •Курс лекций
- •Оглавление
- •Лекция 1 Языки и грамматики Языки
- •ГГрамматики
- •Лекция 2 Конечные автоматы Автоматы
- •Детерминированные конечные автоматы (распознаватели)
- •Языки и детерминированные конечные автоматы
- •Лекция 3 Конечные автоматы Недетерминированные конечные автоматы (распознаватели)
- •Эквивалентность дка и нка
- •Лекция 4 Конечные автоматы Минимизация конечных автоматов
- •Лекция 5 Регулярные выражения и регулярные грамматики
- •Регулярные выражения
- •Связь между регулярными выражениями и автоматными языками
- •Лекция 6 Регулярные выражения и регулярные грамматики Регулярные грамматики
- •Лекция 7 Свойства регулярных языков
- •Замкнутость класса регулярных языков
- •Алгоритмические проблемы регулярных языков
- •Лемма о расширении регулярных языков
- •Лекция 8 Контекстно-свободные языки
- •Контекстно-свободные грамматики
- •Лекция 9 Контекстно-свободные языки
- •Грамматический разбор
- •Неоднозначность грамматик и языков
- •Лекция 10 Преобразования кс‑грамматик и нормальные формы
- •Методы преобразования грамматик
- •Лекция 11 Преобразования кс‑грамматик и нормальные формы
- •Нормальные формы кс-грамматик
- •Лекция 12 Магазинные автоматы Магазинные автоматы
- •Недетерминированные магазинные автоматы
- •Лекция 13 Магазинные автоматы Магазинные автоматы и кс-языки
- •Лекция 14 Магазинные автоматы Детерминированные магазинные автоматы и детерминированные кс-языки
- •Лекция 15 Свойства контекстно-свободных языков
- •Лемма о расширении
- •Свойства замкнутости класса контекстно-свободных языков
- •Лекция 16 Свойства контекстно-свободных языков Некоторые алгоритмические проблемы для кс-языков
- •Предметный указатель
- •Формальные языки и грамматики Курс лекций
Лекция 14 Магазинные автоматы Детерминированные магазинные автоматы и детерминированные кс-языки
Е сли НМА таков, что каждый его шаг определен однозначно (т.е. отсутствует выбор при переходе из одной конфигурации в другую), то такой автомат называется детерминированным магазинным автоматом-распознавателем (ДМА). Дадим определение ДМА, основываясь на определении 12.1.
Определение 14.1.
Магазинный автомат
M = (Q, , V, , q0, z0, F)
называется детерминированным, если он является НМА в соответствии с определением 12.1 и удовлетворяет следующим ограничениям: для любых q Q, a {} и b V
-
|(q, a, b)| 1, т.е. (q, a, b) содержит не более одного элемента,
-
если (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, соответственно. Предположим, что N1 N2 = и S N1 N2. Построим грамматику G, являющуюся комбинацией грамматик G1 и G2:
G = (N1 N2 {s}, T, S, P),
где
P = P1 P2 {s s1, s s2}.
Нетрудно показать, что G порождает язык L, а следовательно, 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)}
для всех qf F и х V
и
'(q'i, c, x) = {(q'j, )}
для всех (qi, b, x) = {(qj, )} и
qi Q, x V, V*.
Для М распознать строку anbn означает выполнение соотношения
(q0, anbn, z0) (qi, , ), где qi F.
Так как М – детерминированный, должно также выполняться соотношение
(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 – детерминированный КС-язык, неверно.
Тем самым мы показали, что класс детерминированных КС-языков является собственным подмножеством класса всех КС-языков.