Детерминированным КА

advertisement
Тема 4: Детерминированные и недетерминированные конечные
автоматы
Определение: Конечный автомат является детерминированным, если
для любого состояния q и любого символа a Σ, δ(q , a) содержит не более
одного элемента (δ(q, a)={q' } или δ(q, a)={ }.
Пример
КА
из
предыдущей
темы
является
полным
и
детерминированным:
КА=(Σ, Q, q0, δ, F), Σ={a,b}, Q={q0, q1, q2}, F={q2} δ: δ(q0,
b)={q0}, δ(q0, a)={q1}, δ(q1, a)={q1}, δ(q1, b)={q2}, δ(q2, a)={q1},
δ(q2, b)={q0}.
q0
a
q1
a
b
a
b
b
q2
А вот автомат из примера КА=(Σ ,Q, q0, δ, F), Σ={0,1}, Q={q0, q1,
q2}, F={q2}
δ: δ(q0, 0)={q0},
δ(q0, 1)={q0, q1}, δ(q1, 1)={q2}, δ(q2, 1)={q2},
δ(q2, 0)={q2}.
qo
0
1
q1
1
q2
q2
1
1
0
недетерминированный, потому что из состояния q0 есть два выхода через
символ 1.
Определение: Конечный автомат является
если
не
является
детерминированным.
недетерминированным,
Недетерминированность
достигается 2-мя способами:
1. Существуют переходы, помеченные пустым симолом .
q1
a
q2
eps
b
eps
q0
q5
q5
eps
eps
q3
a
b
q4
2. Из одного состояния выходят несколько переходов, помеченных
одним и тем же символом.
Два конечных автомата эквивалентны, если они распознают один и
тот же язык.
То есть КА1 и КА2 эквивалентны если L( КА1)=L(КА2).
Теорема: Для любого недетерминированного конечного автомата можно
построить эквивалентный детерминированный конечный автомат.
Алгоритм преобразования недетерминированного КА в детерминированный
КА.
Пусть будет недетерминированный конечный автомат НДКА=(Q, Σ,
q0, δ, F) необходимо построить ДКА= (Q', Σ, [q0 ], δ', F').
Состояния из Q' будут комбинациями состояний из начального
автомата [q0,q1,...,qn], qiQ. Возможны подмножества этих состояний.
Шаг 1. Вначале Q'={[q0]}, где [q0] это пока немаркированное
состояние. Маркированым становится то состояние для которого
проанализированы все переходы из данного состояния.
Шаг 2. Для всех элементов
[q0,q1,...,qm]Q' и aΣ проанализируем
переходы δ({q0,q1,...,qm},a). Обозначим новые полученные состояния
как [qi0,qi1,...,qim].
Шаг 2.1. Вводим полученные состояние [qi0,qi1,..,qim] в множество
Q' немаркированных.
Шаг 2.2. Для этих состояний рассматриваем
δ'({q0,q1,...,qm},a) =
δ'({q0,q1,...,qm},a) [qi0,qi1,...,qim].
Шаг 2.3. Маркируем состояния [qi0,qi1,...,qim] из Q'.
Шаг 3. Повторяется Шаг 2 для всех немаркированных состояний из Q'.
Шаг 4. В качестве финальных состояний нового детерминированного
КА F'={[qi0,qi1,...,qim]}, вводятся те состояния для которых хотя бы
одно из состояний qi0,qi1,...,qim является конечным/финальным в
начальном недетерминированном КА.
Шаг 5. Стоп.
Download