Algoritmos de Búsqueda
BOYER-MORE
Algoritmo de Búsqueda de Cadenas
- Fue desarrollado por Bob Boyer y J Strother Moore en 1977.
- Su tiempo de ejecución del algoritmo es el tamaño de la cadena que esta siendo buscada.
- No necesita comprobar cada carácter de la cadena que es buscada, puesto que salta algunos de ellos.
- Generalmente el algoritmo es mas rápido cuanto mas grande es el patrón que es buscado, usa la información conseguida desde un intento para descartar tantas posiciones del texto como sean posibles en donde la cadena no coincide.
- https://prodeportiva.wordpress.com/2013/07/23/boyer-moore-horspool/
BOYER-MORE
Algoritmo de Búsqueda de Cadenas
- Lo novedoso de este algoritmo es que las comparaciones se hacen de derecha a izquierda, así si el ultimo elemento del patrón no coincide y además el carácter del texto no se encuentra en el patrón, este se puede correr ”m” posiciones sin tener que realizar ninguna otra comparación.
- Una simplificación de este algoritmo es el Boyer-Moore-Horspool (BMH).
Algoritmo
// m es el largo del patron
// los indices comienzan desde 1
int k=m;
int j=m;
while(k<=n && j>=1) {
if (texto[k-(m-j)] == patron[j]) {
j--;
} else {
k= k + (m – siguiente(a[k]));
j=m;
}
}
if (j==0){
imprimir(“Patrón encontrado”)
} else {
imprimir(“Patrón no encontrado”)
}
Title Text
BOYER-MOORE-HORSPOOL
Algoritmo de Búsqueda de Cadenas
- El algoritmo BM fue modificado después por Nigel Horspool, con el objetivo de crear un algoritmo que fuera rápido al buscar en textos de alfabetos naturales (lenguajes humanos) y a la vez sencillo de entender
- El algoritmo fue publicado en 1980 con el nombre de Boyer-Moore-Horspool.
- Compara el patrón con el texto de derecha a izquierda, y se detiene cuando se encuentra una discrepancia con el texto. Cuando esto sucede, se desliza el patrón de manera que la letra del texto que estaba alineada se alinea con una letra coincidente.
BOYER-MOORE-HORSPOOL
Algoritmo de Búsqueda de Cadenas
El algoritmo esta basado en dos ideas fundamentales:
- Buscar de derecha a izquierda.
- Calcular los saltos que se pueden hacer para avanzar mas en la búsqueda.
Algoritmo
// m es el largo del patron
// los indices comienzan desde 1
int k=m;
int j=m;
while(k<=n && j>=1)
{
if (texto[k-(m-j)]==patron[j])
{
j--;
}
else
{
k=k+(m-siguiente(a[k]));
j=m;
}
}
// j==0 => ¡Encontrado!, j>=0 => No encontrado.
Algoritmos de Búsqueda BM*
By Richard Cotrina
Algoritmos de Búsqueda BM*
Trabajo de la universidad: Algoritmos de búsqueda -ALGORITMO DE BÚSQUEDA DE CADENAS BOYER-MOORE - ALGORITMO DE BOYER-MOORE-HORSPOOL
- 1,803