Рис. 3.2. Пример детерминированного графа

Для дальнейшего анализа нам потребуется определение детерминированного автомата.

Определение.

Пусть М = (Q, S, d, q0, F) – недетерминированный конечный автомат. Назовём автомат М детерминированным, если множество d(q, а) содержит не более одного состояния для любых qÎQ и аÎS. Если d(q, а) всегда содержит точно одно состояние, то автомат М назовём полностью определённым.

Рис. 3.3. Пример недетерминированного графа

Таким образом, наш пример – полностью определённый детерминированный конечный автомат, и в дальнейшем под конечным автоматом мы будем подразумевать полностью определённый конечный автомат.

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

Теорема.

Если L=L(M) для некоторого недетерминированного конечного автомата, то L=L(M') для некоторого конечного автомата М'.

Пусть М = (Q, S, d, q0, F). Построим автомат М' = (Q', S, d', q0', F') следующим образом:

1)  Q' = P (Q), т. е. состояниями автомата М' является множество состояний автомата М;

2)  q0'={q0};

3)  F' состоит из всех таких подмножеств S множества Q, что SÇF¹Æ;

4)  d(S, а) = S' для всех SÍQ, где S'={p | d(q, а) содержит р для некоторого qÎS}.

Пример.

Построим конечный автомат М' = (Q,{1, 2, 3}, d', {q0}, F), допускающий язык L(M).

НЕ нашли? Не то? Что вы ищете?

Так как М имеет 5 состояний, то в общем случае М' должен иметь 32 состояния. Однако, не все они достижимы из начального состояния. Состояние р называется достижимым, если существует такая цепочка w, что (q0, w)⊢∗(р, е), где q0 - начальное состояние. Мы будем строить только достижимые состояния (табл. 3.3).

Таблица 3.3 - Достижимые состояния автомата

Состояние

Вход

1

2

3

А = {q0}

В

С

D

В = {q0, q1}

Е

F

G

С = {q0, q2}

F

H

I

D = {q0, q3}

G

I

J

E = {q0, q1, qf}

E

F

G

F = {q0, q1, q2}

K

K

L

G = {q0, q1, q3}

M

L

M

Н = {q0, q2, qf}

F

H

I

I = {q0, q2, q3}

L

N

N

J = {q0, q3, qf}

G

I

J

К = {q0, q1, q2, qf}

К

К

L

L= {q0, q1, q2,q3}

Р

Р

Р

М = {q0, q1, q3, qf}

М

L

М

N = {q0, q2, q3, qf}

L

N

N

Р = {q0, q1,q2, q3, qf}

Р

Р

Р

Начнём с замечания, что состояние {q0} достижимо. d' ({q0}, а) = {q0, qа} для а = 1, 2, 3. Рассмотрим состояние {q0, q1}. Имеем d' ({q0, q1},1) = {q0, q1, qf}. Продолжая, по данной схеме, получаем, что множество состояний автомата М (М¢) достижимо тогда и только тогда, когда

1)  оно содержит q0 и

2)  если оно содержит qf, то содержит также и q1, q2 или q3.

Начальным состоянием автомата М является А, а множество заключительных состояний - {Е, Н, J, К, М, N, Р}.

3.8.  Конечные автоматы и регулярные множества

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

Лемма. Если L=L(M) для некоторого конечного автомата, то L=L(G) для некоторой праволинейной грамматики.

Лемма. Пусть S - конечный алфавит, тогда множества (1) Æ, (2) {е} и {a} для всех аÎ S являются конечно-автоматными языками.

Лемма. Пусть L1 = L(M1) и L2 = L(M2) для конечных автоматов M1 и M2. Множества LL2, L1 L2 и L1* являются конечно-автоматными языками.

Заключительная теорема.

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

1)  L – регулярное множество;

2)  L – праволинейный язык;

3)  L – конечно-автоматный язык

эквивалентны.

3.9.  Минимизация конечных автоматов

Цель. Показать, что для каждого регулярного множества однозначно находится конечный автомат с минимальным числом состояний.

По данному конечному автомату М можно найти наименьший эквивалентный ему конечный автомат, исключив все недостижимые состояния и затем склеив лишнее состояние. Лишнее состояние определяется с помощью разбиения множества всех состояний на классы эквивалентности так, что каждый класс содержит неразличимые состояния и выбирается как можно шире. Потом из каждого класса берётся один представитель в качестве состояния сокращенного (или приведённого) автомата.

Таким образом можно сократить объём автомата М, если М содержит недостижимые состояния или два или более неразличимые состояния. Полученный автомат будет наименьший из конечных автоматов, распознающий регулярное множество, определяемое первоначальным автоматом М.

Определение.

Пусть М = (Q, S, d, q0, F) конечный автомат, а q1 и q2 два его различные состояния. Будем говорить, что цепочка хÎS* различает состояния q1 и q2, если (q1, х)⊢∗(q3, е), (q2, х)⊢∗(q4 ,е) и одно из состояний q3 и q4 принадлежит F. Будем говорить, что q1 и q2 k- неразличимы, и писать q1q2, если не существует такой цепочки х, различающей q1 и q2, у которой |xk. Будем говорить, что состояния q1 и q2, неразличимы и писать q1≡q2, если они k – неразличимы для любого k³0.

Состояние qÎQ называется недостижимым, если не существует такой входной цепочки х, что (q0, х)⊢∗(q, е).

Автомат М называется приведенным, если в Q нет недостижимых состояний и нет двух неразличимых состояний.

Пример. Рассмотрим конечный автомат М с диаграммой (рис. 3.4).

Рис. 3.4. Диаграмма автомата М

Чтобы сократить М, заметим сначала, что состояния F и G недостижимы из начального состояния А, так что их можно устранить. Пока качественно, а позже строго мы установим, что классами эквивалентности отношений являются {A}, {B, D} и {C, E}. Тогда, взяв представителями этих множеств p, q и r, можно получить конечный автомат вида (рис. 3.5).

Рис. 3.5. Приведенный конечный автомат

Перед тем, как построить алгоритм канонического конечного автомата, введём лемму:

Лемма.

Пусть М = (Q, S, d, q0, F) конечный автомат с n состояниями. Состояния q1 и q2 неразличимы тогда и только тогда, когда они (n-2) – неразличимы, т. е. если два состояния можно различить, то их можно различить с помощью входной цепочки, длина которой меньше числа состояний автомата.

Алгоритм построения канонического конечного автомата.

Вход.

Конечный автомат М = (Q, S, d, q0, F).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47