Минимизация ДКАМинимизация ДКА — построение по детерминированному конечному автомату (ДКА) эквивалентного ДКА, имеющего наименьшее возможное число состояний. Минимальный ДКАДля любого регулярного языка существует минимальный ДКА, который его принимает, то есть, ДКА с наименьшим возможным числом состояний. Такой автомат единственен с точностью до изоморфизма. АлгоритмыАлгоритм Хопкрофта1. Разделить все состояния ДКА на две группы: группу конечных состояний и группу неконечных состояний. 2. Для каждого символа алфавита, проверить, в какую из групп перейдет автомат из каждого состояния, используя данный символ. Если из состояний A и B можно перейти в состояния C и D соответственно, то состояния A и B будут считаться эквивалентными по данному символу, если состояния C и D принадлежат одной и той же группе. 3. На основе этой информации разделить каждую группу на подгруппы, где состояния, эквивалентные по всем символам алфавита, находятся в одной подгруппе. 4. Повторять шаги 2 и 3 до тех пор, пока группы перестанут разделяться. 5. Построить новый автомат, используя полученные подгруппы в качестве новых состояний. Переходы между состояниями будут соответствовать переходам между подгруппами. 6. Удалить недостижимые состояния.
Алгоритм БжозовскогоПусть — ДКА. Обозначим через инвертированный автомат . Через обозначим детерминизированный автомат, полученный из процедурой построения подмножеств. Имеет место следующий результат[1]:
См. такжеПримечания
Литература
Ссылки
|
Portal di Ensiklopedia Dunia