Материал: Ковригин Теория автоматов Лабораторный практикум 2012

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

start

1

0

 

1

 

 

 

 

 

S0

S1

S2

S3

ε

 

 

0

 

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

S5

S6

ε

ε

S10

S11

ε

ε

S15

S16

ε

ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S4

 

 

 

S9

 

 

S14

 

 

 

S19

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

ε

S7

S8

 

 

S12

S13

 

 

S17

S18

ε

 

 

 

 

ε

ε

 

 

 

 

 

 

 

 

 

 

εε

ε

 

1

0

1

S20

S21

S22

S23

Рис. 6.10. Граф переходов недетерминированного конечного автомата, соответствующего регулярному выражению 101((0|1)(0|1)(0|1))+101

Таблица 6.1 Таблица переходов недетерминированного конечного автомата,

соответствующего регулярному выражению 101((0|1)(0|1)(0|1))+101

Исходное

 

Следующее состояние

 

состояние

0

 

1

ε

S0

-

 

S1

-

S1

S2

 

-

-

S2

-

 

S3

-

S3

-

 

-

S4

S4

-

 

-

S5, S7

S5

S6

 

-

-

S6

-

 

-

S9

S7

-

 

S8

-

S8

-

 

-

S9

S9

-

 

-

S10, S12

S10

S11

 

-

-

S11

-

 

-

S14

S12

-

 

S13

-

S13

-

 

-

S14

S14

-

 

-

S15,S17

S15

S16

 

-

-

S16

-

 

-

S19

S17

-

 

S18

-

S18

-

 

-

S19

S19

-

 

-

S20

S20

-

 

S21

-

S21

S22

 

-

-

S22

-

 

S23

-

S23

-

 

-

-

Синтез детерминированного конечного автомата

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

1.Строим множество zε(S0) = {S0}, ставим ему в соответствие состояние ДКА A, которое будет стартовым (табл. 6.2).

2.Строим множество zε(M0(A)) = Ø, т.е. из A по 0 будет переход

97

в тупиковое состояние. Строим множество zε(M1(A)) = {S2}, ставим ему в соответствие состояние ДКА B. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.3).

Таблица 6.2

Синтез таблицы переходов ДКА (шаг 1)

ДКА

НКА

0

1

 

A

S0

 

 

 

 

 

 

Таблица 6.3

 

Синтез таблицы переходов ДКА (шаг 2)

 

 

 

 

 

 

 

ДКА

НКА

0

1

 

A (*)

S0

Ø

B

 

B

S1

 

 

 

3. Строим множество zε(M0(B)) = {S2}, ставим ему в соответствие состояние ДКА C. Строим множество zε(M1(B)) = Ø, т.е. из B по 0 будет переход в тупиковое состояние. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.4).

 

 

 

Таблица 6.4

 

Синтез таблицы переходов ДКА (шаг 3)

 

 

 

 

 

 

 

ДКА

НКА

0

1

 

A (*)

S0

Ø

B

 

B (*)

S1

C

Ø

 

C

S2

 

 

 

4.Строим множество zε(M0(C)) = Ø, т.е. из C по 0 будет переход

втупиковое состояние. Строим множество zε(M1(C)) = {S3, S4, S5, S7}, ставим ему в соответствие состояние ДКА D. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.5).

5.Строим множество zε(M0(D)) = {S6, S9, S10, S12}, ставим ему

всоответствие состояние ДКА E. Строим множество zε(M1(D)) =

98

= {S7, S9, S10, S12}, ставим ему в соответствие состояние ДКА F. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.6).

Таблица 6.5

Синтез таблицы переходов ДКА (шаг 4)

ДКА

НКА

0

1

 

A (*)

S0

Ø

B

 

B (*)

S1

C

Ø

 

C (*)

S2

Ø

D

 

D

S3, S4, S5, S7

 

 

 

 

 

 

Таблица 6.6

 

Синтез таблицы переходов ДКА (шаг 5)

 

 

 

 

 

 

 

ДКА

НКА

0

1

 

A (*)

S0

Ø

B

B (*)

S1

C

Ø

 

C (*)

S2

Ø

D

 

D (*)

S3, S4, S5, S7

E

F

E

S6, S9, S10, S12

 

 

 

FS8, S9, S10, S12

6.Строим множество zε(M0(E)) = {S11, S14, S15, S17}, ставим ему в соответствие состояние ДКА G. Строим множество

zε(M1(E)) = {S13, S14, S15, S17}, ставим ему в соответствие состояние ДКА H. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.7).

7.Строим множество zε(M0(F)) = {S11, S14, S15, S17}. Состоя-

ние, соответствующее такому множеству, уже есть в ДКА (G).

Строим множество zε(M1(F)) = {S13, S14, S15, S17}. Состояние, соответствующее такому множеству, также есть в ДКА (H). Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.8).

8.Строим множество zε(M0(G)) = {S4, S5, S7, S16, S19, S20},

ставим ему в соответствие состояние ДКА I. Строим множество

zε(M1(G)) = {S4, S5, S7, S18, S19, S20}, ставим ему в соответствие состояние ДКА J. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.9).

99

 

 

 

Таблица 6.7

 

Синтез таблицы переходов ДКА (шаг 6)

 

 

 

 

 

 

 

ДКА

НКА

0

1

 

A (*)

S0

Ø

B

 

B (*)

S1

C

Ø

 

C (*)

S2

Ø

D

 

D (*)

S3, S4, S5, S7

E

F

 

E (*)

S6, S9, S10, S12

G

H

 

F

S8, S9, S10, S12

 

 

 

G

S11, S14, S15, S17

 

 

 

H

S13, S14, S15, S17

 

 

 

 

 

 

Таблица 6.8

 

Синтез таблицы переходов ДКА (шаг 7)

 

 

 

 

 

 

 

ДКА

НКА

0

1

 

A (*)

S0

Ø

B

 

B (*)

S1

C

Ø

 

C (*)

S2

Ø

D

 

D (*)

S3, S4, S5, S7

E

F

 

E (*)

S6, S9, S10, S12

G

H

 

F (*)

S8, S9, S10, S12

G

H

 

G

S11, S14, S15, S17

 

 

 

H

S13, S14, S15, S17

 

 

 

9. Строим множество zε(M0(H)) = {S11, S14, S15, S17}. Состоя-

ние, соответствующее такому множеству, уже есть в ДКА (I).

Строим множество zε(M1(H)) = {S4, S5, S7, S18, S19, S20}. Состоя-

ние, соответствующее такому множеству также есть в ДКА (J). Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние (табл. 6.10).

10.Строим множество zε(M0(I)) = {S6, S9, S10, S12}. Состояние, соответствующее такому множеству, уже есть в ДКА (E). Строим множество zε(M1(I)) = {S8, S9, S10, S12, S21}, ставим ему в соответствие состояние ДКА K. Заполняем соответствующим образом таблицу переходов. Помечаем проанализированное состояние

(табл. 6.11).

100

Источник: https://studfile.net/preview/16708773/