100 likes | 388 Views
Cadenas de Caracteres y Emparejamiento de Patrones. Fuerza Bruta Rabin-Karp Knuth-Morris-Pratt Tries. Búsqueda de cadenas. El objetivo de búsqueda en cadenas es hallar la localización de un patrón de texto específico dentro de un texto largo (e.g., una oración, un parráfo, un libro, etc.).
E N D
Cadenas de Caracteres y Emparejamiento de Patrones • Fuerza Bruta • Rabin-Karp • Knuth-Morris-Pratt • Tries
Búsqueda de cadenas • El objetivo de búsqueda en cadenas es hallar la localización de un patrón de texto específico dentro de un texto largo (e.g., una oración, un parráfo, un libro, etc.). • Los requisitos son velocidad y eficiencia. • Hay un gran número de algoritmos para esto, entre los cuales están Fuerza Bruta,Rabin-Karp, y Knuth-Morris-Pratt.
Fuerza Bruta • El algoritmo de Fuerza Bruta compara el patrón con el texto un caracter cada vez, hasta encontrar que no coinciden los caracteres
Complejidad Fuerza Bruta • Dado un patrón de M caracteres de longitud, y un texto de N caracteres de longitud: • Peor caso: compara el patrón con cada subcadena de texto de longitud M. • Complejidad: O(MN) • Mejor caso: encuentra el patrón en las primeras M posiciones del texto. • Complejidad: O(N)
Rabin-Karp • Calcula un valorhash para el patrón, y para cada subsecuencia de M-caracteres de texto. • Si los valores hash son diferentes, se calcula una valor para la siguiente secuencia. • Si los valores hash son iguales se usa una comparación de Fuerza Bruta.
Ejemplo Rabin-Karp • Valor Hash de “AAAAA” es 37 • Valor Hash de“AAAAH” es 100
Algoritmo Knuth-Morris-Pratt • El algoritmo de búsqueda Knuth-Morris-Pratt (KMP) se diferencia del método de fuerza bruta porque mantiene una pista de información obtenida en comparaciones previas. • Se calcula una función de fallo (f) qie indica cuanto se la última comparación se puede reusar si existe un fallo.
Algoritmo KMP • Complejidad: O(n + m)