
Минимизация автоматов
Множество определённых цепочек может допускаться различными конечными автоматами. Минимизация конечных автоматов предполагает отыскание автомата с минимальным числом состояний, допускающего заданный набор цепочек (конкретный язык).
Оказывается, что существует и единственен автомат, допускающий заданное множество цепочек, который имеет меньшее число состояний, чем любой другой, допускающий то же множество (единственность понимается с точностью до переобозначения состояний). Такой автомат называется минимальным.
Состояние S автомата M называется неотличимым от состояния Т автомата N, если и только если автомат М, начав работу с состояния S, будет допускать в точности те же цепочки, что и автомат N, начавший работать с состояния Т.
Автоматы М и N неотличимы тогда и только тогда, когда их начальные состояния неотличимы.
Таким образом, неотличимость есть отношение, заданное на множестве автоматов. Оно рефлексивно, симметрично и транзитивно, следовательно, оно является отношением эквивалентности. Значит, всё множество конечных автоматов может быть разбито на набор непересекающихся подмножеств, в каждом из которых автоматы неотличимы.
В дальнейшем мы будем рассматривать автоматы с одним и тем же множеством символов.
Можно доказать следующую теорему: состояния S и Т эквивалентны тогда и только тогда, когда выполняются следующие условия:
Условие подобия: состояния S и Т либо допускающие, либо отвергающие одновременно.
Условие преемственности: для всех входных символов состояния S и Т должны переходить в эквивалентные состояния, т.е. их преемники эквивалентны.
Состояние S автомата М называется недостижимым, если ни для какой входной цепочки в состояние S нельзя попасть из начального состояния.
Для определения недостижимых состояний организуют специальную таблицу, которую заполняют следующим образом. Включим в таблицу начальное состояние q0, затем будем включать в неё состояния, в которые можно попасть из q0 по каждому входному символу. Затем для каждого состояния, включённого в таблицу, определим состояния, которые достижимы из него по каждому входному символу и т.д.
Процесс заканчивается тогда, когда в таблицу не будет включаться новых состояний. Этот алгоритм конечен. Не включённые в таблицу состояния будут недостижимы.
Автомат называется приведённым, если он не содержит недостижимых состояний и никакие два его состояния не эквивалентны друг другу.
Чтобы получить приведённый автомат, необходимо выбросить недостижимые состояния и соединить эквивалентные состояния в одно состояние. Все приведённые автоматы, допускающие один и тот же язык, эквивалентны с точностью до обозначения состояния.
Имеется алгоритм приведения, основанный на разбиении на блоки. Идея алгоритма такова: все состояния делят на непересекающиеся множества так, чтобы неэквивалентные состояния попали в разные блоки. Сначала, используя условие подобия, множество состояний делим на два непересекающихся подмножества. Далее проверяем, что происходит под действием каждого входного символа с состояниями блока. При нарушении условия преемственности разбиваем блоки на меньшие относительно входного символа.