Ich habe mich gefragt, ob es einen "besseren" Algorithmus gibt (ich erkläre, in welchem Sinne), der von einem DFA ausgeht und einen regulären Ausdruck so konstruiert, dass , als die in dem Buch von Hopcroft und Ullman (1979). Dort werden die Mengen verwendet, um Mengen von Zeichenfolgen darzustellen, die den DFA vom Zustand zum Zustand ohne einen Zustand zu , der höher als nummeriert ist . Diese Konstruktion ist zwar offensichtlich korrekt und sehr nützlich, aber eher technisch.
Ich schreibe eine Monographie über die Theorie algebraischer Automaten und möchte mein Publikum nicht mit zu vielen technischen Details ablenken (zumindest nicht mit Details, die für die Ergebnisse, die ich zeigen möchte, irrelevant sind), aber ich möchte einschließen der Vollständigkeit halber den Nachweis der Gleichwertigkeit von DFA und regulären Ausdrücken. Ich verwende Glushkov-Automaten, um von einem regulären Ausdruck zu einem DFA zu wechseln. Es schien intuitiver zu sein als -Übergänge, die ich überhaupt nicht definiert habe (wieder, weil ich sie nicht brauche).
Welche anderen Algorithmen sind dafür bekannt, von einem DFA zu einem regulären Ausdruck zu wechseln? Ich schätze Einfachheit gegenüber Effizienz (das ist in diesem Fall für mich besser), aber das ist keine Voraussetzung.
Vielen Dank im Voraus für Ihre Hilfe!
Antworten:
Zwei weitere Konstruktionen: Brzozowski-McCluskey aka state elimination [1] und Gaußsche Elimination in einem Gleichungssystem unter Verwendung von Ardens Lemma. Die beste Quelle hierfür ist wahrscheinlich das Buch von Jacques Sakarovitch [2].
[1] J. Brzozowski, E. McCluskey Jr., Signalflussgraphtechniken für sequentielle Schaltungszustandsdiagramme, IEEE Transactions on Electronic Computers EC-12 (1963) 67–76.
[2] J. Sakarovitch, Elemente der Automatentheorie. Cambridge University Press, 2009.
quelle
Kozens Buch "Automata & Computability" erwähnt eine elegante Verallgemeinerung dieses Floyd-Warshall-Algorithmus. Da Sie erwähnt haben, dass Sie Algebraisten ansprechen, könnten Sie es nützlich finden. Sie finden es auf Seite 58-59 dieses Textes. (Ich denke, Google Books hat eine Vorschau.)
Grundsätzlich können Sie eine Kleene-Algebra auf Matrizen definieren, deren Einträge aus einer Kleene-Algebra stammen. Die Addition / Vereinigung von Matrizen ist eine koordinatenweise Addition. Die Multiplikation / Verkettung von Matrizen entspricht der normalen Matrixmultiplikation. Kleene-Stern für Matrizen ist definiert als:2×2
Sie können sehen, dass, wenn die linke Matrix die Übergangsmatrix eines DFA mit zwei Zuständen ist , der Eintrag der rechten Matrix die Menge der Pfade (beliebiger Länge) von Zustand i zu Zustand j beschreibt .i,j i j
Dann wird der Kleene-Stern größerer Matrizen rekursiv definiert: Teilen Sie die Matrix in 4 Quadranten / Submatrizen a , b , c , d mit den Dimensionen m × m , m × ( n - m ) , ( n - m ) × m , und ( n - m ) × ( n - m ) , und wenden Sie die 2 × 2n×n a,b,c,d m×m m×(n−m) (n−m)×m (n−m)×(n−m) 2×2 herrsche jetzt oben mit der matrix minors statt "skalarer" einträge. (Analog dazu, wie die regelmäßige Matrixmultiplikation anhand der Regel für rekursiv definiert werden kann .)2×2
Wenn Sie also eine NFA mit Zuständen und die dazugehörige Übergangsmatrix T haben . Dann wird ein Äquivalent regulärer Ausdruck Σ f ∈ F ( T * ) s , f , wo s ist der Startzustand. T ∗ kann nach obiger Definition rekursiv ausgewertet werden.n T ∑f∈F(T∗)s,f s T∗
Kozen Ansprüche , dass der Fall , in dem man den Matrix-star rekursiv unter Verwendung auszuwerten entspricht den R k i j - Algorithmus.m=1 Rkij
Eine weitere Herleitung der Kleene-Algebra-Strukturen über Matrizen findet sich in einem Vollständigkeitssatz für Kleene-Algebren und der Algebra der regelmäßigen Ereignisse von Kozen.
quelle
Das mit Abstand schönste Verfahren, das ich je gesehen habe, ist das von Sylvain erwähnte. Insbesondere scheint es präzisere Ausdrücke zu liefern als andere.
Ich habe dieses Dokument geschrieben , in dem die Methode für Studenten im letzten Sommer erklärt wurde. Es bezieht sich direkt auf eine bestimmte Vorlesung; Die erwähnte Referenz ist eine typische Definition von regulären Ausdrücken. Ein Beweis von Ardens Lemma ist enthalten; eine für die Richtigkeit der Methode fehlt. Wie ich in der Vorlesung erfahren habe, habe ich leider keine Referenz.
quelle