You are on page 1of 10

Algunos Algoritmo de

procesamiento de caracteres
Trivial
Rabin-Karp
Knuth-Morris_Pratt
Boyer-Moore
Bsqueda de
expresiones regulares
algoritmo de Boyer-Moore
(1977)
Preprocesa la cadena objetivo
(clave) que est siendo buscada,
pero no en la cadena en que se
busca.

El tiempo de ejecucin del


algoritmo Boyer-Moore, aunque
es lineal en el tamao de la
cadena siendo buscada, puede
tener un factor significativamente
ms bajo que muchos otros
algoritmos de bsqueda: no
necesita comprobar cada carcter
de la cadena que es buscada,
puesto que salta algunos de ellos.
J Strother Moore
Algoritmo BM
Puede encontrar todas las
apariciones de un patrn P (de
longitud m) en una cadena madre
S (de longitud n) en un tiempo
O(n) en el caso peor.

Es sublineal: no examina
necesariamente todos los
caracteres de S y el n de
comparaciones, a menudo,
inferior a n.

En el mejor caso encuentra todas


las apariciones de P en S en un
tiempo O(m+n/m)
Robert S. Boyer
Calculo de la tabla D1
(Prefijo malo)
Patrn OSTENTE
O S T E N T E
Ejemplo de comprobacin: 6 5 4 3 2 1 0
S: FADFAEVASEGSOSTENTE
P: OSTENTE E N O S T otro
s
D1 0 2 6 5 1 7

F A D F A E V A S E G S O S T E N T E

S: Cadena madre 1 2 3 4 5 6 7 1 2 3 4 5 O S T E N T E

P: Patrn
Paso 1
Patrn OSTENTE
Armar la tabla primera fila:

Se coloca cada ocurrencia


de cada carcter del patrn
en una tabla en orden E N O S T otro
s
alfabtico.
D1

En el ejemplo la E y la T
solo se coloca una vez.
Paso 2
Patrn OSTENTE
Posicin de los caracteres
del patrn:

Poner la posicin de la
primera aparicin del
O S T E N T E
carcter en el patrn
contando desde la derecha y 6 5 4 3 2 1 0
comenzando en 0.
Paso 3
Patrn OSTENTE
Rellenar la segunda fila

Se coloca la primera O S T E N T E
ocurrencia de derecha a 6 5 4 3 2 1 0
izquierda.

Otros es el total de caracteres


o tamao del patrn. E N O S T otro
s
D1 0 2 6 5 1 7
Comprovacin
Ejemplo:

S: FADFAEVASEGSOSTENTE
P: OSTENTE
F A D F A E V A S E G S O S T E N T E

Se compara la ltima letra del O S T E N T E


patrn con la primera fila que
en este caso es V y como no
es la misma la comparamos
con la tabla y como no E N O S T otro
tenemos V se desplaza 7 s
caracteres que pertenece a D1 0 2 6 5 1 7
otros.
Comprobacin
Ejemplo:

S: FADFAEVASEGSOSTENTE
P: OSTENTE F A D F A E V A S E G S O S T E N T E

1 2 3 4 5 6 7 O S T E N T E
Al recorrer 7 caracteres
volvemos a comparar la ltima
letra con la primera fila en este
caso es S como no son
iguales la buscamos con la E N O S T otro
tabla y la encontramos con 5 s
por lo que recorreremos 5 D1 0 2 6 5 1 7
caracteres.
Comprobacin
Ejemplo:

S: FADFAEVASEGSOSTENTE
P: OSTENTE
F A D F A E V A S E G S O S T E N T E

Al recorrer 5 caracteres volvemos a


comparar la ltima letra con la 1 2 3 4 5 6 7 1 2 3 4 5 O S T E N T E

primera fila en este caso son iguales


pasamos a comparar los dems
caracteres hasta encontrar un fallo
pero como hay termina el algoritmo.
E N O S T otro
Nota: Si se encuentra un fallo volver s
a comparar con la tabla. D1 0 2 6 5 1 7