Sunteți pe pagina 1din 3

FACULTAD DE INGENIERIA ELECTRICA,

ELECTRONICA,
INFORMATICA
Y MECANICA

INGENIERIA INFORMATICA
Y DE SISTEMAS
Algoritmo de Boyer y Moore

1.

Resumen

Para encontrar todas las apariciones de un patron P en una cadena mas grande S y obtener un tiempo de ejecuci
on mejor, usaremos el algoritmo de Boyer y Moore el cual tendra
un comportamiento o una complejidad temporal menor al del algoritmo KMP(KnuthMorris-Pratt).

2.

Introducci
on

Frente al problema de encontrar encontrar las apariciones de un patron P en una


cadena S se llevara a cabo la comprension de la idea del algoritmo de Boyer y Moore para
as poder implementar el algoritmo en la resolucion del problema .

3.

Desarrollo
Para el entendimiento del algoritmo se describira algunos conceptos:

- Al igual que en el algoritmo KMP, en el algoritmo BM desplazamos el patron P sobre


S examinando los caracteres uno a uno. Pero ahora la verificacion de los caracteres de P se
hace de derecha a izquierda (es decir en direccion contraria a la del algoritmo KMP)despues
de cada desplazamiento del patr
on.
- Se utilizan dos reglas para decidir el desplazamiento que hay que hacer despues de una
no coincidencia:

3.1.

Regla A:

Despues de un desplazamiento, se compara un caracter i de P con un caracter j de S


y si son distintos se decide entre una de las dos sentencias siguientes:
a)
Si j aparece m
as a la izquierda en el patron, se desplaza este para alinear la u
ltima
aparicion de y en el patr
on con el caracter y de S.
1

b)
Si j no est
a en P, se coloca este inmediatamente detras de la aparicion de j en S es decir
se recorre una distancia proporcional a la longitud del patron y as empezar a compararlo
nuevamente.

3.2.

Regla B:

Si un cierto numero de caracteres al final de P se alinean correctamente con caracteres


de S, aprovechamos este conocimiento parcial de S (como en el algoritmo KMP que usaba
prefijos) para desplazar P a una nueva posicion compatible con la informacion que que
tenemos.

4.

Ejemplo:

Realizamos cuatro comparaciones hasta encontrar la primera diferencia luego sabemos


que, a partir de esa posici
on, S contiene los caracteres cab.Con esa informacion usamos
la regla B desplazando P cinco posiciones hacia la derecha .

Como los ultimos caracteres no son iguales aplicamos la regla A y tenemos.

Nuevamente aplicando la regla B tenemos.

Como los ultimos caracteres no son iguales aplicamos la regla A y tenemos.

Nuevamente la regla y tenemos.

Asi finalmente encontramos una coincidencia.

5.

Conclusiones

El algoritmo BM es sublineal, ya que no examina necesariamente todos los caracteres


de S y el n
umero de comparaciones es generalmente menor al tama
no de S .

Referencias
[1] Tecnicas Avanzadas de Programacion, Javier Campos.

S-ar putea să vă placă și