freeCodeCamp/guide/spanish/algorithms/string-matching-algorithms/rabin-karp-algorithm/index.md

1.8 KiB

title localeTitle
Rabin Karp Algorithm Algoritmo de Rabin Karp

Algoritmo de Rabin-Karp

  • Un algoritmo de búsqueda / búsqueda de cadenas desarrollado por Michael O. Rabin y Richard M. Karp.
  • Utiliza la técnica de hash y la fuerza bruta para comparación.

Términos importantes

  • patrón es la cadena a buscar. Considere la longitud del patrón como M caracteres.
  • texto es el texto completo desde el que se busca el patrón. Considere la longitud del texto como N caracteres.

¿Qué es la comparación de fuerza bruta?

En la comparación de fuerza bruta, cada carácter del patrón se compara con cada carácter del texto hasta que se encuentran caracteres no coincidentes.

Trabajo del algoritmo de Rabin-Karp

  1. Calcular el valor de hash del patrón
  2. Calcular el valor hash de los primeros M caracteres del texto
  3. Compara ambos valores hash
  4. Si son desiguales, calcule el valor de hash para los siguientes M caracteres del texto y compare nuevamente.
  5. Si son iguales, realice una comparación de fuerza bruta.
hash_p = hash value of pattern 
 hash_t = hash value of first M letters in body of text 
 do 
    if (hash_p == hash_t) 
        brute force comparison of pattern and selected section of text 
    hash_t= hash value of next section of text, one character over 
 while (end of text or brute force comparison == true) 

Ventaja sobre el algoritmo de emparejamiento de cadenas ingenuas

Esta técnica produce solo una comparación por secuencia de texto y la fuerza bruta solo se requiere cuando los valores de hash coinciden.

Aplicaciones

  • Detección de plagio

Más información:

Rabin-Karp en Wikipedia