Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TAiFYA(X-file).doc
Скачиваний:
18
Добавлен:
24.04.2019
Размер:
3.09 Mб
Скачать

4.Детерминированные и недетерминированные конечные автоматы. Алгоритм детерминизации недетерминированного конечного автомата.

Недетерминированный конечный автомат – это система M=<Q,A,q0,δ,F>, где

Q - конечное множество состояний автомата,

A – конечный алфавит,

q0 ϵ Q – начальное состояние автомата,

δ: Q x A->2Q – функция переходов конечного автомата,

F c Q – множество заключительных («хороших») состояний автомата.

Автомат М называется детерминированным, если множество δ(q,a) содержит не более одного состояния для любых q ϵ Q и a ϵ A. Если δ(q,a) всегда содержит точно одно состояние, то автомат М называется полностью определенным.

Один из наиболее важных результатов теории конечных автоматов состоит в том, что класс языков, определяемых недетерминированными конечными автоматами, совпадает с классом языков, определяемых полностью определенными детерминированными конечными автоматами.

Для многих языков построить допускающий недетерминировнный конечный автомат гораздо легче, чем детерминированный.

Рассмотрим алгоритм детерминизации конечного автомата.

Пусть M=<Q,A,q0,δ,F> - недетерминированный конечный автомат, распознающий язык L(M), такой, что L(M’)= L(M). Положим, что Q’=2Q, т.е. состояниями автомата M’ являются подмножества состояний автомата М, для каждого множества S c Q и каждой входной буквы a ϵ A. Таким образом, чтобы найти , мы рассматриваем все состояния p в S, затем ищем те состояния Q, в которые можно попасть из состояния p по букве а, после чего берем объединение множеств найденных состояний по всем состояниям p.

Множество заключительных состояний детерминированного конечного автомата , т.е. состоит из подмножеств состояний Q, содержащих хотя бы одно «хорошее» состояние из F.

Два автомата называются эквивалентными, если они распознают один и тот же язык.

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

5. Алгоритм минимизация конечного автомата.

M = <Q, A, q0, σ, F> - конечный автомат.

Конечный автомат M – минимальный, если не существует эквивалентного ему конечного автомата с меньшим числом состояний.

q ∈ Q – недостижимое состояние, если не существует слова α ∈ A*, которое переводит автомат из начального состояния в q, т.е. (q0, α) ├* (q, λ) – не выполняется.

Если в конечном автомате есть недопустимые состояния, то автомат не минимальный.

M’ получен из M удалением недопустимых состояний, то L(M’) = L(M)

Процедура поиска недопустимых состояний:

S0 = {q0} (список)

Si+1 из Si

q’ ∈ Q

q’ ∈ Si+1 если:

∃ q’’ ∈ Si и ∃ a ∈ A, что σ(q’’,a) = a’

q’ ∉ Sl, l ∈ {0,1…i} не был в предыдущих списках

Sk = ∅ - критерий останова (q’ – недостижима, если q’ ∈ Д или q’ ∈ Q – Д)

Д = k∪i=0 Si – множество достижимых состояний.

Опр: q1, q2 ∈ Q, q1 != q2, α ∈ A* Слово α различает состояния q1 и q2, если

(q1, α) ├* (q3, λ)

(q2, α) ├* (q4, λ)

и одно из состояний q3 и q4 ∈ F, а другое нет.

Опр: q1 и q2 – к-неразличимы, если не ∃ α ∈ A*, |α| ≤ k, которое различает q1 и q2.

q1 ≡k q2 – к-неразличимы.

Опр. Если q1 ≡k q2 для любого k = 0,1… тогда q1 и q2 – неразличимы (т.е. эквивалентые).

q1 ≡ q2

Утв 1. q1 ≡o q2 - о-неразличимы ⇿ q1,q2 ∈ F либо q1,q2 ∉ F.

Утв 2. q1 ≡k q2 ⇿ q1 ≡k-1 q2 и σ(q1,a) = σ(q2,a) для всех a ∈ A.

Лемма: M – конечный автомат, |Q| = n. q1 ≡ q2 ⇿ q1 ≡n-2 q2.

Док-во:

q1 ≡ q2 => для всеъ k = 0,1… q1 ≡k q2

|F| = 0 (пустой язык), |F| = 1 (универсальный язык).

0 < |F| < n

≡ ⊆ ≡n-2 ⊆ ≡n-3 ⊆ … ⊆ ≡1 ⊆ ≡0

≡0 – 2 класса F и Q – F

≡1 != ≡0 => происходит дробление класса (как min 3 класса)

≡2 != ≡1 (как min 4 класса)

≡n-2 != ≡n-3 (как min n классов)

≡n-1 = ≡n-2 (не м: произойти дробление)

≡ != ≡n-1

Стабилизация может произойти и раньше.

Этапы построения min автомата:

Выделить все недостижимые состояния и удалить их.

Разбить множество на классы эквивалентности ≡, пока ≡k = ≡k-1

Только для детерминированных автоматов.

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