Estoy tratando de elaborar una taxonomía de algoritmos para transformar expresiones regulares en autómatas para realizar algunas pruebas empíricas de sus propiedades de complejidad en dominios específicos.
Soy consciente de varios de los nombres 'más grandes', por ejemplo,
Thompson
"Algoritmo de búsqueda de expresiones regulares", Thompson, 1968
Glushkov
"Un nuevo algoritmo cuadrático para convertir una expresión regular en un autómata", Ponty, et. al, 1996
Antimirov
"Derivados parciales de expresiones regulares y construcciones de autómatas finitos", Antimirov, 1996
Seguir
"Seguir autómatas", Ilie, et. al, 2003;
"Calcular el autómata de una expresión", Champarnaud, et. al, 2002
Hromkovic
"Traducción de expresiones regulares en pequeños autómatas finitos no deterministas e-libres", Hromkovic, et. al, 2001
y sus propiedades distintivas (sin épsilon, determinismo, tamaño, minimización, etc.) pero sé que esta no es una lista exhaustiva.
Estoy particularmente interesado en algoritmos que presentan complejidades de tiempo significativamente diferentes a las enumeradas anteriormente y / o topologías significativamente diferentes.
Si conoce a otros, un enlace a un documento que describe el algoritmo de construcción en detalle sería muy apreciado (¡lea necesario si voy a implementarlo!)
Editar: se agregaron algunas referencias según lo solicitado.
Respuestas:
Watson (Tech. Rep. Univ. Eindhoven 1995) ha escrito una taxonomía de algoritmos de construcción de autómatas finitos; Algunas novedades más recientes se encuentran a continuación.
Para los NFA con transiciones épsilon, el libro de teoría de análisis de Sippu / Soisalon-Soininen (Springer, 1998) contiene una variante de la construcción de Thompson. Ilie y Yu (I&C 2003) y Gulan y Fernau (FSTTCS 2008) dan versiones refinadas de la construcción clásica. Gruber y Gulan (LATA 2010) estudian más a fondo el tamaño mínimo requerido de epsilon-NFA correspondientes a expresiones regulares. La estructura de los dígrafos subyacentes resultantes de la construcción de Thompson es estudiada por Giammarresi, Ponty, Wood & Ziadi (Discr. Appl. Math 2004) y por Gulan (Tech. Rep. Univ. Trier, 2010).
Con respecto a los NFA sin épsilon, quiero mencionar el trabajo anterior de Berry & Sethi (TCS 1986) y de Brüggemann-Klein (TCS 1993), pero eso probablemente esté cubierto por la taxonomía de Watson.
También tenga en cuenta: con respecto a los algoritmos rápidos para la coincidencia de expresiones regulares, conozco el trabajo reciente de Bille y Thorup (ICALP 2009, SODA 2010). Utilizan la construcción clásica de Thompson (además, por supuesto, muchos trucos para obtener velocidad).
fuente
Uno no considerado en su lista es Derivados de expresiones regulares de Janusz Brzozowski, Journal of the ACM 1964, que recientemente fue reconsiderado por Scott Owens, John Reppy y Aaron Turon en Derivados de expresiones regulares reexaminados. Journal of Functional Programming (2009), 19: 173-190 , que proporcionan una implementación práctica de la técnica para una notación extendida para expresiones regulares.
fuente