Los árboles de sufijos y sus Aplicaciones
Enviado por klimbo3445 • 5 de Abril de 2018 • 8.285 Palabras (34 Páginas) • 512 Visitas
...
Es no una subcadena de la cadena abaa ω, ya que el ultimo personaje un no no coinciden a lo largo de la pathstring aba indicada (es decir, abaa ha no ampliado locus en T). En la figura 1 se muestra también una representación más compacta del árbol del sufijo, donde cada cadena es substituido por un par de números enteros: el número de posición inicial y la longitud de la subcadena [77]. Puede ser fácilmente verificado de Fig. 1 que el árbol del sufijo obedece a limitaciones (T1) (T2) y (T3) por encima. Además, está claro que cada hoja es locus de exactamente un sufijo, que puede obtenerse como pathstring asociada a esa hoja. Una consecuencia de las restricciones (T1) (T2) y (T3) en el árbol del sufijo T para x$ está dada por las siguientes tres propiedades: existencia de nodo: hay una hoja para cada sufijo de x, junto a un nodo interno por cada subcadena (posiblemente vacío) y de x$ $ que ya y yb son subcadenas de x, donde a, b ∈ Σ ∪ {$} y a 6 = integridad b. : Una cadena y ∈ Σ ∗ es subcadena de x si y solamente si y ha extendido locus en T, ya que una subsecuencia de x es un prefijo de un sufijo de x. prefijo común: Si dos sufijos de x compartan un prefijo, y decir, entonces que deben compartir el camino en T hacia el lugar geométrico extendido de y. Las tres propiedades anteriores capturan la esencia de un árbol del sufijo y sus implicaciones algorítmicas, como se expondrá a lo largo del papel. El árbol del sufijo se ha intensamente empleado en problemas que empareja patrones en cadenas, matrices y árboles. Un patrón típico problema de coincidencia consiste en localizar todas las apariciones de una cadena dada, la matriz o el árbol, llamado el patrón, como una subestructura de otra cadena, matriz o árbol, llamado el texto. Problemas de coincidencia de patrón tienen una amplia gama de aplicaciones, tales como biología molecular, procesamiento de datos, edición de texto, reescribir del término, intérprete diseño, recuperación de información, tipos de datos abstractos y muchos otros. Ahora mostramos el árbol del sufijo "en el trabajo" comentando brevemente algunas de sus aplicaciones típicas en las cuerdas. Un ejemplo clásico es la cadena que empareja, que consiste en encontrar todas las ocurrencias de un patrón y como subcadena de un texto x [20, 69] (vea también la encuesta de Aho [1]). Crochemore et al [29] han utilizado el árbol del sufijo en el patrón y para acelerar el tiempo linear algoritmos de cadena coincidentes en la práctica y en el promedio. El árbol del 5 sufijo definido en un conjunto dinámico de cadenas, en lugar de una sola cadena, se ha utilizado por Amir et al [6] para obtener una versión dinámica de la estática autómata de Diccionario de Aho-Corasick [2]. El autómata de Aho-Corasick encuentra las múltiples ocurrencias de un determinado conjunto {y1,..., yk} de patrones simultáneamente en un texto de x. En muchas aplicaciones, el texto (por ejemplo, el Oxford English Dictionary o una secuencia de ADN) es fija y estática, con la anterior cadena de coincidencias con consulta repite en línea para diversos patrones muchas veces. Así es mejor construir el árbol del sufijo T en x$ como siguiente se muestra [101]. Suponga que y ocurre por lo menos una vez en x: la integridad y propiedades prefijo común garantizan que existe una correspondencia biunívoca entre todas las ocurrencias de y en x y las hojas de T que se descienden desde el centro extendido de y. En el ejemplo de la figura 1, las ocurrencias de y = ba en el texto x = bbabab están representadas por las hojas numeradas 2 y 4. Por otra parte, si el patrón y no ocurre en el texto x hay no pathstring deletreado por y en t en la figura 1, el patrón y = abaa no ocurre en el texto x, desde la última a hace no encuentro el pathstring deletreado por aba. Por lo tanto, en ambos casos, computar el árbol del sufijo de x$ permite a uno encontrar fácilmente y eficientemente todas las ocurrencias de un patrón en el texto preprocesado x. Con un razonamiento similar, es posible encontrar el prefijo más largo de y que ocurre en x, en el tiempo proporcional sólo a la longitud de un prefijo de tal. Por otra parte, asociar el número de hojas descendentes a cada nodo de T, la frecuencia o número de ocurrencias de y en x puede ser conocido sin tener acceso a todas las hojas explícitamente. Estas y otras preguntas son típicas de archivos completos invertidos (por ejemplo, véase [17]). En varias situaciones comunes, tales como editores de texto y sistemas de recuperación de texto [97, Sect.5.3], el texto preprocesado x puede sufrir algunos cambios. Una línea reciente de investigación estudia cómo manejar este caso dinámico sin construir el árbol del sufijo T desde cero cada vez [36, 37, 52]. En muchos casos, las ocurrencias del patrón en el texto pueden ser aproximadas, es decir, nos permite una clase de transformaciones o errores en el patrón (por ejemplo, una falta de ortografía de word o una mutación de la DNA). En la cadena aproximada, desajustes de carácter, inserciones y eliminaciones se consideran en la búsqueda de las ocurrencias del patrón. Varios investigadores descubrieron independientemente la tabla programación dinámica para resolver la cadena aproximada coincidencia problema (ver libro de Sankoff y Kruskal [87] y Galil y de Giancarlo encuesta [41] para una lista de referencias a la literatura). Al mejor de nuestro conocimiento, es un problema abierto para construir una estructura de sufijo-árbol-como datos que permita consultas aproximadas que se realizará en línea en un texto preprocesado, que requieren límites caso peor provably buenos [101]: hasta ahora, se han propuesto algunas soluciones elegantes con consultas de tiempo sublinear por Chang y Lawler [23] y Meyers [80] y un muy buen enfoque que evita , en muchos casos, el recálculo de porciones iguales de la tabla de programación dinámica a través de árboles sufijo ha sido presentado por Ukkonen [98]. Todavía, árboles sufijo resultan para ser muy útiles para acelerar el cómputo de programación dinámico para la resolución aproximada secuencia que empareja (por ejemplo, véase [23, 42, 71, 72, 79, 98]). Entre otros, se ha empleado una técnica básica, que ahora es común para muchos algoritmos de cadena, por primera vez por Landau y Vishkin [71, 72]. Utiliza el árbol del sufijo T para calcular en tiempo constante el prefijo común más largo de los dos sufijos dados de x. De hecho, por la propiedad común de prefijo, el prefijo común más largo de dos sufijos tiene lugar geométrico en el antepasado menos común (LCA) de las dos hojas correspondientes, que pueden ser computadas en tiempo constante después de un tiempo lineal preprocesamiento para responder consultas de ACV [56, 88]. Otra técnica, presentada por Chang y Lawler [23], utiliza el árbol de la suf-6 fix del patrón y calcular estadísticas
...