Articulo de referencia

Matriz de sufijos comprimida

En informática , un array de sufijos comprimido [ 1 ] [ 2 ] [ 3 ] es una estructura de datos comprimida para la búsqueda de patrones . Los arrays de sufijos comprimidos son una ...

En informática , un array de sufijos comprimido [ 1 ] [ 2 ] [ 3 ] es una estructura de datos comprimida para la búsqueda de patrones . Los arrays de sufijos comprimidos son una clase general de estructuras de datos que mejoran el array de sufijos . [ 1 ] [ 2 ] Estas estructuras de datos permiten una búsqueda rápida de una cadena arbitraria con un índice relativamente pequeño.

Dado un texto T de n caracteres de un alfabeto Σ, una matriz de sufijos comprimida permite buscar patrones arbitrarios en T. Para un patrón de entrada P de m caracteres, el tiempo de búsqueda suele ser O( m ) u O( m + log( n )). El espacio utilizado suele serO(norteHk(T))+o(norte){\displaystyle O(nH_{k}(T))+o(n)}, dóndeHk(T){\displaystyle H_{k}(T)}es la entropía empírica de orden k del texto T. El tiempo y el espacio para construir una matriz de sufijos comprimidos son normalmenteO(norte){\displaystyle O(n)}.

La presentación original de una matriz de sufijos comprimida [ 1 ] resolvió un problema abierto de larga data al demostrar que la coincidencia rápida de patrones era posible utilizando solo una estructura de datos de espacio lineal, es decir, una proporcional al tamaño del texto T , que tomaO(norteregistro|Σ|){\displaystyle O(n\,{\log |\Sigma |})}bits. El arreglo de sufijos convencional y el árbol de sufijos utilizanΩ(norteregistronorte){\displaystyle \Omega (n\,{\log n})}bits, que es sustancialmente mayor. La base de la estructura de datos es una descomposición recursiva que utiliza la "función vecina", que permite que una matriz de sufijos se represente mediante una de la mitad de su longitud. La construcción se repite varias veces hasta que la matriz de sufijos resultante utiliza un número lineal de bits. Trabajos posteriores demostraron que el espacio de almacenamiento real estaba relacionado con el0th{\displaystyle 0^{th}}entropía de orden - y que el índice admite autoindexación. [ 4 ] El límite de espacio se mejoró aún más logrando el objetivo final de entropía de orden superior; la compresión se obtiene particionando la función vecina por contextos de orden superior y comprimiendo cada partición con un árbol de ondículas . [ 3 ] El uso de espacio es extremadamente competitivo en la práctica con otros compresores de última generación, [ 5 ] y también admite coincidencia de patrones rápida in situ .

Los accesos a memoria que realizan las matrices de sufijos comprimidos y otras estructuras de datos comprimidas para la búsqueda de patrones no suelen estar localizados, por lo que diseñar estas estructuras de datos de forma eficiente para su uso en memoria externa ha sido notoriamente difícil . Los avances recientes que utilizan la dualidad geométrica aprovechan el acceso a bloques que proporcionan los discos para acelerar significativamente el tiempo de E/S [ 6 ]. Además, se ha demostrado un rendimiento de búsqueda potencialmente práctico para una matriz de sufijos comprimidos en memoria externa [ 7 ] .

Implementaciones de código abierto

Existen varias implementaciones de código abierto de matrices de sufijos comprimidos (véase Enlaces externos a continuación). Bowtie y Bowtie2 son implementaciones de código abierto de matrices de sufijos comprimidos para alineación de lecturas en bioinformática . La biblioteca Succinct Data Structure Library (SDSL) contiene diversas estructuras de datos comprimidas, incluidas matrices de sufijos comprimidos. FEMTO es una implementación de matrices de sufijos comprimidos para memoria externa. Además, en el sitio web de Pizza & Chili se encuentran disponibles diversas implementaciones, incluidas las originales de FM-index (véase Enlaces externos).

Véase también

Referencias

  1. 1 2 3 R. Grossi y JS Vitter, Arreglos de sufijos comprimidos y árboles de sufijos, con aplicaciones a la indexación de texto y la coincidencia de cadenas , SIAM Journal on Computing, 35(2), 2005, 378–407. Una versión anterior apareció en Actas del 32.º Simposio ACM sobre Teoría de la Computación, mayo de 2000, 397–406.
  2. 1 2 Paolo Ferragina y Giovanni Manzini (2000). "Estructuras de datos oportunistas con aplicaciones" . Actas del 41.º Simposio Anual sobre Fundamentos de la Informática. p. 390.
  3. 1 2 R. Grossi, A. Gupta y JS Vitter, Índices de texto comprimidos con entropía de alto orden , Actas del 14.º Simposio anual SIAM/ACM sobre algoritmos discretos, enero de 2003, 841–850.
  4. K. Sadakane, Bases de datos de texto comprimido con algoritmos de consulta eficientes basados ​​en matrices de sufijos comprimidos , Actas del Simposio Internacional sobre Algoritmos y Computación , Lecture Notes in Computer Science, vol. 1969, Springer, diciembre de 2000, 410–421.
  5. L. Foschini, R. Grossi, A. Gupta y JS Vitter, Indexing Equals Compression: Experiments on Suffix Arrays and Trees , ACM Transactions on Algorithms , 2(4), 2006, 611–639.
  6. W.-K. Hon, R. Shah, SV Thankachan y JS Vitter, Sobre la indexación de texto comprimido por entropía en memoria externa , Actas de la Conferencia sobre Procesamiento de Cadenas y Recuperación de Información , agosto de 2009.
  7. MP Ferguson, FEMTO: búsqueda rápida en grandes colecciones de secuencias , Actas de la 23.ª Conferencia Anual sobre Coincidencia de Patrones Combinatorios , julio de 2012

Implementaciones:

  • Pajarita y Pajarita2
  • Biblioteca de Estructuras de Datos Concisas (SDSL)
  • FEMTO
  • Sitio web de Pizza&Chili .