- •1. Алфавит, слова, операции над словами
- •2. Языки. Операции над языками
- •3. Абстрактные формальные системы
- •4. Формальные порождающие грамматики
- •5. Классификация грамматик
- •Диаграмма грамматики.
- •Порождение и распознавание цепочек.
- •Детерминизация конечных автоматов
- •Автоматы с - переходами.
- •9. Минимизация числа состояний автомата
- •9.1. Лингвистический автомат.
- •9.2. Метод Хафмена.
- •Регулярные множества и регулярные выражения.
- •Разрешимые проблемы для а-грамматик
- •7. Нотации для задания кс-грамматик.
- •8. Структура цепочек. Су-схемы
- •9. Преобразования грамматик.
- •10. Разрешимые и неразрешимые свойства кс-грамматик
- •11. Синтаксический анализ для кс-языков
- •11.1 Ll(k)-грамматики
- •12.Элементы теории конечных автоматов
- •13.Сети автоматов. Их анализ и синтез.
Детерминизация конечных автоматов
Для того, чтобы построить соответствующее таким грамматикам автоматы, можно рассматривать переходы FавтоматаQVT в множество подмножествQ( т.е. вP(Q)). При этом
P(Q)=2Q.
Будем называть недетерминированным конечным автоматом Sпятерку объектовS = <Q,VT,q0,F,K>, где интерпретацияQ,VT,q0,Kтакая же, как и раньше, аF – отображениеQVTв P(Q).
Определение цепочек, допускаемых автоматом, остается прежним, но если в детерминированном автомате последовательность конфигураций однозначно определялась заданием входной цепочки, так как из каждой конфигурации автомат мог перейти не более чем в одну конфигурацию, то в недетерминированном случае это не так. Поэтому при интерпретации определения "цепочка Xдопущена" как (q0,x)├(q, )&qK необходимо при анализе цепочки, моделируя работу автомата, перебрать варианты выполнения тактов, чтобы найти тот (или те), которые приводят в заключительную ситуацию. В силу тех же соображений (тождественность движений по графу и при порождении цепочки, и при ее допускании) можем утверждать, что для любой грамматики G может быть построен конечный автоматA(в общем случае недетерминированный), такой, чтоL(G)=L(A) .Соответствия между параметрами грамматики и автомата остаются те же.
Возникает естественный вопрос о соотношении класса языков, допускаемых детерминированными и недетерминированными автоматами. Ясно, что для любого детерминированного автомата Aсуществует недетерминированныйA'допускающий тот же самый язык (достаточно в качествеA' взятьА). Но верно ли обратное? Ответ на этот вопрос дает следующая теорема.
Теорема 1.Если L=L(A)для некоторого недетерминированного автоматаA, то найдется конечный автомат A' такой, что L(A')=L(A).
Доказательство:
Пусть дан недетерминированный конечный автомат А = <Q,VT,q0,F,K>. Построим соответствующий детерминированный автоматА’= <Q’,VT,q0’,F’,K’>
Q’ = P(Q) . При этом множество состояний будем обозначать как .
q0’=[q0].
K’ = {/K }
F’(, a)=
Несложно доказать методом математической индукции, что для любого I
([q0],XY) ├iA’(B,Y)B={p/ (q0,XY) ├iA(p,Y)}
X=i.
Значит, для любой цепочки Х
([q0],X) ├iA’(B,)B={p/ (q0,X) ├iA(p,)}
Поэтому, в случае BK’, т.е. если Х – цепочка, допускаемая детерминированным автоматом, то в исходном недетерминированном автомате существует путь из начального в конечное состояние при чтении этой цепочки, и, следовательно,L(A)=L(A’).
Т.о., сопоставляя доказанные утверждения, получаем:
Класс А-языков и класс языков, распознаваемых конечными автоматами, совпадает.
Так, например, для автомата, представленного на рис. 5, соответствующий детерминированный автомат представлен на рис. 6.
Рис.6
Здесь F(S,a)= [S,A] = A’
F([S,A], a) = [S,A]
F([S,A],b) = [A, K] = K’
F([A,K],b)= [A, K] = K’
Для автомата на рис. 7а детерминированный автомат представлен на рис.7b.
Рис.7
Алгоритм построения детерминированного автомата по недетерминированному:
Строим начальное состояние q0’= [q0], помечаем его как начальное.
Для каждого состояния, построенного на предыдущем шаге, строим
F(qi’,a) для всехaVT. Если для какого-нибудь из построенных состояний функция перехода ещё не построена, возвращаемся к шагу 2.
Помечаем как конечные все состояния qi’=/ K.
Конечность процесса обеспечивается конечностью множества P(Q).