Also habe ich lange versucht, dies zu knacken und habe fast das Gefühl, dass ich mich über diese Frage in Schleifen befinde.
Angesichts der folgenden NFA:
Verwenden Sie den GNFA-Algorithmus, um den regulären Ausdruck zu erhalten.
Ich verstehe, dass Sie für den ersten Schritt (Hinzufügen leerer Zustände) Folgendes haben würden:
Der nächste Schritt wäre das Entfernen des Status [q1], den ich erhalten würde:
Schließlich würde das Entfernen von [q2] Folgendes ergeben:
Die Antworten, die andere haben, sind jedoch: Was keinen Sinn ergibt, wie ich bekam, ? Ein GNFA (verallgemeinerter nichtdeterministischer endlicher Automat) wird wie folgt beschrieben:
Ein GNFA ähnelt einem NFA, muss jedoch bestimmte Regeln einhalten:
- Es hat nur einen Akzeptanzzustand
- In den Ausgangszustand treten keine Übergänge ein
- Der Akzeptanzzustand hat keine Übergänge
- Ein Übergang kann einen beliebigen regulären Ausdruck und nicht nur ein Symbol aus dem Alphabet bezeichnen. Beachten Sie, dass ein Symbol eine Art regulärer Ausdruck ist.
Darüber hinaus können wir eine NFA wie folgt in eine GNFA umwandeln:
- Fügen Sie einen neuen Startzustand mit einem ε-Übergang zum alten Startzustand hinzu
- Fügen Sie einen neuen Akzeptanzzustand mit ε-Übergängen von den alten Akzeptanzzuständen hinzu
- Wenn Pfeile mehrere Beschriftungen haben oder wenn zwischen zwei Zuständen mehrere Pfeile liegen, ersetzen Sie sie durch die Vereinigung (oder) dieser Beschriftungen
Antworten:
Sie möchten wissen, warum "die anderen" einen anderen Ausdruck erhalten haben?
Wenn ein regulärer Ausdruck konstruiert wird, gibt es keine eindeutige richtige Antwort. Es gibt normalerweise mehrere Ausdrücke, "die Sinn machen". In diesem Fall verwenden Sie die Zustandseliminierungsmethode (ich habe dies unter dem Namen Brzozowski und McCluskey gelernt). Hier bestimmt die Reihenfolge der Entfernung den gefundenen Ausdruck. Also: Was bekommen Sie beim Entfernen?q2 zuerst?
Sie können auch "clevere Tricks" während des Baus machen. In Ihrem Beispiel haben Sieb∪aa∗b das ist äquivalent zu a∗b .
quelle
b U aa*b = a*b
und den Namen Brzozowski und McCluskey