Está en la página 1de 33

Algoritmos de Bsqueda

Secuencial de Texto

UCR ECCI
CI-2414 Recuperacin de Informacin
Prof. M.Sc. Kryscia Daviana Ramrez Benavides

Agenda

Introduccin.
Algoritmo Fuerza Bruta (Naive).
Algoritmo Shift-Or.
Algoritmo Boyer-Moore-Horspool.
Conclusiones.
Referencias Bibliogrficas.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Introduccin

Aunque los datos se pueden presentar de varias maneras, el


texto sigue siendo la forma principal para intercambiar la
informacin:

En la literatura o la lingstica los datos se componen de la


recopilacin y de diccionarios enormes.
En la informtica existe una gran cantidad de datos que se almacenan
en archivos.
En la biologa molecular, las molculas biolgicas se pueden
aproximar a menudo como secuencias de nucletidos o de
aminocidos.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Introduccin (cont.)

Adems, la cantidad de datos disponibles en estos campos


tiende a duplicarse cada 18 meses.
sta es la razn por la que los algoritmos deben ser eficientes,
incluso la velocidad y la capacidad del almacenaje de
computadoras aumentan regularmente.
La bsqueda secuencial de texto consiste en encontrar una o,
ms generalmente, ocurrencias de una secuencia
(generalmente llamada patrn) en un texto.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Introduccin (cont.)

Algoritmos ms comunes:

Fuerza bruta.
Familia de algoritmos de corrimiento.

Permite anlisis (o bsqueda) paralelo.

Permite encontrar de una sola pasada dos ocurrencias de la subhilera


ABRACADABRA en la hilera ABRACADABRACADABRA

Funciona como una mquina de estados.

Familia de algoritmos BoyerMoore.

No analiza todos los caracteres del texto.


Preprocesa el patrn a buscar para calcular saltos en el anlisis (o
bsqueda).

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Introduccin (cont.)

Todos los algoritmos que se exponen, encuentran todas las


ocurrencias del patrn en el texto.
El patrn se denota por x = x[0, ..., m-1]; su longitud es igual
a m.
El texto se denota por y = y[0, ..., n-1]; su longitud es igual a
n.
Ambas secuencias son estructuras sobre un sistema finito de
caracteres llamado alfabeto denotado por , con tamao igual
a .

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Introduccin (cont.)

En cada algoritmo se presenta:

Las caractersticas principales.


La descripcin.
El cdigo C.
El comportamiento con un ejemplo tpico, donde:

x = GCAGAGAG.
y = GCATCGCAGAGAGTATACAGTACG.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Algoritmo Fuerza Bruta


(Ingenuo Naive)

Principales Caractersticas

No existe un preprocesamiento del patrn.


Requiere espacio constante.
Realiza siempre saltos de un carcter.
Compara de izquierda a derecha.
Realiza la bsqueda del patrn en un tiempo O(mn).
Realiza 2n comparaciones previstas de los caracteres del
texto.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

Descripcin

No requiere ninguna fase de preproceso previo, ni un espacio


extra constante adems del espacio asignado al patrn y al
texto.
Para la bsqueda:

Consiste en la comparacin de todas las posiciones del texto entre 0 y


el n-m, si una ocurrencia del patrn corresponde o no.
Si encuentra una no ocurrencia, o una ocurrencia total del patrn,
salta un carcter hacia la derecha.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

10

Cdigo C

Ver Algoritmo-FB.txt

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

11

Ejemplo

Ver Algoritmo-FB.pps

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

12

Algoritmo Shift-Or

Principales Caractersticas

Utiliza una mquina de estados.


Existe un preprocesamiento del patrn.
Necesita O(m+) en espacio y tiempo (por el
preprocesamiento).
Realiza corrimientos de un carcter hacia la izquierda.
Se corre un carcter hacia la derecha.
Realiza la bsqueda del patrn en un tiempo O(n)
(independiente de la longitud del patrn y el texto).

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

14

Descripcin

Este algoritmo trabaja con un conjunto de caracteres, un


alfabeto y utiliza una mquina de estados.
El alfabeto lo forma todos los caracteres diferentes del texto y
del patrn.
Los estados son la comparacin de las diferentes partes del
patrn con diferentes partes del texto, en donde se utilizan dos
operaciones:

Corrimientos (SHIFT), paso de un estado a otro.


Operacin lgica OR, para calcular el siguiente estado.

El estado inicial siempre es de slo 1s (la cantidad depende


de la longitud del patrn).

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

15

Descripcin (cont.)

Se calcula el preprocesamiento del patrn de la siguiente


forma:

El patrn se invierte y se indica las apariciones de cada carcter.


Para cada carcter del patrn se saca su estado de aparicin en la
misma.

Caracteres iguales se denotan con 0.


Caracteres diferentes se denotan con 1.

Caracteres que no se encuentren en el alfabeto del patrn tendrn


asignados un estado de slo 1's.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

16

Descripcin (cont.)

Para la bsqueda:

Se toma el estado actual, se le hace corrimiento a la izquierda de 1 bit


y se le aplica la operacin OR con el patrn correspondiente al
carcter actual.
Se corre un carcter hacia la derecha si no hay ocurrencia o se da una
ocurrencia total.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

17

Cdigo C

Ver Algoritmo-SO.txt

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

