En el algoritmo de coincidencia de cadenas - BM Algoritmo

contorno

algoritmo de BF en algunos casos extremos, más grave degradación del rendimiento.

RK algoritmo requiere un algoritmo de hash, el diseño de un algoritmo de control puede hacer frente a diferentes tipos de personajes no son simples.

 

algoritmo BM

BM (Boyer-Moore) es un algoritmo muy eficiente para el algoritmo de coincidencia de cadenas, el rendimiento es de aproximadamente 3 a 4 veces el famoso algoritmo KMP.

Sin embargo, para hacer realidad el principio de BM algoritmo también es muy complicado.

 

pensamiento algoritmo BM

Nos proceso de coincidencia de cadenas de patrones y las principales cadenas, los patrones pueden vernos siguiente cadena de forma deslizante guardado en la corriente principal.

Cuando los personajes enfrentados no coinciden, el algoritmo prácticas BF y el algoritmo RK es un patrón de cuerdas se deslizan hacia atrás y empezar de nuevo desde el primer carácter de la cadena de patrones.

Sin embargo, en el ejemplo anterior, la principal cadena "c", en la cadena de patrón no existe. cadena de patrón se deslice hacia atrás, siempre y cuando hay una superposición patrón de cadena C y, desde luego no coincide.

Por lo tanto, podemos de una sola cadena de tiempo de varios patrones de vuelta varias diapositivas, se mueve detrás de las cadenas de patrones de c.

 

Tales cadenas de patrones se deslizarán hacia atrás varios multi, multi-corredera hacia atrás unos pocos tal hecho eficiencia desechable, a juego mejorado.

¿En qué circunstancias puede la cadena modalidad de varias diapositivas, múltiples portaobjetos unos pocos? ¿Qué ley tienen?

 

Esencialmente BM algoritmo está realmente buscando una ley de este tipo.

Con esta ley, en el curso de la cadena principal patrón de coincidencia de cadenas, la cadena y el modo principal cuando una cadena de caracteres que no coincide, sin duda no será capaz de pasar por alto algunos casos coinciden.

El multi-patrón de vuelta cadena de varias diapositivas, lo que aumenta la eficiencia de

 

BM idea central algoritmo: utilizando la cadena de patrón de características propias, cuando una cadena de caracteres en un patrón con la cadena principal no coincide con la cadena de patrón corredera hacia atrás a más de uno, a fin de reducir las comparaciones de caracteres innecesarios, mejorar la adecuación de eficiencia.

 

principio algoritmo BM

 

Para entender el algoritmo BM, BM algoritmo se compone de dos partes, a saber mala regla de carácter (mala regla de carácter) y una buena regla de sufijo (sufijo buena turno).

 

regla de mal carácter

BF algoritmo y RK son por cadena de patrón orden subíndice ascendente emparejado secuencialmente a la cadena principal.

Mientras que el algoritmo de coincidencia BM secuencia bastante especial, que está en conformidad con el orden descendente subíndice cadena de patrón, igualando hacia atrás.

 

Que avanzamos hacia atrás desde el final de cadena coincidencia de patrones, y cuando nos encontramos con que un personaje no puede igualar cuando ponemos este personaje no encontró ningún carácter mal conocida

mala disposición se refieren a la cadena principal

 

Tome mirada mal carácter c en la cadena patrón, patrón de cadena encontrada no existe en este carácter, es decir, cualquier carácter con el carácter c en el patrón de encordado puede no coincide.

Esta vez, podemos directamente atrás de la corredera de tres cadena de patrón, patrón de la cadena se desliza a la posición trasera C, y luego compara el comienzo del fin del patrón de cadena de caracteres.

 

 

En este modo de cadena "d", todavía no puede coincidir con la cadena principal de una, simplemente puede deslizar hacia atrás la cadena patrón de tres en esta situación?

No es aceptable, porque en este momento un mal caracteres de la cadena patrón, el patrón de la cadena es un índice de posición de 0 es el carácter a.

 

En este caso, se puede deslizar hacia atrás dos cadenas de patrones, hacer una de dos alineados arriba y abajo, a continuación, empezar desde el final del modo de cadena de caracteres, revancha.

 

Ambos casos son malos cadena donde la presencia o ausencia del patrón. ¿Cuántas diapositiva específica, no existe una ley?

 

Cuando se produce una falta de coincidencia, ponemos las malas caracteres correspondientes a la cadena patrón de caracteres como un marcador de si

Si su mala disposición en la cadena de patrón está presente, nosotros, esta mala caracteres de la cadena patrón etiquetados como xi, y si no, -1 denominan xi.

Esa cadena patrón es igual al número de bits se mueve hacia atrás si-xi.

Aquí subíndices cadena de patrón de caracteres subíndice.

 

Además de estos dos casos, en realidad hay una situación que no sólo es mala disposición en la cadena de patrón, hay más.

Si muchos malos caracteres aparecen en la cadena patrón, entonces xi compute la hora de seleccionar los más por eso.

cadena de patrón porque no va a dejar pasar deslizamiento demasiado, lo que resulta en la situación podría haber sido emparejado omitido. 

 

Buena regla de sufijo

Sufijo reglas de buenas ideas y las malas ideas muy similares a las reglas del carácter.

 

Cuando la cadena de patrón deslizado en su posición cuando el dibujo y la cadena principal patrón tiene una cadena de dos caracteres están emparejados, se ha producido la inversa de la tercera falta de coincidencia de caracteres.

