Минимизация ДКА

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис

Минимизация ДКА — построение по детерминированному конечному автомату (ДКА) эквивалентного ДКА, имеющего наименьшее возможное число состояний.

Минимальный ДКА

Для любого регулярного языка существует минимальный ДКА, который его принимает, то есть, ДКА с наименьшим возможным числом состояний. Такой автомат единственен с точностью до изоморфизма.

Алгоритмы

Алгоритм Хопкрофта

Алгоритм Бжозовского

Пусть [math]\displaystyle{ \mathcal A }[/math] — ДКА. Обозначим через [math]\displaystyle{ r(\mathcal A) }[/math] инвертированный автомат [math]\displaystyle{ \mathcal A }[/math]. Через [math]\displaystyle{ d(\mathcal A) }[/math] обозначим детерминизированный автомат, полученный из [math]\displaystyle{ \mathcal A }[/math] процедурой построения подмножеств. Имеет место следующий результат[1]:

Пусть автомат [math]\displaystyle{ \mathcal A }[/math] распознаёт язык [math]\displaystyle{ L }[/math]. Тогда минимальный ДКА для языка [math]\displaystyle{ L }[/math] может быть найден как [math]\displaystyle{ \mathcal A_L = drdr(\mathcal A). }[/math]

См. также

Примечания

  1. Thomas Paranthoën, Ahmed Khorsi, Jean-Marc Champarnaud. Split and join for minimizing: Brzozowski's algorithm (англ.). undefined (2002). Дата обращения: 27 июля 2019. Архивировано 27 июля 2019 года.

Литература

Ссылки