Я пытаюсь создать регулярное выражение из конечного автомата, но обнаружил, что полностью застрял в этом. Регулярное выражение для использования выглядит следующим образом:
? = 0 или 1
* = 0 или больше
+= 1 или больше
| = or
_ = пустая строка
@ = пустой набор
() = круглые скобки
Насколько я понимаю, строки должны быть либо "b*", заканчивающимися на "a*", либо заканчиваться на "a+bb+"
Сейчас у меня есть ((b*(a+(bb))*)*)
, но это не учитывает строку, заканчивающуюся на "a" .
Как уже было сказано, я на 100% застрял в этом и просто не могу понять, как я должен работать с этим.
изображение: http://img593.imageshack.us/img593/2563/28438387.jpg а>
КОД:
Тип автомата
FA
Государства
q1
q2
q3
q4
Алфавит
а
б
Исходное состояние
q3
Конечные состояния
q3
q4
Переходы
q1 a q2
q1 b q3
q2 a q2
q2 b q2
q3 a q4
q3 b q3
q4 a q4
q4 b q1
Любые решения или советы приветствуются!
b*(a+)?(bb+|bb+a+)?
? - person dheerosaur   schedule 20.12.2010(a+)?
формально эквивалентноa*
- person Luis Colorado   schedule 27.04.2016