Se puede calcular la posición de la regla de cálculo por su mala disposición, también se puede hacer un buen uso de la regla de sufijo.

 

bc tenemos un partido bueno se llama sufijo, denotado por {u}.

Esta situación también se divide en dos.

La tomamos para encontrar la cadena de patrón, si otro con la sub-partido {U} {U} * cadena encontrada, vamos a caer en sub-cadena de modelo {u *} y {u} de la corriente principal alineado ubicación.

 

Si no hay otra cadena de patrón igual a la subcadena {u}, vamos a dirigir la cadena de patrón, se deslizó en la corriente principal {u} después.

Debido a que cualquier caso antes de una diapositiva siguiente, no coinciden con la corriente principal de {u}.

 

 

Este proceso es similar a las reglas de mal carácter, por lo que si se deslizará un poco demasiado lejos?

 

 

Sufijo aC hay una buena, aunque no es otro sub coincidente con la cadena de modelo {u} *.

Pero si nos movemos a la parte posterior de una cadena sufijo buen patrón, que se perderá las circunstancias y la cadena principal patrón de encordado puede igualar.

 

 

Si el bien sufijo coincidencias de subcadenas no están presentes en la cadena de patrón, entonces estamos en el proceso paso a paso hacia atrás deslizando cadena modo, siempre que la cadena principal {u} hay una superposición con la cadena de patrón, desde luego, no va a coincidir exactamente.

Sin embargo, cuando el modo se desliza a la cadena de prefijo de la corriente principal {u} sufijos se solapan parcialmente con un tiempo, y cuando las porciones superpuestas son iguales, puede haber un caso donde hay una coincidencia exacta.

El ejemplo anterior no se tiene en cuenta esta situación y el deslizamiento excesivo.

 

En vista de esta situación, debemos no sólo optimista sobre el modo de cadena de sufijo, si hay otra coincidencia de subcadena.

También examinamos el sufijo subcadena buena sufijo, si hay una cadena de patrón con el emparejamiento de prefijo subcadena.

 

Se llama una subcadena de cadena sufijo, el último carácter se alinea con la subcadena s, tales como el ABC sufijo subcadena incluyendo C, BC.

El llamado subcadena prefijo, s está alineada con la sub cadena de caracteres de partida, tales como ABC prefijo tiene una subcadena, ab.

 

Nos sufijo parcial de caracteres de buena sufijo, y se clasifican para encontrar una subcadena más larga cadena de prefijo coincidencia de patrones, asumiendo {v}

 

¿Cómo elegir las reglas?

De acuerdo con las reglas de mal carácter, deslice hacia atrás el número de bits calculada, puede ser negativo.

 

PS: ¿Por qué hay un negativo?

Cuando se enfrentan con mal carácter, para calcular el movimiento de retroceso de la mediana si-xi, que es el centro de cómputo xi, xi cómo lo encontramos?

O, cómo encontrar la ubicación de su mala aparecen en la cadena patrón de ella?

Si el orden de recorrido para encontrar el mismo patrón, por lo que sería más ineficiente.

Para mejorar la eficiencia, se puede usar una tabla hash.

tabla hash registro "posición de la última prueba del" carácter diferente en la cadena de patrón. La primera posición no es la posición de Si a futuro.

La figura en este ejemplo anterior, el uso de las reglas, entonces los malos caracteres, si = 4, y la posición final c en aparece cadena de patrón xi = 6, caracteres malas descarta si - xi = -2

Por lo tanto, donde Si es mayor que xi aparecerá, es decir, el número de bits calculado negativo deslizable

 

Podemos calcular el número de bits son buenos y mal carácter sufijos siguiente diapositiva, y luego tomamos el número de dos dígitos de los más grandes, como la cadena de patrón de diapositiva siguiente.

Esto también evita los malos personajes fuera de la regla de cálculo para calcular la mediana puede ser un número negativo.

 

Tucao acerca algoritmo BM

Principio BM BM algoritmo y en comparación con mucho más complicado en términos de RK, sino por el aprendizaje es comprensible, pero el código específico que lo implementa muy fácil

 

Sobre BM aprendizaje algoritmo, entonces se centró en las ideas y principios, había un muy buen resumen de mi hermano

Por la presente, cito, como señalo aprender algoritmo BM

1, debe optimizar la conciencia, BF, RK algoritmo ha sido capaz de satisfacer nuestras necesidades, por eso invención algoritmo BM? Es para reducir la complejidad del tiempo, pero los males que el código optimizado es complicado, altos costos de mantenimiento.

2, la necesidad de encontrar la necesidad de reducir la complejidad del tiempo, qué pensar? tabla hash.

3, si una sobrecarga de cálculo expresión es relativamente grande, y requiere el uso frecuente de cómo hacerlo? Previamente tratada, y cachés.

 

BM alto rendimiento algoritmo, que se llama para un rendimiento, necesitamos un algoritmo más complejo, pero el más complejo algoritmo, la implementación del código es ciertamente más complejo, más fácil detalles equivocadas
 

Rendimiento en el algoritmo BM, el papel se ha demostrado que, en el peor de los casos el límite superior del número de comparaciones BM algoritmo es 3n.

registro de este medio, había un entendimiento

Publicados 113 artículos originales · ganado elogios 25 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_42006733/article/details/105136180
Recomendado
Clasificación