Эквивалентные состояния автоматов.
В этом параграфе мы решим следующую задачу: по данному описанию автомата построить новый автомат
, который покрывает
(возможно, эквивалентен
) и имеет наименьшее число состояний среди всех автоматов, покрывающих
.
Существует эффективный метод решения этой задачи, если функции всюду определены. Для этого сначала определяют эквивалентные состояния автомата, а затем склеивают все эквивалентные состояния в одно.
Определение 1: Состояния и
называются
- эквивалентными, если для всякой входной строки
длины
имеем:
. В этом случае будем писать:
. Если
, то будем говорить, что состояния
и
эквивалентны, и писать:
.
Заметим, что и
– действительно отношение эквивалентности. Классы эквивалентности относительно
, являются множествами всех пар состояний, перерабатывающих каждый входной символ в фиксированный выходной символ
. Это означает, что
. Обозначим через
отношения эквивалентности
(т.е. множество всех пар эквивалентных состояний). Обозначим через
дополнение к
, т.е.
.
Пусть, например, даны таблицы состояний автоматов и
:
Текущее состояние | ν 0 1 | ξ 0 1 |
S0 S1 S2 | S2 S1 S0 S2 S0 S1 | 0 1 1 0 0 1 |
Текущее состояние | n 0 1 | x 0 1 |
S0 S1 | S0 S1 S0 S0 | 0 1 1 0 |
G (E1) = {(S0, S2), (S2, S0), (S0, S0), (S1, S1), (S2, S2)},
G (E1) = {(S0, S1), (S1, S0), (S1, S2), (S2, S1)}.
Задача минимизации количества состояний в полностью описанном автомате сводится к определению попарно эквивалентных состояний и последующему их склеиванию.
Оказывается, что эффективнее всего начать с выявления неэквивалентных состояний. Чтобы показать это, определим новые функции и
.
Определение 2: Положим: . Это означает, что
есть последнее состояние автомата, начавшего работу в состоянии
, прочитавшего входную строку
длины
. Положим далее:
. Это означает, что
есть последний символ выходной строки автомата, начавшего работать в состоянии
и считавшего ту же входную строку
.