
§3. Эквивалентные состояния автоматов.
В этом параграфе мы решим следующую задачу: по данному описанию автомата построить новый автомат , который покрывает (возможно, эквивалентен ) и имеет наименьшее число состояний среди всех автоматов, покрывающих .
Существует эффективный метод решения этой задачи, если функции всюду определены. Для этого сначала определяют эквивалентные состояния автомата, а затем склеивают все эквивалентные состояния в одно.
Определение
1: Состояния
и
называются
-
эквивалентными,
если для всякой входной строки
длины
имеем:
.
В этом случае будем писать:
.
Если
,
то будем говорить, что состояния
и
эквивалентны,
и писать:
.
Заметим, что
и
– действительно отношение эквивалентности.
Классы эквивалентности относительно
,
являются множествами всех пар состояний,
перерабатывающих каждый входной символ
в фиксированный выходной символ
.
Это означает, что
.
Обозначим через
отношения эквивалентности
(т.е. множество всех пар эквивалентных
состояний). Обозначим через
дополнение к
,
т.е.
.
Пусть, например, даны таблицы состояний автоматов и :
Текущее состояние |
ν 0 1 |
ξ 0 1 |
S0 S1 S2 |
S2 S1 S0 S2 S0 S1 |
0 1 1 0 0 1 |
Текущее состояние |
0 1 |
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: Положим:
.
Это означает, что
есть последнее состояние автомата,
начавшего работу в состоянии
,
прочитавшего входную строку
длины
.
Положим далее:
.
Это означает, что
есть последний символ выходной строки
автомата, начавшего работать в состоянии
и считавшего ту же входную строку
.
Теорема 1:
Если
,
то либо
,
либо для подходящей строки
имеем
.
Доказательство:
Утверждение
означает, что
для подходящей строки
.
При необходимости мы можем укоротить
входную строку так, чтобы входные строки,
отвечающие
и
,
отличались только последними символами.
Пусть это уже сделано. Если после этого
,
то
.
Если же
,
то
.
Но
при условии
.
Таким образом, последние выходные
символы автомата, считавшего
,
различны, если он исходил из начальных
состояний
и
соответственно.
Чтобы выходы отличались, то есть
должно быть выполнено условие:
.
Иначе последний входной символ
даст один и тот же символ на выходе.
Теорема 2:
Если
,
но
для всех
,
то
для подходящего элемента
.
Эту теорему можно
переформулировать так: если
,
то для подходящего элемента
имеем:
.
Эта теорема утверждает, что состояния
и
,
эквивалентные относительно всех входных
последовательностей длины
,
могут стать неэквивалентными относительно
последовательностей длины
только в том случае, когда имеется символ
,
переводящий
и
соответственно в состояния
,
не эквивалентные относительно подходящей
входной последовательности длины
.
Это означает, что на
шаге достаточно исследовать состояния
в
и установить, найдется ли пара
,
переходящая в пару
со свойством
.
В этом случае
.
Если мы уже
определили
,
то
состоит из
и таких упорядоченных пар
,
что для некоторого
имеем:
.
В общем случае нужно исследовать каждый
раз только
.
Таким способом мы сумеем рекуррентно
определить
и, наконец,
- дополнение к
в булевой алгебре подмножеств
.
Доказательство:
Доказательство теоремы проводится
непосредственно. Если пара
лежит в
,
то она лежит в
.
Значит нужно рассмотреть лишь такие
пары
,
что для некоторой строки
имеем
,
а для всех строк
имеем
.
Но в точности те пары, которые переводятся
в
,
-м
входным символом
и стало быть, в
,
некоторым символом
.
Лемма:
Если
,
то
для всех
.
Действительно,
дальнейшие шаги не добавят новых пар
состояний, т.к. согласно теореме 2,
дополнение
состоит из тех пар, которые переводятся
подходящим символом
в дополнение
.
Пример: Пусть задана таблица состояний некоторого автомата.
Текущее состояние |
След. состояние 0 1 |
Выход 0 1 |
S1 |
S1 S2 |
1 0 |
S2 |
S1 S3 |
1 0 |
S3 |
S5 S1 |
1 0 |
S4 |
S4 S2 |
1 0 |
S5 |
S4 S3 |
1 1 |
Для этого автомата
.
Иными словами:
.
Первое разбиение на классы эквивалентности:
,
.
Вход 0 переводит
в состояние
,
в
:
,
.
Поэтому вход 01
дает Следующие результаты:
и
.
Отсюда
и
.
Аналогично:
и
,
так что имеет место условие:
.
Далее, входной
символ 1 переводит состояние
в
,
а
переводит в состояние
.
Другими словами:
и
.
Поэтому
,
т.к.
и
.
Аналогично:
,
откуда следует:
.
Таким образом,
разбивает
на классы эквивалентности:
,
,
,
.
Дальнейший перебор
показывает, что
.
Таким образом,
и
,
а остальные пары состояний неэквивалентны.