Как конвертировать (ab u aab u aba)* в NFA?
(ab u aab u aba)*
Я сделал это, но я хотел бы получить некоторые отзывы о его правильности:
Если это правильно: Можем ли мы упростить (ab u aab u aba)* дальше?
Если нет: что я пропустил?
РЕДАКТИРОВАТЬ: Кажется, мне не хватает электронных переходов из всех трех конечных состояний обратно в начальное состояние, и мне нужно новое состояние, начальное и конечное, которое перейдет в старое начальное состояние при электронном переходе. (Правило Клини Стар).
PS Можем ли мы также упростить (a u b)*aabab
а также (a u b)*a(a u b)(a u b)(a u b)(a u b)
,
Причина, по которой я спрашиваю, потому что если нет способа упростить / минимизировать, это будет смехотворно длинный DFA...
1 ответ
Я вижу небольшое упрощение вашего первого случая в том, что вы можете написать его как (a(b u ab u ba))*, но это не обязательно поможет. Я все еще думаю, что вашему DFA не понадобится столько штатов, сколько вы думаете.
В обоих последних случаях потребуются DFA с 32 состояниями, чтобы отслеживать последние 5 прочитанных символов. Разница в том, что второй DFA имеет только одно конечное состояние, а третий DFA имеет 16.