В некоторых случаях после получения отмеченной таблицы переходов автомата возможен четвертый этап минимизации. Правда этот этап не всегда приводит к уменьшению числа состояний и часто является проверочным. Алгоритм этого этапа рассмотрим на примере.
Пусть есть автомат, заданный следующей отмеченной таблицей переходов:
yg | y1 | y1 | y1 | y2 | y1 | y2 | y2 | y2 |
xj\ai | ||||||||
x1 | ||||||||
x2 | ||||||||
X3 |
Алгоритм минимизации заключается в следующем:
1. Все внутренние состояния разбиваются на группы по числу выходных сигналов. В нашем случае есть два выходных сигнала y 1 и y 2 и, следовательно, будет две группы, которые мы обозначим буквами a и b.
2. По таблице переходов автомата определяют, к каким группам принадлежат внутренние состояния, в которые автомат переходит из данного состояния под воздействием каждой буквы входного алфавита. Эти состояния запишем в виде последовательности букв под каждым из состояний автомата. Например, из состояния 0 автомат переходит в состояния 2, 3 и 1, которые принадлежат соответственно к следующим группам a, b и a. Эта последовательность букв (aba) и записывается под состоянием 0.
|
|
3. Проводят новое разделение внутренних состояний на группы, объединяя в каждой группе состояния, отмеченные одинаковой последовательностью букв. В нашем случае каждая из двух групп распадается на две группы, по числу различных последовательностей букв:
4. Пользуясь таблицей переходов автомата, вновь отмечают каждое состояние последовательностью букв. Разделение состояний на новые группы продолжают до тех пор, пока новые группы состояний появляться не будут. В нашем случае, минимизация заканчивается на втором шаге, так как все состояния, входящие в группы а и с отмечены одинаковыми последовательностями букв, а группа b и d содержат только по одному состоянию.
Все состояния, входящие в каждую из этих групп, можно заменить одним состоянием той же группы. Взяв в качестве представителей групп состояния 0, 1, 3 и 6 и обозначив их символами a 0, a 1, a 2 и a 3 соответственно, получим следующую таблицу переходов с минимальным числом внутренних состояний.
yg | y1 | y1 | y2 | y2 |
xj\ai | a0 | a1 | a2 | a3 |
x1 | a0 | a2 | a0 | a2 |
x2 | a2 | a1 | a2 | a1 |
x3 | a1 | a3 | a1 | a3 |
Для построения автомата Мили, воспользуемся рассмотренным ранее алгоритмом, для чего в каждую клетку >совмещенной таблицы переходов и выходов запишем значения выходного сигнала, которым отмечено, находящееся здесь состояние.
xj\ai | a0 | a1 | a2 | a3 |
x1 | a0/y1 | a2/y2 | a0/y1 | a2/y2 |
x2 | a2/y2 | a1/y1 | a2/y2 | a1/y1 |
x3 | a1/y1 | a3/y2 | a1/y1 | a3/y2 |
В полученной таблице колонки, помеченные состояниями a 0 и a 2, a 1 и a 3 идентичны, что позволяет при минимизации исключить состояния a 2 и a 3. В результате получаем таблицу переходов и выходов автомата Мили имеющего два состояния a 0 и a 1.
|
|
xj\ai | a0 | a1 |
x1 | a0/y1 | a0/y2 |
x2 | a0/y2 | a1/y1 |
x3 | a1/y1 | a1/y2 |