Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции и практики / все лекции.doc
Скачиваний:
69
Добавлен:
20.06.2014
Размер:
1.14 Mб
Скачать

Минимизация автоматов

Множество определённых цепочек может допускаться различными конечными автоматами. Минимизация конечных автоматов предполагает отыскание автомата с минимальным числом состояний, допускающего заданный набор цепочек (конкретный язык).

Оказывается, что существует и единственен автомат, допускающий заданное множество цепочек, который имеет меньшее число состояний, чем любой другой, допускающий то же множество (единственность понимается с точностью до переобозначения состояний). Такой автомат называется минимальным.

Состояние S автомата M называется неотличимым от состояния Т автомата N, если и только если автомат М, начав работу с состояния S, будет допускать в точности те же цепочки, что и автомат N, начавший работать с состояния Т.

Автоматы М и N неотличимы тогда и только тогда, когда их начальные состояния неотличимы.

Таким образом, неотличимость есть отношение, заданное на множестве автоматов. Оно рефлексивно, симметрично и транзитивно, следовательно, оно является отношением эквивалентности. Значит, всё множество конечных автоматов может быть разбито на набор непересекающихся подмножеств, в каждом из которых автоматы неотличимы.

В дальнейшем мы будем рассматривать автоматы с одним и тем же множеством символов.

Можно доказать следующую теорему: состояния S и Т эквивалентны тогда и только тогда, когда выполняются следующие условия:

  1. Условие подобия: состояния S и Т либо допускающие, либо отвергающие одновременно.

  2. Условие преемственности: для всех входных символов состояния S и Т должны переходить в эквивалентные состояния, т.е. их преемники эквивалентны.

Состояние S автомата М называется недостижимым, если ни для какой входной цепочки в состояние S нельзя попасть из начального состояния.

Для определения недостижимых состояний организуют специальную таблицу, которую заполняют следующим образом. Включим в таблицу начальное состояние q0, затем будем включать в неё состояния, в которые можно попасть из q0 по каждому входному символу. Затем для каждого состояния, включённого в таблицу, определим состояния, которые достижимы из него по каждому входному символу и т.д.

Процесс заканчивается тогда, когда в таблицу не будет включаться новых состояний. Этот алгоритм конечен. Не включённые в таблицу состояния будут недостижимы.

Автомат называется приведённым, если он не содержит недостижимых состояний и никакие два его состояния не эквивалентны друг другу.

Чтобы получить приведённый автомат, необходимо выбросить недостижимые состояния и соединить эквивалентные состояния в одно состояние. Все приведённые автоматы, допускающие один и тот же язык, эквивалентны с точностью до обозначения состояния.

Имеется алгоритм приведения, основанный на разбиении на блоки. Идея алгоритма такова: все состояния делят на непересекающиеся множества так, чтобы неэквивалентные состояния попали в разные блоки. Сначала, используя условие подобия, множество состояний делим на два непересекающихся подмножества. Далее проверяем, что происходит под действием каждого входного символа с состояниями блока. При нарушении условия преемственности разбиваем блоки на меньшие относительно входного символа.

Соседние файлы в папке Лекции и практики