es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Algoritmo Rabin Karp – Hash Negativo

Tengo esta implementación de Rabin-Karp. Ahora, lo único que estoy haciendo para el hash rodante es restar power*source[i] del sourceHash. power es 31^tamaño de target-1 % mod.
Pero no entiendo por qué estamos sumando mod al sourceHash cuando se vuelve negativo. He intentado sumar otros valores, pero no funciona y solo funciona cuando sumamos mod. ¿Por qué es esto? ¿Hay alguna razón específica por la cual estamos sumando mod y no cualquier otra cosa (como un número grande al azar, por ejemplo)?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual estamos agregando mod a sourceHash cuando se vuelve negativo es para asegurarnos de que el valor del hash siga siendo positivo y esté dentro del rango de la operación de módulo.

    La operación de módulo en la programación de computadoras devuelve el residuo al dividir dos números. Si el resultado del cálculo del hash se vuelve negativo, agregar mod asegura que el resultado sea positivo, lo cual es necesario para que la operación de módulo funcione correctamente.

    Agregar un número grande al azar en lugar de mod podría causar que el valor del hash esté fuera del rango de la operación de módulo, lo que llevaría a resultados incorrectos. mod es un valor fijo y se elige como un número primo cercano al tamaño del alfabeto que se está utilizando (128 en esta implementación).

    En resumen, agregar mod asegura que el valor del hash siga siendo positivo y esté dentro del rango de la operación de módulo, lo cual es necesario para una correcta coincidencia de cadenas Rabin-Karp.

Comments are closed.