In computational algebra, the Cantor–Zassenhaus algorithm is a method for factoring polynomials over finite fields (also called Galois fields).
The algorithm consists mainly of exponentiation and polynomial GCD computations. It was invented by David G. Cantor and Hans Zassenhaus in 1981.
It is arguably the dominant algorithm for solving the problem, having replaced the earlier Berlekamp's algorithm of 1967. It is currently implemented in many computer algebra systems.
f(x)
Fq
f(x)/\gcd(f(x),f'(x))
f(x)
g(x)
g(x)
f(x)
f(x)
All possible factors of
f(x)
R=
Fq[x] | |
\langlef(x)\rangle |
f(x)
p1(x),p2(x),\ldots,ps(x)
S=
s | |
\prod | |
i=1 |
Fq[x] | |
\langlepi(x)\rangle |
\phi
g(x)\inR
pi(x)
\begin{align} g(x)&{}\equivg1(x)\pmod{p1(x)},\\ g(x)&{}\equivg2(x)\pmod{p2(x)},\\ &{} \vdots\\ g(x)&{}\equivgs(x)\pmod{ps(x)}, \end{align}
then
\phi(g(x)+\langlef(x)\rangle)=(g1(x)+\langlep1(x)\rangle,\ldots,gs(x)+\langleps(x)\rangle)
pi(x)
qd
The core result underlying the Cantor–Zassenhaus algorithm is the following: If
a(x)\inR
a(x) ≠ 0,\pm1
ai(x)\in\{0,-1,1\}fori=1,2,\ldots,s,
where
ai(x)
a(x)
pi(x)
A=\{i\midai(x)=0\},
B=\{i\midai(x)=-1\},
C=\{i\midai(x)=1\},
then there exist the following non-trivial factors of
f(x)
\gcd(f(x),a(x))=\prodipi(x),
\gcd(f(x),a(x)+1)=\prodipi(x),
\gcd(f(x),a(x)-1)=\prodipi(x).
The Cantor–Zassenhaus algorithm computes polynomials of the same type as
a(x)
Fq
b(x)\inR
b(x) ≠ 0,\pm1
m=(qd-1)/2
b(x)m
\phi
\phi(b(x)m)=
m(x) | |
(b | |
1 |
+\langlep1(x)\rangle,\ldots,
m | |
b | |
s(x) |
+\langleps(x)\rangle).
Now, each
bi(x)+\langlepi(x)\rangle
qd
qd-1
bi(x)=0
qd-1 | |
b | |
i(x) |
=1
m | |
b | |
i(x) |
=\pm1
bi(x)=0
m=0 | |
b | |
i(x) |
b(x)m
a(x)
b(x) ≠ 0,\pm1
A,B
One important application of the Cantor–Zassenhaus algorithm is in computing discrete logarithms over finite fields of prime-power order. Computing discrete logarithms is an important problem in public key cryptography. For a field of prime-power order, the fastest known method is the index calculus method, which involves the factorisation of field elements. If we represent the prime-power order field in the usual way – that is, as polynomials over the prime order base field, reduced modulo an irreducible polynomial of appropriate degree – then this is simply polynomial factorisation, as provided by the Cantor–Zassenhaus algorithm.
The Cantor–Zassenhaus algorithm is implemented in the PARI/GP computer algebra system as the factorcantor function.