Ich versuche, einen regulären Ausdruck aus einem Finite Automaton zu konstruieren, fand aber mein Selbst völlig bei diesem fest. Die zu verwendende Regex ist wie folgt:Konstruieren eines regulären Ausdrucks aus einem endlichen Automaten
? = 0 oder 1
* = 0 oder mehr
+ = 1 oder mehr
| = Oder
_ = leere Zeichenkette
@ = leere Menge
() = Klammern
Wie ich die Saiten verstehen entweder "b *" endet mit einem "*" oder enden mit sein muss "a + bb +"
Was ich jetzt habe, ist ((b*(a+(bb))*)*)
, aber das berücksichtigt keine Zeichenfolge, die mit 'a' endet.
Wie gesagt, ich bin zu 100% damit beschäftigt und kann einfach nicht verstehen, wie ich damit arbeiten soll.
Bild: http://img593.imageshack.us/img593/2563/28438387.jpg
Code:
Typ des Automaten
FA
Staaten
q1
q2
q3
q4
Alphabet
ein
b
Ausgangszustand
q3
Endzustände
q3
q4
Transitions
q1 ein q2
q1 b q3
q2 ein q2
q2 b q2
q3 ein q4
q3 b q3
q4 ein q4
q4 b q1
Alle Lösungen oder Tipps zu schätzen!
Was ist mit 'b * (a +)? (Bb + | bb + a +)?'? – dheerosaur
Beschuldigen Sie, dass ich feststeckt, weil ich nie daran gedacht habe, "(a +)?" Zu verwenden! Vielen Dank! Obwohl ich sicherstellen muss, würde das "babbabb" oder "abbaabb" akzeptieren? (dh mehr als eine "Runde" machen) – mjuopperi
Sorry, '(a +)?' ist formell äquivalent zu 'a *' –