Конспект лекций москва 2004 удк 519. 713(075)+519. 76(075) ббк 22. 18я7

Вид материалаКонспект

Содержание


6.3. Детерминизация недетерминированных автоматов
A, то найдется конечный автомат A'
Подобный материал:
1   2   3   4   5   6   7   8   9   ...   21

6.3. Детерминизация недетерминированных автоматов


Будем называть недетерминированным конечным автоматом S пятерку объектов S = T, q0, F, K>, где интерпретация Q, VT, q0, K такая же, как и раньше, а F – отображение Q  VT в P(Q).

Определение цепочек, допускаемых автоматом, остается прежним, но если в детерминированном автомате последовательность конфигураций однозначно определялась заданием входной цепочки, так как из каждой конфигурации автомат мог перейти не более чем в одну конфигурацию, то в недетерминированном случае это не так. Поэтому при интерпретации определения "цепочка x допущена" как (q0,x) ├ (q, )&qK необходимо при анализе цепочки, моделируя работу автомата, перебрать варианты выполнения тактов, чтобы найти тот (или те), который приводит в заключительную ситуацию. В силу тех же соображений (тождественность движений по графу и при порождении цепочки, и при ее допускании) можем утверждать, что для любой грамматики G может быть построен конечный автомат A (в общем случае недетерминированный), такой, что L(G)=L(A) . Соответствия между параметрами грамматики и автомата остаются те же.

Возникает естественный вопрос о соотношении класса языков, допускаемых детерминированными и недетерминированными автоматами. Ясно, что для любого детерминированного автомата A существует недетерминированный A', допускающий тот же самый язык (достаточно в качестве A' взять А). Но верно ли обратное? Ответ на этот вопрос дает следующая теорема.

Теорема 3. Если L=L(A) для некоторого недетерминированного автомата A, то найдется конечный автомат A', такой, что L(A')=L(A).

Доказательство.

Пусть дан недетерминированный конечный автомат А = < Q, VT, q0, F, K>. Построим соответствующий детерминированный автомат А’= T, q0’, F’, K’>
  1. Q’ = P(Q) . При этом множество состояний будем обозначать как .
  2. q0’=[q0].
  3. K’ = { / K }.
  4. F’( , a)= .

Несложно доказать методом математической индукции, что для любого i справедливо:

([q0],xy) ├iA(B, y)  B={p/ (q0, xy) ├iA(p,y)} при x=i.

Значит, для любой цепочки x

([q0],x) ├iA(B,)  B={p/ (q0, x) ├iA(p,)}.

Поэтому, в случае B K’, т.е. если x – цепочка, допускаемая детерминированным автоматом, то в исходном недетерминированном автомате существует путь из начального в конечное состояние при чтении этой цепочки и, следовательно, L(A)=L(A’).

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

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

Так, например, для автомата, представленного на рис. 2, соответствующий детерминированный автомат, порождающий L(G9), представлен на рис. 4.



Рис.4


Для этого автомата F(S,a)= [S,A] = A’,

F([S,A], a) = [S,A] = A’,

F([S,A],b) = [A, K] = K’,

F([A,K],b)= [A, K] = K’.

Для автомата на рис. 5,а детерминированный автомат представлен на рис.5,б.

Алгоритм построения детерминированного автомата по недетерминированному.
  1. Строим начальное состояние q0’= [q0], помечаем его как начальное.
  2. Для каждого состояния qi, построенного на предыдущем шаге, строим F(qi’, a) для всех aVT. Если для какого-нибудь из построенных состояний функция перехода ещё не построена, возвращаемся к шагу 2.
  3. Помечаем как конечные все состояния qi= / K  .

Конечность процесса обеспечивается конечностью множества P(Q).




Рис.5