Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Glava10 r.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
339.97 Кб
Скачать

Детерминированные и недетерминированные конечные автоматы

Конечный автомат M(QV,S,q0,F) называют детерминированным конечным автоматом (ДКА), если в каждом из его состояний для любого входного символа функция перехода содержит не более одного состояния: VaeV, VqeQ: либо δ(a,q) = {г}, reQ либо δ(a,q) = 0.

В противном случае конечный автомат называют недетерминированным. ДКА может быть задан в виде пятерки:

где Q — конечное множество состояний автомата; V — конечное множество допустимых входных символов; δ — функция переходов, отображающая V*Q в множество Q.: δ(a,q) = r, aeV, q,reQ q0 — начальное состояние автомата Q qoeQ F — непустое множество конечных состояний автомата, FcQ F*0.

Если функция переходов ДКА определена для каждого состояния автомата, то автомат называется полностью определенным ДКА: VaeV, VqeQ: либо эδ(a,q) = r,reQ.

Моделировать работу ДКА существенно проще, чем работу произвольного КА.

Доказано, что для любого КА можно построить эквивалентный ему ДКА. Поэтому используемый произвольный КА стремятся преобразовать в ДКА. При построении компиляторов чаще всего используют полностью определенный ДКА.

Преобразование конечного автомата к детерминированному виду

Алгоритм преобразования произвольного КА M(QV,δ,q0,F) в эквивалентный ему ДКА M'(Q',V,δ',q'o,F') заключается в следующем:

1. Множество состояний Q' автомата М' строится из комбинаций всех состояний множества Q автомата М. Если q1,q2,-,qn> n > 0 — состояния автомата М, V0<i<n qieQ то всего будет 2п-1 состояний автомата М'. Обозначим их так: [qi,q2,...,qm]. 0<m<n.

2. Функция переходов δ' автомата М' строится так: δ'(a,[q1,q2,-,qm]) = [r1,r2.-.rk], где V0 < i < m э0 < j < k так, что δ(a,qi) = кj;

3. Обозначим q'0 = [q0];

4. Пусть f1,f2,...,fi, 1 > 0 — конечные состояния автомата М, VO < i < I fseF, тогда множество конечных состояний F' автомата М' строится из всех состояний, имеющих вид [...,f1;,...], fieF.

Доказано, что описанный выше алгоритм строит ДКА, эквивалентный заданному произвольному КА.

После построения из нового ДКА необходимо удалить все недостижимые состояния.

Состояние qeQ в КА M(QV,δ,q0,F) называется недостижимым, если ни при какой входной цепочке wе V+ невозможен переход автомата из начального состояния q0 в состояние q. Иначе состояние называется достижимым.

Для работы алгоритма удаления недостижимых состояний используются два множества: множество достижимых состояний R и множество текущих активных состояний на каждом шаге алгоритма pj. Результатом работы алгоритма является полное множество достижимых состояний R. Рассмотрим работу алгоритма по шагам:

После выполнения данного алгоритма из КА можно исключить все состояния, не входящие в построенное множество R.

Рассмотрим работу алгоритма преобразования произвольного КА в ДКА на примере автомата M({H,A,B.S}.{a,b},δ,H,{S}); δ: δ(H,b) - В, δ(В,а) - A, δ(A,b) = {B,S}. Видно, что это недетерминированный КА (из состояния А возможны два различных перехода по символу b). Граф переходов для этого автомата был изображен выше на рис. 10.1.

Построим множество состояний эквивалентного ДКА:

После построения ДКА исключим недостижимые состояния. Множество достижимых состояний ДКА будет следующим R = {[H],[B],[A],[BS]}. В итоге, исключив все недостижимые состояния, получим ДКА:

Ничего не изменяя, переобозначим состояния ДКА. Получим:

Граф переходов полученного ДКА изображен на рис. 10.3.

Этот автомат можно преобразовать к полностью определенному виду. Получим граф состояний, изображенный на рис. 10.4 (состояние Е — это состояние «ошибка»).

При построении распознавателей к вопросу о необходимости преобразования КА в ДКА надо подходить, основываясь на принципе разумной достаточности. Моделировать работу ДКА существенно проще, чем произвольного КА, но при выполнении преобразования число состояний автомата может существенно возрасти и, в худшем случае, составит 2п-1, где n — количество состояний исходного КА. В этом случае затраты на моделирование ДКА окажутся больше, чем на моделирование исходного КА. Поэтому не всегда выполнение преобразования автомата к детерминированному виду является обязательным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]