18

Ejemplo

Alfabeto:

A C G T.

Preprocesamiento:

Patrn = GCAGAGAG.

SA

SC

SG

ST

Ver Algoritmo-SO.pps

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

19

Algoritmo Boyer-Moore-Horspool

Principales Caractersticas

Es una simplificacin del algoritmo de Boyer-Moore.


Es fcil de implementar.
Existe un preprocesamiento del patrn.
Necesita O() en espacio y O(m+) en tiempo (por el
preprocesamiento).
Realiza saltos determinados en el preprocesamiento.
Compara de derecha a izquierda.
Realiza la bsqueda del patrn en un tiempo O(mn).
Realiza un nmero promedio de comparaciones para un
carcter entre 1/ y 2/(+1).

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

21

Descripcin

Es considerado el mejor algoritmo de bsqueda de un patrn


en un texto en aplicaciones usuales.
El algoritmo escanea los caracteres del patrn con el texto
iniciando con el carcter ms a la derecha.
En caso de una no ocurrencia o una ocurrencia total del patrn
se usa una funcin preprocesada para saltar:

Salto del mal carcter (bad-character shift) (o salto de ocurrencia).

Horspool propuso utilizar solamente el salto del mal carcter


para calcular los saltos en el algoritmo de Boyer-Moore.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

22

Descripcin (cont.)

El salto del mal carcter consiste en:

Alinear cada carcter del alfabeto con la ocurrencia ms a la


derecha en x[0, , m-2].
Si el carcter no ocurre en el patrn x, la no ocurrencia de x puede
incluir el carcter, y alinearlo en el lado ms izquierdo del patrn.

Esta operacin (usada en el algoritmo BM) no es muy


eficiente para alfabetos pequeos, pero cuando el alfabeto es
grande comparado con la longitud del patrn llega a ser muy
til.
Usarlo slo produce un algoritmo muy eficiente en la prctica.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

23

Descripcin (cont.)

Se calcula el preprocesamiento del patrn de la siguiente


forma:

Se calcula la distancia mnima entre el ltimo carcter y la ocurrencia


de cada carcter del alfabeto de la hilera principal.

Para la bsqueda:

Consiste en la comparacin de cada carcter del texto con las


posiciones del patrn en el orden m-1, 0, 1, 2, , y m-2, si se da una
ocurrencia del patrn o no.
Cuando se encuentra una no ocurrencia, al hacer la primera
comparacin entre el patrn y el texto, el salto se calcula bmBc[c],
donde c es el carcter del texto.
Cuando se encuentra una no ocurrencia o una ocurrencia total, al
hacer las siguientes comparaciones entre el patrn y el texto, el salto
se calcula bmBc[c], donde c es el carcter del patrn.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

24

Cdigo C

Ver Algoritmo-BMH.txt

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

25

Ejemplo

Preprocesamiento:

Patrn = GCAGAGAG.

Otro
G
Carcter
8
7
c
A
bmBc[c] 1

C
6

G
2

T
8

Ver Algoritmo-BMH.pps

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

26

Variante

Variante

Algoritmo que aproveche las cualidades de ambos algoritmos


expuestos anteriormente.

Capacidad de salto (Familia Boyer-Moore)


Paralelismo y anlisis sin repeticin. (Familia de algoritmos de
corrimiento).

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

28

Variante propuesta

Ventajas:

Aparente disminucin en cantidad de comparaciones.


Aumentan los saltos y mejora su posicin de inicio.

Desventajas

Requiere hacer todo el pre anlisis de ambos algoritmos base.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

29

Variante (cont.)

Ver Variante.exe

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

30

Conclusiones

El tiempo de ejecucin para encontrar matching exacto entre


un patrn x y un texto y, puede ser mejorado si se utiliza un
algoritmo eficiente.
Considerando la cantidad, cada vez mayor, de texto que se
maneja, vale evaluar e ejecutar un algoritmo eficiente.
En grandes colecciones de documentos en un dominio
particular, el algoritmo Boyer-Moore-Horspool alcanza los
mejores resultados al encontrar una secuencia en un texto.
Aproximadamente, el algoritmo BMH realiza la bsqueda por
lo menos dos veces ms rpidamente que los otros algoritmos.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

31

Conclusiones (cont.)
Resultados del experimento
para buscar un conjunto de
1000 secuencias en un texto
en Ingls. [BYGo92]

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

32

Referencias Bibliogrficas

Christian Charras y Thierry Lecroq. Exact String Matching


Algorithms. Laboratorio de Informtica de Rouen, Facultad
de las Ciencias y las Tcnicas, Universidad de Rouen. Francia,
1997. URLs:

http://www-igm.univ-mlv.fr/~lecroq/string/.
http://www-igm.univ-mlv.fr/~lecroq/string/string.pdf.

Ricardo Baeza-Yates y Gaston Gonnet. A New Approach to


Text Searching. Communications of the ACM, 35(10):74-82.
1992.
Presentacin de Mauricio Ulate Quirs: Algoritmos de
Bsqueda Secuencial de Texto, en el curso PF3394Recuperacin de Informacin. San Jos, Costa Rica, 2004.

UCR-ECCI CI-2414 Recuperacin de Informacin


Algoritmos de Bsqueda Secuencial de Texto

33

También podría gustarte