En informática , un índice de subcadenas es una estructura de datos que permite la búsqueda de subcadenas en un texto o colección de textos en tiempo sublineal . Una vez construido a partir de un documento o conjunto de documentos, un índice de subcadenas puede utilizarse para localizar todas las ocurrencias de un patrón en tiempo lineal o casi lineal con respecto al tamaño del patrón, sin dependencia o con una dependencia logarítmica únicamente respecto al tamaño del documento. [ 1 ]
La expresión « índice de texto completo» se usa a menudo para referirse a índices de subcadenas. Sin embargo, esto resulta ambiguo, ya que también se utiliza para índices de palabras comunes, como archivos invertidos y recuperación de documentos . Véase «búsqueda de texto completo» .
Consideraciones generales
Estas estructuras de datos suelen tratar el texto y el patrón como cadenas sobre un alfabeto fijo, y buscan ubicaciones donde el patrón aparece como una subcadena del texto. Los símbolos del alfabeto pueden ser caracteres (por ejemplo, en Unicode ), pero en aplicaciones prácticas para la recuperación de texto puede ser preferible tratar las palabras ( con raíz ) de un documento como los símbolos de su alfabeto, ya que esto reduce la longitud tanto del texto como del patrón, medida en número de símbolos. [ 2 ]
Ejemplos
Entre las estructuras de datos específicas que se pueden utilizar como índices de subcadenas se incluyen:
- El árbol de sufijos , un árbol de raíz de los sufijos de la cadena, que permite realizar búsquedas de subcadenas símbolo por símbolo [ 1 ] [ 3 ]
- El autómata de sufijos , el autómata finito determinista mínimo que reconoce subcadenas de un texto dado, está estrechamente relacionado con el árbol de sufijos y se puede construir mediante variantes de los mismos algoritmos. [ 4 ]
- El array de sufijos , un array ordenado de las posiciones iniciales de los sufijos de la cadena, permite realizar búsquedas de subcadenas mediante búsqueda binaria [ 1 ] [ 3 ]. Ampliar un array de sufijos con un array LCP de las longitudes de los prefijos comunes de sufijos consecutivos permite realizar la búsqueda símbolo por símbolo, igualando el tiempo de búsqueda del árbol de sufijos. [ 5 ]
- El array de sufijos comprimidos , una estructura de datos que combina la compresión de datos con el array de sufijos, permite que la estructura se almacene en un espacio sublineal en la longitud del texto [ 1 ] [ 3 ]
- El índice FM , otro índice de subcadenas comprimidas basado en la transformada de Burrows-Wheeler y estrechamente relacionado con la matriz de sufijos [ 6 ].
Referencias
- 1 2 3 4 Barsky, Marina; Stege, Ulrike; Thomo, Alex (2012), "Capítulo 1: Estructuras para la indexación de subcadenas", Índices de texto completo (subcadenas) en memoria externa , Synthesis Lectures on Data Management, Springer International Publishing, pp. 1–15 , doi : 10.1007/978-3-031-01885-5_1 , ISBN 9783031018855
- ↑ Risvik, Knut Magne (1998), "Aproximación de secuencias de palabras sobre árboles de sufijos dispersos", en Farach-Colton, Martin (ed.), Combinatorial Pattern Matching, 9.º Simposio Anual, CPM 98, Piscataway, Nueva Jersey, EE. UU., 20-22 de julio de 1998, Actas , Lecture Notes in Computer Science, vol. 1448, Springer, pp. 65-79 , doi : 10.1007/BFB0030781 , ISBN 978-3-540-64739-3
- 1 2 3 Grossi, Roberto; Vitter, Jeffrey Scott (2005), "Matrices de sufijos comprimidos y árboles de sufijos con aplicaciones a la indexación de texto y la coincidencia de cadenas" (PDF) , SIAM Journal on Computing , 35 (2): 378–407 , doi : 10.1137/S0097539702402354 , hdl : 1808/18962 , MR 2191449
- ↑ Blumer, Anselm; Blumer, J.; Ehrenfeucht, Andrzej ; Haussler, David ; McConnell, Ross M. (1984), "Construyendo el DFA mínimo para el conjunto de todas las subpalabras de una palabra en línea en tiempo lineal", en Paredaens, Jan (ed.), Autómatas, lenguajes y programación, 11.º Coloquio, Amberes, Bélgica, 16-20 de julio de 1984, Actas , Lecture Notes in Computer Science, vol. 172, Springer, pp. 109-118 , doi : 10.1007/3-540-13345-3_9 , ISBN 978-3-540-13345-2
- ↑ Manber, Udi ; Myers, Gene (1993), "Suffix arrays: a new method for on-line string searching", SIAM Journal on Computing , 22 (5): 935–948 , doi : 10.1137/0222058 , MR 1237156
- ↑ Ferragina, Paolo; Manzini, Giovanni (2005), "Indexación de texto comprimido", Journal of the ACM , 52 (4): 552– 581, doi : 10.1145/1082036.1082039 , MR 2164632
- Algoritmos sobre cadenas de caracteres
- Estructuras de datos de cadena
- Técnicas de indexación de bases de datos
- Índices de subcadenas