Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теория алгоритмов (конспект).doc
Скачиваний:
81
Добавлен:
03.03.2016
Размер:
1.41 Mб
Скачать

Конечные автоматы

Детерминированным конечным автоматом называется произвольная пятерка следующего вида: M ={Q, , δ, S ,F}

При этом:

Q, , F – конечные множества

SQ, FQ, δ:Q→Q

δ – функция перехода из Q →Q

– алфавит автомата М (входной)

Q – множество состояний конечного автомата (внутренний алфавит)

S – начальное состояние

F – множество конечных состояний

δiq1q2Q и a q2 = δ(q1,a)

Если q1q2Q и для некоторых a можно записать q2 = δ(q1,a), то говорят что автомат М переходит из состояния q1 в состояние q2 под действием а.

Конечные автоматы изображаются графами(рис.3): вершины – состояния, дуги – переход из 1 состояния в другое при этом над дугой пишут символы, под влиянием которых осуществляется переход.

Рисунок 3 – Изображение конечного автомата.

∆ - начальное состояние

- конечное состояние

= {a,b}

Q = {q0, q1}

S = q0

F = {q1}

Прямая соединительная линия 6

Q

a

b

q0

q0

q1

q1

q0

q1

Пример: является ли слово mamba подсловом некоторого алфавита.

= {m,a,b,_,др}

Q = {q0, q1, q2, q3, q4, q5, q6}

S = q0

F = {q5, q6}

Прямая соединительная линия 9

Q

a

b

m

_

др

q0

q0

q0

q1

q6

q0

q1

q2

q0

q1

q6

q0

q2

q0

q0

q3

q6

q0

q3

q2

q4

q1

q6

q0

q4

q5

q0

q1

q6

q0

Кодирование входного алфавита и состояний

С

a

000

B

001

m

011

_

010

др

110

Q

С

q0

000

q1

001

q2

011

q3

010

q4

110

q5

111

q6

101

Реализация конечного автомата

Q^t

Q^(t+1)

X0

X1

X2

R0

R1

R2

R0

R1

R2

0

0

0

0

0

0

0

0

0

0

0

1

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

0

1

0

0

0

0

1

0

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

1

0

1

1

0

0

1

0

0

1

0

0

0

0

1

1

0

0

1

0

0

1

0

1

0

0

0

1

1

0

1

1

1

0

0

0

1

0

0

0

0

0

0

0

1

1

0

0

0

0

0

1

0

1

1

0

0

0

0

1

1

0

1

1

0

1

0

0

1

0

0

1

1

1

0

1

1

1

0

0

1

1

0

0

0

0

0

0

0

1

0

0

1

1

0

0

1

0

1

0

1

1

0

0

1

1

0

1

0

0

0

1

0

1

0

0

1

0

1

0

1

1

1

0

0

1

0

0

0

0

0

0

0

1

1

0

1

1

1

0

0

1

1

1

0

0

0

0

0

1

1

1

1

0

0

0

1

0

1

0

1

1

0

1

0

1

1

1

0

1

1

0

0

0

0

Составим функцию для r0:

r0 = x0x1x2 r0x1x2 r0r1r2x1x2

Составим функцию для r1:

r1 = r0x1x2 r0r1r2x1 r1r2x1x2r1r2x1x2

Составим функцию для r2:

r2 = r1r2x1x2 r1x1x2 x0x1x2r1r2x1x2