Algoritmi noti per passare da un DFA a un'espressione regolare


28

Mi chiedevo se esiste un algoritmo `` migliore '' (spiegherò in che senso) che parte da un DFA e costruisce un'espressione regolare r tale che L ( A ) = L ( r ) , rispetto a quello nel libro di Hopcroft e Ullman (1979). Lì, gli insiemi R k i j sono usati per rappresentare insiemi di stringhe che portano il DFA dallo stato q i a q j senza attraversare uno stato numerato superiore a k . Questa costruzione, sebbene ovviamente corretta e molto utile, è piuttosto tecnica.ArL(A)=L(r)Rijkqiqjk

Sto scrivendo una monografia sulla teoria degli automi algebrici e non voglio distrarre il mio pubblico con troppi dettagli tecnici (almeno non con dettagli irrilevanti per i risultati che voglio mostrare), ma voglio includere un prova dell'equivalenza tra DFA ed espressioni regolari a fini di completezza. Per la cronaca, sto usando gli automi Glushkov per passare da un'espressione regolare a un DFA. Sembrava più intuitivo delle transizioni , che non ho definito affatto (di nuovo, perché non ne ho bisogno).ε

Quali altri algoritmi sono noti per passare da un DFA a un'espressione regolare? Apprezzo la semplicità rispetto all'efficienza (per me è `` migliore '' in questo caso), ma non è un requisito.

Grazie in anticipo per il vostro aiuto!


1
Non è un algoritmo diverso, ma la algoritmo può essere espressa algebricamente, utilizzando il k esima potenza di una matrice di espressioni regolari nella algebra appropriata. Forse lo troverai più elegante / conciso. Sto cercando un riferimento. RijkK
— Max

1
L' algoritmo è essenzialmente una variante dell'algoritmo di Floyd-Warshall per il problema del percorso più breve di tutte le coppie, quindi puoi trovare la presentazione in termini di moltiplicazione di matrici cercando queste parole chiave. RijK
— Jan Johannsen,

2
Concordo. È fondamentalmente l'algoritmo di Floyd-Warshall. Può anche essere derivato usando tecniche di programmazione dinamica standard (proprio come Floyd-Warshall).
— david

Sono sicuro di aver risposto a una domanda come questa prima, ma non riesco a trovarla.
— Raffaello

@Max potresti trovare un riferimento? Sono interessato alla rappresentazione matriciale, in realtà dovrebbe essere più allettante per gli algebristi.
— Janoma,

Risposte:


17

Altre due costruzioni: l'eliminazione dello stato di Brzozowski-McCluskey aka [1] e l'eliminazione gaussiana in un sistema di equazioni usando il Lemma di Arden. La migliore fonte di questi è probabilmente il libro di Jacques Sakarovitch [2].

[1] J. Brzozowski, E. McCluskey Jr., Tecniche dei grafici del flusso di segnale per diagrammi di stato dei circuiti sequenziali, Transazioni IEEE su computer elettronici EC-12 (1963) 67–76.

[2] J. Sakarovitch, Elements of Automata Theory. Cambridge University Press, 2009.


2
Trovo che l'approccio della risoluzione delle equazioni usando Lemma di Arden sia il più semplice e facile da spiegare, ecco perché lo presento in una lezione introduttiva di teoria.
— Jan Johannsen,

Il metodo di un sistema di equazioni sembra brillante. Sfortunatamente, la biblioteca della mia università non ha il libro che citi (Sakarovitch), ma cercherò altrove.
— Janoma,

4
Il confronto delle costruzioni si trova anche nel documento di Sakarovitch "The Language, the Expression and the (small) Automaton", CIAA 2005, LNCS 3845, Springer (2006) 15-30. Vedi infres.enst.fr/~jsaka/PUB/Files/LESA.pdf
— Hermann Gruber

2
Si noti inoltre che l'ordinamento in cui vengono elaborati gli stati può influire notevolmente sulla dimensione dell'espressione regolare risultante. Questo è sempre vero: se lo fai con il lemma di Arden, McNaughton-Yamada, l'eliminazione dello stato o un'altra variante. Sono disponibili diverse euristiche semplici per la scelta di un buon ordine di eliminazione.
— Hermann Gruber,

15

Il libro di Kozen "Automata & Computability" menziona un'elegante generalizzazione di questo algoritmo di Floyd-Warshall. Dato che hai accennato agli algebristi, potresti trovarlo utile. Lo troverai a pagina 58-59 di quel testo. (Penso che Google Books abbia un'anteprima.)

Fondamentalmente, è possibile definire un'algebra di Kleene su matrici le cui voci provengono da un'algebra di Kleene. L'aggiunta / unione di matrici è un'aggiunta coordinata. La moltiplicazione / concatenazione di matrici è proprio come una normale moltiplicazione di matrici. La stella di Kleene per matrici è definita come:2×2

[abcd]∗=[(a+bd∗c)∗(a+bd∗c)∗bd∗(d+ca∗b)∗ca∗(d+ca∗b)∗]

i,jij

n×na,b,c,dm×mm×(n−m)(n−m)×m(n−m)×(n−m)2×2 rule above now with the matrix minors instead of "scalar" entries. (Analogously to how regular matrix multiplication can be defined recursively based on the rule for 2×2.)

So if you have an n-state NFA and its corresponding transition matrix T. Then an equivalent regular expression is ∑f∈F(T∗)s,f, where s is the start state. T∗ can be evaluated recursively using the definition above.

Kozen claims that the case where you evaluate the matrix-star recursively using m=1 corresponds to the Rijk algorithm.

Another derivation of the Kleene algebra structures over matrices appears in A Completeness Theorem for Kleene Algebras and the Algebra of Regular Events by Kozen.


12

By far the nicest procedure I have seen is the one mentioned by Sylvain. In particular, it seems to yield more concise expressions than others.

I wrote this document explaining the method for students last summer. It directly relates to a specific lecture; the reference mentioned is typical definition of regular expressions. A proof of Arden's Lemma is contained; one for correctness of the method is missing. As I learned of it in lecture I don't have a reference, sadly.


I also prefer that proof. I find it elegant and easy to explain. Even Arden's Lemma is not hard. I think this will be the method I will include in my document.
— Janoma

@Raphael Saw the example in cs.stackexchange and found that there is some difference between the notations. You have used both + and ∪ in document, but you have used only ∪ in the above document. I think both meant the same thing. For the consistency of notation you could consider changing that. Anyway that document saved my day :). Thanks for writing documents like this and releasing under open license.
— user3162
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.