Estoy tratando de almacenar una gran lista de cadenas de manera concisa para que puedan analizarse/buscarse rápidamente.¿Cómo puedo construir un gráfico de palabras acíclica dirigido incremental para almacenar y buscar cadenas?
Un gráfico de palabras acíclica dirigido (DAWG) se adapta maravillosamente a este propósito. Sin embargo, no tengo una lista de cadenas para incluir en primer lugar, por lo que debe ser incrementalmente compilable. Además, cuando busco una cadena, necesito recuperar los datos asociados con el resultado (no solo un booleano que dice si estaba presente).
He encontrado información sobre una modificación de la DAWG para el seguimiento de datos de cadena aquí: http://www.pathcom.com/~vadco/adtdawg.html Parece extremadamente, extremadamente complejo y no estoy seguro de poder escribirlo.
También he encontrado algunos artículos de investigación que describen algoritmos de construcción incrementales, aunque he encontrado que los artículos de investigación en general no son muy útiles.
No creo que esté lo suficientemente avanzado como para poder combinar ambos algoritmos yo mismo. ¿Existe documentación de un algoritmo que los presente o un algoritmo alternativo con buena memoria que use la velocidad &?
Gracias, JohnPaul. Lo más probable es que vaya a utilizar un árbol raíz para almacenar las cadenas, aunque me hubiera gustado guardar un poco más en la memoria. Esperaba que existiera un compromiso entre los algoritmos incrementales de construcción DAWG y tu estructura de rastreo de cadenas, ¡pero supongo que no! Desafortunadamente, no puedo ofrecerle trabajo o trabajo, ya que esto es solo para un proyecto de afición mío. Si desea crear y documentar una estructura flexible para la diversión, sea mi invitado y buena suerte (al menos no tengo el cerebro para ello). –