Некоторые неофициальные ответы, чтобы дать вам идеи, для подробных доказательств прочитайте хорошую книгу по автоматам, например эту или те, которые упомянуты в других ответах. И я почти уверен, что есть онлайн-материалы, на которые можно найти ответы на все ваши вопросы.
- Как вы находите минимальный детерминированный FSM?
Процедура заключается в устранении дублированных состояний (или объединении эквивалентных состояний). Вы знаете, что состояние и переходы являются ключами для генерации строк. По сути, дублированные состояния не способствуют увеличению или уменьшению создаваемого языка. Алгоритм начинается с конечных состояний, которые всегда могут генерировать лямду (пустую строку), и рекурсивно обновляет таблицу, в которой указана способность генерирования состояния, и, наконец, объединяет эти состояния, не делая различий.
- Есть ли способ нормализовать недетерминированные автоматические автоматы?
Нормализованный DFA для NFA использует различные наборы состояний NFA в качестве состояний DFA, например, {state0} - (1) -> {state1, state2} для удаления недетерминированной части, нет способ избежать взрыва государства, поскольку DFA должен сделать это, чтобы представлять язык.
- Существует ли линейный алгоритм с временной привязкой для нахождения минимального FSM для данной машины?
Я помню, что лучшим из них является O (NLogN), выполняя некоторые приемы повторного использования информации в какой-то статье профессора Университета Западного Онтарио, и сомневаюсь, что существуют лучшие. Я считаю, что классическим является O (N ^ 2).
- Есть ли способ узнать, эквивалентны ли два FSM?
Да. Получите минимальное значение, закодируйте состояние по их строке доступа (строка, которая может достичь состояния из начального состояния, это в значительной степени настоящее «имя» состояния там), и проверьте карту перехода. Хотя могут быть и лучшие способы, но в BigO не будет большой разницы.