Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретная математика.doc
Скачиваний:
123
Добавлен:
10.05.2014
Размер:
905.22 Кб
Скачать

9. Минимизация числа состояний автомата

9.1. Лингвистический автомат.

Алгоритм на основании языка L, порождаемого автоматом.

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

Строятся матрицы D0,D1,… указывающие различимость состояний по строкам длиныn. Состоянияqiиqjразличимы по строке длины 0( 1 на пересечении строкиiи столбцаjматрицыD0):qiD0qj (qiK) & (qjK)(qiK)&(qjK).

Далее определение по индукции: при i> 0 состоянияqkиqjразличимы по строке длиныi, т.е. (qkDiqj)qkDi-1qjилиaVT , такой, чтоF(qk,a)Di-1F(qj,a).

Состояние qkразличимо от состоянияqj, еслиi0 , такое, чтоqkDiqj.

Очевидно, что qkDiqjсуществует строка Х,Хi, что (F(qi,X)K) & (F(qj,X)K)(F(qi,X)K)&(F(qj, ,X)K).

Пример.

Диаграмма автомата представлена на рис. 16.

Рис.16

Матрицы, получающиеся при анализе автомата:

D0

F T F T

T F T

T F

T

D1

F T F T

T T T

T F

T

D1=D2

Из анализа полученной матрицы получаем три класса эквивалентных состояний:

K1= {1, 4},K2= {2},K3= {3,5}. Диаграмма полученного автомата представлена на рис. 17.

Рис.17

9.2. Метод Хафмена.

Этот метод работает как для лингвистических автоматов, так и для автоматов Мили.

Идея: объединение предположительно эквивалентных состояний, а затем проверка, являются ли состояния действительно эквивалентными. Затем, если состояния не эквивалентны, классы разбиваем на подклассы, и проверка повторяется. Если состояния ведут себя одинаково, то процедура закончена, и получившиеся классы являются состояниями минимизированного автомата.

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

Например, рассмотрим автомат, диаграмма которого представлена на рис. 18

Рис.18

1. Составляем таблицы переходов и выходов.

A

B

C

D

E

F

G

0

B

1

D

1

E

0

D

1

A

0

G

0

D

0

1

F

0

C

0

G

1

C

0

F

1

E

1

C

1

2. Составляем классы предположительно эквивалентных состояний (т.е. состояний, при переходе из которых на одинаковые входы выдаются одинаковые выходы).

В данном случае это классы K1= {A,B,D},K2= {C,E,F,G}

3. Составляем таблицу переходов, в которой вместо состояний указываются классы, которым принадлежат состояния.

A

B

C

D

E

F

G

0

K1

K1

K2

K1

K1

K2

K1

1

K2

K2

K2

K2

K2

K2

K2

Если в пределах одного класса состояния ведут себя по-разному, то класс разбивается на соответствующие подклассы, и возвращаемся к шагу 3.

(В нашем случае классы разбиваются, таблицы приводятся после алгоритма).

4. Если во всех классах состояния ведут себя одинаково, то это действительно классы эквивалентности.

Строится автомат, состояниями которого являются классы эквивалентности исходного автомата.

В нашем примере класс К2 разбивается на 2 класса - К3= {C,F}, К4 = {E,G}

A

B

C

D

E

F

G

0

K1

K1

К4

K1

К4

К4

К4

1

К3

К3

К4

К3

К3

К4

К3

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

Рис.19

Метод Хафмена может быть применен и к лингвистическим автоматам. В этом случае начальное разбиение происходит на класс конечных состояний и тех состояний, которые не являются конечными.

Применение метода к автомату, диаграмма которого представлена на рис. 16, имеющему таблицу переходов

1

2

3

4

5

a

2

2

1

2

4

b

3

4

2

5

2

и конечные состояния 3, 5, на первом шаге дает классы К1 = {3, 5},K2= {1, 2, 4} и, соответственно, получаем таблицу переходов:

1

2

3

4

5

a

K2

K2

K2

K2

K2

b

К1

K2

K2

К1

K2

Видно, что класс K2 разбивается на два классаK3= {1, 4},K4={2}. Получается таблица переходов

1

2

3

4

5

a

K4

K4

K3

K4

K3

b

К1

K3

K4

К1

K4

Очевидно, что, как и следовало ожидать, получившийся минимальный автомат совпадает с тем, который получен в пункте 9.1. Диаграмма полученного автомата приведена на рис. 17.

9.3. Минимизация не полностью определенных автоматов (на примере лингвистического автомата, диаграмма которого представлена на рис. 15 ).

Повторение, рис. 15.

При минимизации не полностью определенных лингвистических автоматов начальное разбиение множества состояний делается так же, как для полностью определённого автомата, на конечные и не конечные состояния. Для данного случая классы K1={B,C,F} – конечные состояния,K2= {A,D,E,G} – не конечные. Приведем таблицы переходов состояний для этого автомата:

Исходная таблица:

A

B

C

D

E

F

G

a

C

B

B

F

-

F

F

b

E

E

G

E

-

E

E

c

-

-

-

-

D

-

D

Проставляем классы состояний (в верхней строке указываем номер класса состояния):

2

1

1

2

2

1

2

A

B

C

D

E

F

G

a

K1

K1

K1

K1

-

K1

K1

b

K2

K2

K2

K2

-

K2

K2

c

-

-

-

-

K2

-

K2

Далее разбиваем классы на подклассы в соответствии с одинаковостью- различием столбцов. Класс K2разбивается на 3 классаK3= {A,D},K4 = {E},K5= {G}.

3

1

1

3

4

1

5

A

B

C

D

E

F

G

a

K1

K1

K1

K1

-

K1

K1

b

K4

K4

K5

K4

-

K4

K4

c

-

-

-

-

K3

-

K3

Получившаяся таблица показывает, что класс K1 так же разбивается на два классаK6= {B,F},K7 = {C}.

3

6

7

3

4

6

5

A

B

C

D

E

F

G

a

K7

K6

K6

K6

-

K6

K6

b

K4

K4

K5

K4

-

K4

K4

c

-

-

-

-

K3

-

K3

И, наконец, разбивается класс K3 :K8= {A},K9={D}.

8

6

7

9

4

6

5

A

B

C

D

E

F

G

a

K7

K6

K6

K6

-

K6

K6

b

K4

K4

K5

K4

-

K4

K4

c

-

-

-

-

K9

-

K9

Это разбиение не приводит в дальнейшему разбиению классов и получившийся автомат – минимальный. Диаграмма автомата, на которой все классы, кроме 6-го, поименованы единственным входящим в них состоянием, а класс K6 – символомB, представлена на рис. 20.

Рис.20