Construcciones de árbol de sufijos de tiempo lineal conceptualmente simples


13

En 1973 Weiner dio la primera construcción en tiempo lineal de árboles sufijos. El algoritmo fue simplificado en 1976 por McCreight, y en 1995 por Ukkonen. Sin embargo, encuentro el algoritmo de Ukkonen relativamente involucrado conceptualmente.

¿Ha habido simplificaciones en el algoritmo de Ukkonen desde 1995?


44
Farach et el 1998. Creo que este es un buen lugar para comenzar a leer: scholar.google.co.uk/…
Radu GRIGore

Respuestas:


9

No estoy seguro de si hubo nuevos resultados que simplifiquen directamente la construcción de árboles de sufijos. Sin embargo, ha habido al menos un resultado que proporciona un algoritmo muy simple para construir matrices de sufijos en tiempo lineal.

Tenga en cuenta que hay más de una equivalencia conceptual entre estas dos estructuras de datos, ya que puede usar una matriz de sufijos (con tiempo para consultar el prefijo común más largo) para construir un árbol de sufijos equivalente. Este debería ser un ejercicio relativamente simple, pero puedo dar más detalles si es necesario.O(1)

O(nortelgnorte)


1
¿Podría dar un puntero a la forma más fácil de construir matrices de sufijos en tiempo O (N lg N)?
Randomblue

1
Etiquete todos los sufijos de longitud 2 ^ k con un número entero de manera que las etiquetas correspondan a la relación de orden entre sufijos. El primer paso (k = 0) es obvio. Para calcular las etiquetas en el paso k, use las etiquetas del paso k-1 y realice una ordenación por radix. Este documento debe ser fácil de entender: webglimpse.net/pubs/suffix.pdf
zotachidil

7

Además de lo mencionado ( Kärkkäinen & Sanders, 2003 ), creo que agradecería la versión "más nueva" de Kärkkäinen, Sanders y Burkhard, 2006 . El algoritmo básicamente sigue la estructura del algoritmo de Farach. Podría decirse que es conceptualmente más simple, pero la verdadera ventaja es que proporcionan al lector una implementación del algoritmo. Son solo unas 50 líneas de C ++, por lo que no hay detalles ocultos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.