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+bdc)(a+bdc)bd(d+cab)ca(d+cab)]

i,jij

n×na,b,c,dm×mm×(nm)(nm)×m(nm)×(nm)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 fF(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.