Минимизация конечных автоматов
Может быть поставлен такой вопрос: нельзя ли для произвольного конечного автомата построить эквивалентный конечный автомат с меньшим числом состояний? Оказывается, что ответ на этот вопрос положителен. Более того, можно построить конечный автомат, эквивалентный исходному и имеющий наименьшее число состояний (среди всех конечных автоматов, эквивалентных ему). Процедуру построения такого автомата называют минимизацией конечного автомата.
В силу теоремы о детерминизации (см. теорему 7.7) можно считать, что исходный конечный автомат является детерминированным.
Будем также предполагать, что в исходном конечном автомате нет состояний, которые не достижимы из начального состояния. Это предположение мотивировано тем, что если в существуют состояния, не достижимые из начального, то их можно найти (используя, скажем, поиск в ширину на графе ) и удалить со всеми инцидентными им дугами.
На множестве состояний автомата зададим семейство отношений эквивалентности следующим образом:
1) 0-эквивстентностъ: для произвольных состояний и полагаем тогда и только тогда, когда они оба являются заключительными или оба не являются заключительными;
2) k-эквивалентность: при полагаем тогда и только тогда, когда , т.е. состояния и (k-1)-эквивалентны, и, кроме того, для любого входного символа состояния и также (k-1)-эквивалентны*.
*Напомним, что функция переходов детерминированного конечного автомата определена как отображение (см. замечание 7.7).
 Чтобы понять смысл отношения k-эквивалентности, обратимся к рис. 7.23. На этом рисунке и — (k-1)-эквивалентные состояния, т.е. они принадлежат одному и тому же классу (k-1)-эквивалентности . Эти состояния, согласно данному выше определению, станут k-эквивалентными, если для любого входного символа состояния и также являются (k-1)-эквивалентными, содержащимися в некотором классе (k-1)-эквивалентности (возможно, что ). Можно сказать, что (k-1)-эквивалентные состояния будут также и k-эквивалентными, если переход из них по любому входному символу "сохраняет" (k-1)-эквивалентность состояний, т.е. состояния, в которые конечный автомат переходит из (k-1)-эквивалентных состояний, снова окажутся (k-1)-эквивалентными.
 Если же найдется хотя бы один входной символ а, такой, что состояния и окажутся в разных классах (к-1)-эквивалентности (рис. 7.24), то состояния и уже не будут k-эквивалентными (образно говоря, они разойдутся по разным классам k-эквивалентности, так как переход из них по некоторому символу "разрушает" (k-1)-эквивалентность).
Таким образом, для любого отношение эквивалентности включается в отношение , и, следовательно, любой класс (k+1)-эквивалентности включается в некоторый класс k-эквивалентности (точнее, каждый класс k-эквивалентности или разбивается на несколько попарно непересекающихся классов (k+1)-эквивалентности, или, если все его состояния остаются (k+1)-эквивалентными, не изменяется). Это значит, что разбиение множества состояний на классы (k+1)-эквивалентности является, не более "крупным", т.е. содержит не меньше классов эквивалентности, чем разбиение на классы k-эквивалентности.
Минимизация конечного автомата состоит в последовательном "измельчении" разбиения множества на классы эквивалентности до тех пор, пока не получится разбиение, которое уже нельзя измельчить (очевидно, что такое разбиение для некоторого всегда существует). Более строго: указанные выше отношения эквивалентности строятся до такого наименьшего , что отношение совпадет с отношением . Это отношение и определяет самое мелкое разбиение множества состояний. Обозначим его просто . Тогда минимальный конечный автомат , т.е. автомат с наименьшим числом состояний, эквивалентный исходному, определяется следующим образом:
где через обозначен класс эквивалентности состояния по отношению .
Можно доказать вполне строго (аналогично доказательству корректности алгоритма детерминизации), что конечные автоматы и эквивалентны.
Резюмируем полученные результаты в виде теоремы.
Теорема 7.9. Для произвольного конечного автомата может быть построен эквивалентный ему конечный автомат с наименьшим числом состояний.
Вытекающий из этой теоремы алгоритм минимизации может быть описан так:
1) строим эквивалентный исходному детерминированный конечный автомат; 2) если в полученном конечном автомате остались состояния, не достижимые из начальной вершины, удаляем их (для обнаружения таких вершин может быть использован алгоритм поиска в ширину); 3) к полученному конечному автомату применяем изложенный выше алгоритм построения разбиения множества состояний на классы эквивалентности по отношению и строим минимальный конечный автомат , как описано выше.
Замечание 7.11. Если детерминизация конечного автомата проводится методом "вытягивания", то все вершины в детерминированном конечном автомате будут достижимы из начальной вершины.
Кроме того, подчеркнем еще раз, что алгоритм минимизации применяется только к детерминированным конечным автоматам.
Пример 7.11. Минимизируем конечный автомат, изображенный на рис. 7.21.
Введем новые обозначения для состояний автомата:
Полученный автомат изображен на рис. 7.25.
Запишем разбиение множества состояний автомата для отношения .
Так как состояния и не являются 0-эквивалентными состояниями, то в разбиении для 1-эквивалентности они "разойдутся" по разным классам; разбиение, определяемое отношением , будет иметь вид
Далее, при переходе к 2-эквивалентности придется "развести" состояния и . Поскольку для всех состояний из множества конечный автомат переходит в одно из этих же состояний, то разбиение на классы 2-эквивалентности и есть искомое "мельчайшее" разбиение:
На рис. 7.26 приведен граф минимального конечного автомата.
Предельные случаи процедуры минимизации конечных автоматов
Заметим, что применение рассмотренной процедуры минимизации может дать два крайних случая:
 1) все состояния исходного конечного автомата окажутся эквивалентными и тогда в минимальном конечном автомате останется только одно состояние; 2) итоговое разбиение будет состоять из одноэлементных классов эквивалентности — это означает, что исходный конечный автомат нельзя минимизировать, он уже минимален.
Первый случай проиллюстрирован на рис. 7.27. Здесь приведено построение и минимизация конечного автомата, допускающего язык, обозначенный регулярным выражением .
После удаления λ-переходов получается детерминированный автомат, все состояния которого заключительные. Значит, минимальный автомат состоит из одной вершины и допускает язык . Тем самым мы еще и доказали эквивалентность регулярных выражений и (в алфавите ).
Алгоритм минимизации целесообразно использовать и при распознавании эквивалентности двух заданных конечных автоматов.
Если мы хотим выяснить, эквивалентны ли автоматы и , то можно минимизировать каждый из них. Если минимальные автоматы и имеют множества состояний с разным числом вершин, то исходные автоматы заведомо не эквивалентны. Можно доказать, что исходные автоматы эквивалентны тогда и только тогда, когда соответствующие им минимальные автоматы и изоморфны. Конечные автоматы и считаются изоморфными, если существует такая биекция множества состояний первого автомата на множество состояний второго, которая является изоморфизмом данных конечных автоматов как ориентированных графов и обладает дополнительно следующими свойствами:
1) если — начальное состояние конечного автомата , то — начальное состояние конечного автомата ; 2) если — подмножество заключительных состояний конечного автомата , то — подмножество заключительных состояний конечного автомата ; 3) для любых двух состояний и конечного автомата и любого входного символа имеем тогда и только тогда, когда .
В общем случае проблема распознавания эквивалентности и сводится к проблеме распознавания изоморфизма минимальных автоматов. Для малого числа вершин (до 10) этот изоморфизм, как правило, распознается "невооруженным глазом", но в общем случае нужны специальные алгоритмы.
Если заметили ошибку, опечатку или есть предложения, напишите в комментариях.
|