INTELIGENCIA ARTIFICIAL UNIDAD III ALGORITMO DE BM PIERRE SERGEI ZUPPA AZÚA www.utel.edu.mx Inteligencia Artificial Algoritmo BM Algunos Algoritmo de procesamiento de caracteres • Trivial • Rabin-Karp • Knuth-Morris_Pratt • Boyer-Moore • Búsqueda de expresiones regulares www.utel.edu.mx Inteligencia Artificial Algoritmo BM 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 ejecución del algoritmo Boyer-Moore, aunque es lineal en el tamaño de la cadena siendo buscada, puede tener un factor significativamente más bajo que muchos otros algoritmos de búsqueda: no necesita comprobar cada carácter de la cadena que es buscada, puesto que salta algunos de ellos. J Strother Moore www.utel.edu.mx Inteligencia Artificial Algoritmo BM Algoritmo BM Puede encontrar todas las apariciones de un patrón 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) www.utel.edu.mx Robert S. Boyer Inteligencia Artificial Algoritmo BM Calculo de la tabla D1 (Prefijo malo) Patrón “OSTENTE” Ejemplo de comprobación: S: FADFAEVASEGSOSTENTE P: OSTENTE O S T E N T E 6 5 4 3 2 1 0 E N O S T otros 0 2 6 5 1 7 D1 S: Cadena madre P: Patrón 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 1 2 3 4 5 O S T E N T E www.utel.edu.mx Inteligencia Artificial Algoritmo BM Paso 1 Patrón “OSTENTE” Armar la tabla primera fila: Se coloca cada ocurrencia de cada carácter del patrón en una tabla en orden alfabético. E D1 En el ejemplo la “E” y la “T” solo se coloca una vez. www.utel.edu.mx N O S T otros Inteligencia Artificial Algoritmo BM Paso 2 Patrón “OSTENTE” Posición de los caracteres del patrón: Poner la posición de la primera aparición del carácter en el patrón contando desde la derecha y comenzando en 0. O S T E N T E 6 5 4 3 2 1 0 www.utel.edu.mx Inteligencia Artificial Algoritmo BM Paso 3 Patrón “OSTENTE” Rellenar la segunda fila Se coloca la primera ocurrencia de derecha a izquierda. O S T E N T E 6 5 4 3 2 1 0 E N O S T otros 0 2 6 5 1 7 Otros es el total de caracteres o tamaño del patrón. D1 www.utel.edu.mx Inteligencia Artificial Algoritmo BM Comprovación Ejemplo: S: FADFAEVASEGSOSTENTE P: OSTENTE Se compara la última letra del patrón con la primera fila que en este caso es “V” y como no es la misma la comparamos con la tabla y como no tenemos “V” se desplaza 7 caracteres que pertenece a otros. www.utel.edu.mx D1 F A D F A E V O S T E N T E A S E G S O S T E N T E E N O S T otros 0 2 6 5 1 7 Inteligencia Artificial Algoritmo BM Comprobación Ejemplo: S: FADFAEVASEGSOSTENTE P: OSTENTE 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 tabla y la encontramos con 5 por lo que recorreremos 5 caracteres. www.utel.edu.mx D1 F A D F A E V A S E G S O S 1 2 3 4 5 6 7 O S T E N T E T E N T E E N O S T otros 0 2 6 5 1 7 Inteligencia Artificial Algoritmo BM Comprobación Ejemplo: S: FADFAEVASEGSOSTENTE P: OSTENTE Al recorrer 5 caracteres volvemos a comparar la última letra con la primera fila en este caso son iguales pasamos a comparar los demás caracteres hasta encontrar un fallo pero como hay termina el algoritmo. D1 Nota: Si se encuentra un fallo volver a comparar con la tabla. www.utel.edu.mx 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 1 2 3 4 5 O S T E N T E E N O S T otros 0 2 6 5 1 7