Berlekamp–Rabin algorithm

In number theory, Berlekamp's root finding algorithm, also called the Berlekamp–Rabin algorithm, is the probabilistic method of finding roots of polynomials over the field

The method was discovered by Elwyn Berlekamp in 1970[1] as an auxiliary to the algorithm for polynomial factorization over finite fields.

The algorithm was later modified by Rabin for arbitrary finite fields in 1979.

[2] The method was also independently discovered before Berlekamp by other researchers.

[3] The method was proposed by Elwyn Berlekamp in his 1970 work[1] on polynomial factorization over finite fields.

His original work lacked a formal correctness proof[2] and was later refined and modified for arbitrary finite fields by Michael Rabin.

[2] In 1986 René Peralta proposed a similar algorithm[4] for finding square roots in

[5] In 2000 Peralta's method was generalized for cubic equations.

be an odd prime number.

Finding all roots of this polynomial is equivalent to finding its factorization into linear factors.

To find such factorization it is sufficient to split the polynomial into any two non-trivial divisors and factorize them recursively.

then in terms of the initial polynomial it means that

[1][7] Due to Euler's criterion, for every monomial

is equal to the product of greatest common divisors

[7] The property above leads to the following algorithm:[1] If

is divisible by some non-linear primitive polynomial

, thus algorithm allows to find all roots of arbitrary polynomials over

Solution of this equation is equivalent to factorization of polynomial

In this particular case problem it is sufficient to calculate only

For this polynomial exactly one of the following properties will hold: In the third case GCD is equal to either

[1] Assume we need to solve the equation

: A manual check shows that, indeed,

are quadratic residues or non-residues simultaneously.

According to theory of cyclotomy,[8] the probability of such an event for the case when

are all residues or non-residues simultaneously (that is, when

and for modular square root case error probability is at most

We derive the algorithm's complexity as follows: Thus the whole procedure may be done in

Using the fast Fourier transform and Half-GCD algorithm,[9] the algorithm's complexity may be improved to

For the modular square root case, the degree is

, thus the whole complexity of algorithm in such case is bounded by

Elwyn R. Berlekamp at conference on Combinatorial Game Theory at Banff International Research Station Elwyn Berlekamp