
- •Кафедра «Информатика и программное обеспечение»
- •Курсовой проект
- •Введение
- •1.Построение праволинейной грамматики
- •2.Построение автоматной грамматики по праволинейной
- •3.Построение недетерминированного конечного автомата
- •4.Преобразование недетерминированного конечного автомата в детерминированный
- •5.Минимизация числа состояний автомата
- •6.Программная реализация конечного автомата
- •7.Использование сетей петри при переходе от грамматики к минимальному автомату
- •8.Размещение состояний автомата
- •9.Структурный синтез автомата
- •10.Реализация автомата
- •Логические элементы
- •Заключение
- •Список использованной литературы
5.Минимизация числа состояний автомата
Минимизация автомата, эквивалентного полученному в предыдущем разделе полностью определенному автомату, проводится в два этапа. Сначала множество состояний автомата разбивается на классы эквивалентности, а затем строится минимальный (приведенный) автомат.
Рассмотрим алгоритм приведения автомата для случая модели Мура, к которой относится рассматриваемый пример.
Построим треугольную таблицу (табл.6), клетки которой соответствуют всем парам рабочих состояний (qi,qj) ij, т.е. состояний, отличных от q20 «Ошибка». Если для рабочих состояний qi и qj в табл.5 существует входной символ х1, при котором переход из qi осуществляется в одно из рабочих состояний, а из qj в состояние ошибки, то состояние qi и qj не эквивалентны, и соответствующая им клетка помечается крестом. То есть, если какие - либо две строчки табл.5 содержат разное число рабочих состояний или отличаются позициями, занимаемыми рабочими состояниями, то обозначающие эти строки состояния не эквивалентны. В противном случае в клетку табл.6 с координатами qi, qj запишем каждую пару состояний (qs,qt), ts, в которые автомат может перейти из qi и qj при подаче одного и того же входного символа (количество этих пар равно числу столбцов с рабочими состояниями в строке qi и qj табл.5).
В рассматриваемом случае в табл.5 автомат из состояния qo переходит в рабочие состояния при входных символах х3, х5, х7, при остальных входных символах, qo переходит в состояние q20 «Ошибка». Других состояний, которые оказываются в рабочих состояниях при том же наборе входных символов (х3, х5, х7) нет, поэтому в столбце qo табл.6 все клетки следует вычеркнуть. То же можно сделать со столбцами q1,3, q2. Из состояния q4 автомат переходит в состояния q6 при входном символе х1, и при этих же символах в рабочие состояния автомат переходит из состояний q13, q16, q18, поэтому три клетки в столбце q4 не должны вычеркиваться. Проделав эту операцию со всеми столбцами, теперь необходимо определить явность эквивалентности пар состояний. Для этого берем не вычеркнутые клетки в табл.5, например {q4 и q13} и проверяем на рис.4 эти два состояния. Если оба состояния переходят при одинаковом xi, в одно и то же состояние qi, то пары состояний явно эквиваленты. В нашем примере, пары {q4 и q13} переходят при одинаковом x1, но в разные состояния (q4 в q6, а q13 в q19), следовательно пара состояний не эквивалента и клетку необходимо вычеркнуть. А пара состояний {q13 и q16} будет эквивалента, т.к. переход осуществляется по x1 в состояние q19 как из q13, так и из q16.
Таблица 6
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1,3 |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
9 |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
|
|
10 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
|
11,17 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
|
12 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
|
13 |
X |
X |
X |
+ |
X |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
|
14 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|
|
|
|
|
15 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|
X |
X |
|
|
|
|
16 |
X |
X |
X |
+ |
X |
X |
X |
X |
X |
X |
X |
X |
|
X |
X |
|
|
|
18 |
X |
X |
X |
+ |
X |
X |
X |
X |
X |
X |
X |
X |
|
X |
X |
|
|
|
19 |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
X |
|
|
0 |
1,3 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11,17 |
12 |
13 |
14 |
15 |
16 |
18 |
19 |
Не вычеркнутые клетки результирующей таблицы соответствуют всем парам эквивалентных состояний.
Класс эквивалентности образуется состояниями, которые попарно эквивалентны. В данном случае образуются следующие пары эквивалентных состояний: {q5 и q6} {q5 и q7} {q6 и q7} {q8 и q9} {q12 и q15} {q13 и q16} {q13 и q18} {q16 и q18}.
Всего восемь пар попарно эквивалентных состояний. Эти состояния образуют пять классов эквивалентности: {q5, q6, q7}, {q8, q9}, {q12 , q15}, {q13, q16 , q18}.
Каждое состояние, не вошедшее ни в один класс эквивалентности, эквивалентно лишь само себе и само образует этот класс. В рассматриваемом примере к нерасчлененным пяти классам необходимо добавить еще семь классов эквивалентности: q0; q1,3; q2; q4; q11,17; q14; q19.
Состояние минимального автомата обозначим буквами r с индексами
r0 = {q0}; r1={q1,3}; r2={q2}; r3={q4}; r4={q5, q6, q7}; r5={q8, q9}; r6={q10}; r7={q11,17}; r8={q12, q15}; r9={q13, q16, q18}; r10={q14}; r11={q19}.
Таким образом, минимальный автомат содержит 12 состояний, не считая состояния r12={q20} "Ошибка". Орграф этого автомата приводится на рис.5 (без указания состояния «Ошибка»), а таблица переходов в табл.7.
Рис.5
Проанализировав полученный граф, можно выявить девять цепочек переходов по графу: 51400; 5145; 56100; 5615; 700; 75; 3501; 36751; 37751; и три цепочки: 51403; 56103l; 703; при которых происходит возвращение к начальному состоянию автомата S = r0.
В этой таблице, также как и в табл. 5, незаполненные клетки соответ-ствуют состоянию «Ошибка».
Таблица 7
|
X0 |
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
r0 |
|
|
|
r6 |
|
r1 |
|
r4 |
r1 |
|
|
r2 |
|
|
|
r3 |
|
r2 |
|
|
|
|
r4 |
|
|
|
r3 |
|
r4 |
|
|
|
|
|
|
r4 |
r5 |
|
|
|
|
r11 |
|
|
r5 |
r11 |
|
|
r0 |
|
|
|
|
r6 |
|
|
|
|
|
|
r7 |
r10 |
r7 |
r9 |
|
|
|
|
|
|
r8 |
r8 |
|
|
|
|
|
r9 |
|
|
r9 |
|
r11 |
|
|
|
|
|
|
r10 |
|
|
|
|
|
|
|
r8 |
r11 |
|
|
|
|
|
|
|
|