inf - algoritmo boyer-moore

Upload: want90x

Post on 08-Feb-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    1/9

    1

    Repblica Bolivariana De Venezuela

    Universidad de Oriente

    Ncleo Anzotegui

    Escuela de Ingeniera y Ciencias Aplicadas

    Departamento de Computacin Y Sistemas

    Taller De Anlisis Y Diseo De Algoritmos

    Profesor: Claudio A. Cortinez.

    Bachiller: Christian Ynez.

    Bachiller: Nelson Rodrguez.

    Marzo de 2014

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    2/9

    2

    NDICE GENER LINDICE GENERAL ........................................................................................................................... 2

    ANTECEDENTES ............................................................................................................................. 3

    Esquema Algoritmo .................................................................................................................. 4

    EJEMPLO ...................................................................................................................................... 5

    Aplicabilidad ............................................................................................................................. 7

    COSTES ........................................................................................................................................ 8

    ANLISIS ...................................................................................................................................... 9

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    3/9

    3

    NTECEDENTESLa bsqueda de patrones en un texto es un problema muy importante en la

    prctica. Sus aplicaciones en computacin son variadas, como por ejemplo labsqueda de una palabra en un archivo de texto o problemas relacionados conbiologa computacional, en donde se requiere buscar patrones dentro de unasecuencia de ADN, la cual puede ser modelada como una secuencia de caracteres (elproblema es ms complejo que lo descrito, puesto que se requiere buscar patronesen donde ocurren alteraciones con cierta probabilidad, esto es, la bsqueda no esexacta).

    Hasta un momento, los algoritmos de bsqueda en texto siempre comparabanel patrn con el texto de izquierda a derecha. Sin embargo, suponga que lacomparacin ahora se realiza de derecha a izquierda: si hay una discrepancia en elltimo carcter del patrn y el carcter del texto no aparece en todo el patrn,entonces ste se puede deslizar m posiciones sin realizar ninguna comparacin extra.

    En particular, no fue necesario comparar los primeros m-1 caracteres del texto, lo cualindica que podra realizarse una bsqueda en el texto con menos de n comparaciones;sin embargo, si el carcter discrepante del texto se encuentra dentro del patrn, stepodra desplazarse en un nmero menor de espacios.

    El algoritmo fue desarrollado por Bob Boyer y J Strother Moore en 1977.Boyer-Moore es considerado el algoritmo ms eficiente en la bsqueda de patronesen cadena de caracteres, como lo indicamos anteriormente este se basa endesplazar la ventana de comparacin lo mximo posible a costa de una computacinprevia. La mayor eficiencia se consigue minimizando el nmero de comparacionesentre caracteres.

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    4/9

    4

    Esquema lgoritmoBOYER_MOORE_MATCHER (T, P)Entrada:Texto n caracteres y Patrn m caracteresSalida:ndice de la primera subcadena T que coincide con P

    1.Compute function last2.i m-13.j m-14.Repeat5. If P[j] = T[i] then6. if j=0 then7. return i // we have a match8. else9. i i -110. j j -111. else12. i i + m - Min(j, 1 + last[T[i]])13. j m -114. until i > n -115. Return "no match"

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    5/9

    5

    EJEMPLONotacin

    y: cadena dnde se busca.

    x patrn de bsqueda.

    | y | = n, longitud de y.

    | x | = m, longitud de x.

    j: posicin en y desde dnde se prueba la coincidencia.

    i: posicin en x de comparacin, dnde se produce una no

    coincidencia , y[j+i] x[i], y[j+i] = b, x[i] = a.u: coincidencia en la comparacin, sufijo de x, u =

    y[j+i+..j+m] = x[i+1..m-1].

    v: prefijo de x.

    s: salto del patrn para la siguiente comparacin.

    Al producirse una ocurrencia del patrn, o un error en la comparacinde un carcter, se calcula el desplazamiento mximo del patrn a lo largo dela cadena de bsqueda.Partimos de una situacin en que no hay coincidencia, existe diferencia entrey[j+i] y x[i], pero las posiciones de x siguientes a i s coinciden con susasociadas en y, u = y[j+i+..j+m] = x[i+1..m-1]; hacer notar que u es sufijo de x.

    El desplazamiento de x a lo largo de y se limita a causa del carcteren y que produjo la no coincidencia, y[i+j] (1), y los caracteres de xposteriores a i (2), sufijo de x que tena coincidencia parcial con y.

    (1) Teniendo en cuenta el carcter que produjo la no coincidencia eny, y[i+j] = b, el desplazamiento mximo, s, ser la distancia entre la aparicinms a la derecha de b en x[0..m-2] y la longitud de x, m. La nueva j sera

    j=j+s, lo que se consigue es alinear lasdos coincidencias de b en x e y,desde dnde es posible que se produzca una coincidencia del patrn. Seconsidera el intervalo 0..m-2, porque si se da el caso de que b es igual alltimo carcter de x, el desplazamiento sera 0, y podra provocar un bucleinfinito debido a que el patrn no vara su posicin.

    (1)

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    6/9

    6

    (2) Teniendo en cuenta los caracteres posteriores a i en x (u, sufijo dex), que coinciden de forma parcial con y, hay que alinear u lo ms a laderecha posible de x, sin que est precedido por x[i] = a (2.a); al no estar uya precedido por x[i] = a x[i-s] = c, en la nueva posicin de x respecto de

    y, sabemos que existe la coincidencia u precedida por c, es posible que seproduzca una ocurrencia en y. Si no se encuentra la situacin anterior, setratar de alinear el mayor sufijo posible de x con un prefijo v tambin de x(2.b); como u coincide parcialmente en y, al buscar el prefijo v de x quetambin es sufijo de x, v tambin est en y. Si no se producen ninguno de losdos casos anteriores, el patrn se podr desplazar toda su longitud.(2.a)

    (2.b)

    El desplazamiento de x a lo largo de y ser el mximo desplazamientoentre los dos anteriores, (1) y (2).

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    7/9

    7

    plicabilidadBoyer-Moore al ser el algoritmo de bsqueda general ms eficiente este es

    implementado en las aplicaciones ms habituales, como por ejemplo los editores detexto, los navegadores de internet, los lectores de libros electrnicos.

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    8/9

    8

    COSTESEn el mejor caso, el primer elemento del patrn no est en el texto, de

    manera que ningn carcter coincide con l. Tenemos un coste temporal de ordenO(n), el algoritmo es lineal.

    En el peor caso el coste temporal de este algoritmo es de O (mn), que seraaquel en el que encontramos el patrn en todas las subcadenas del texto.En promedio el coste temporal es menor que O(mn), ya que no precisamoscomparar cada vez los m caracteres, slo comparamos hasta que se detecta un falloy las probabilidades de falsos comienzos son muy inferiores a 1 en general. Sibuscamos en textos normales ser de orden O(m+n) en la mayora de los casos.

    El coste espacial es nulo, salvo que consideremos parte del algoritmo losbuffers empleados para almacenar el patrn y la subcadena del texto con la que esteest alineado, en cuyo caso ser de O(m).

  • 7/22/2019 Inf - Algoritmo Boyer-Moore

    9/9

    9

    NLISISEste es el algoritmo ms rpido para la bsqueda de un solo patrn en la

    teora y en la prctica.

    El clculo del tiempo de ejecucin para Boyer-Moore es de O( m+ n) y enbsqueda en tiempo real O( mn). Por tanto, en el peor de los casos el tiempo dealgoritmo de Boyer-Moore de ejecucin es O(mn) . Implica que el tiempo en el peorcaso de funcionamiento es cuadrtica, en el caso de que n = m , la misma que la delalgoritmo de nave.

    El algoritmo de Boyer-Moore es extremadamente rpido aun cuando existaun gran alfabeto.

    Para bsquedas binarias o patrones muy cortos el rendimiento es menor. Para cadenas binarias se recomienda algoritmo de Knuth-Morris-Pratt. Para los patrones que son demasiado cortos, el algoritmo de nave puede ser

    la mejor opcin.