Académique Documents
Professionnel Documents
Culture Documents
1. MARCO TEÓRICO
a. Fuerza Bruta
Comienza a compararlo con cada uno de los carateres del texto, hasta
que encuentre la primera coincidencia.
Se para en dicha posición y a partir de allí comienza a verificar si el
patrón coincide con el resto del texto.
b. Knuth-Morris-Pratt
c. Boyer-Moore
1
Tomado de: http://es.wikipedia.org/wiki/Algoritmo_Knuth-Morris-Pratt
Este algoritmo consiste en alinear el patrón en una ventana de
texto y comparar de derecha a izquierda los caracteres de la
ventana con los correspondientes al patrón. Si ocurre una
desigualdad se calcula un desplazamiento seguro, el cual
permitirá desplazar la ventana hacia delante del texto sin riesgo
de omitir alguna coincidencia. Si se alcanza el inicio de la ventana
y no ocurre ninguna desigualdad, entonces se reporta una
coincidencia y la ventana se desplaza.2
2
Tomado de: http://www.dcc.uchile.cl/~gnavarro/ps/cic04.pdf
texto de entrada. Concuerda con cualquier patrón, por lo que la
complejidad del algoritmo es lineal a la longitud de los patrones, más la
longitud del texto buscado, más el numero coincidencias que
proporcione la salida. Se debe tener en cuenta que debido a que todas
las coincidencias se localizan, puede haber un numero de coincidencias
cuadrático si coincide cada sub-cadena. El algoritmo construye una
máquina de estados finitos que se asemeja a un “trie” con enlaces
adicionales entre los distintos nodos internos. Estos enlaces internos
permiten transiciones rápidas entre el patrón de coincidencias a otras
bifurcaciones del “trie” que comparten un prefijo común. Esto permite al
autómata la transición entre el patrón de coincidencias sin la necesidad
de dar marcha atrás. Cuando el patrón de diccionario se conoce de
antemano, la construcción del autómata se puede realizar una vez fuera
de línea y el autómata compilado almacenado para su uso posterior. En
este caso, su tiempo de ejecución es lineal en la longitud de la entrada
más el número de entradas coincidentes.
3
Tomado de : http://en.wikipedia.org/wiki/Aho%E2%80%93Corasick_string_matching_algorithm