The following contains a very fast and elegant Java implementation of Rabin's Fingerprint https://github.com/themadcreator/rabinfingerprint
However, the largest polynomial that may be used in the optimized implementation is 54 bit.
I want to reduce the probability of error.
Rabin [1] suggests two ways to lower the probability of error: • The probability of a wrong output will be lowered by increasing the value of k. This will require a larger word-length. • The probability can also be lowered by using two different irreducible polynomials P1(t) and P2(t) of the same degree k. The algorithm is then run twice by interleaving steps, one time with P1(t) and another time with P2(t). Since the error probabilities are independent .... (from CMPUT690 Term Project)
If I run the algorithm twice, how do I combine the 2 fingerprints without undermining my objective to reduce the probability of error?
- simply add or multiple the 2 fingerprints?
- use the output of the first run as the base fingerprint of the second run?
It is not clear to me what "interleaving steps are". I need to save the fingerprint as a 64 bit long number.
Thanks.