Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Cantor–Zassenhaus algorithm

From Wikipedia, the free encyclopedia
icon
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed.
Find sources: "Cantor–Zassenhaus algorithm" – news ·newspapers ·books ·scholar ·JSTOR
(November 2025) (Learn how and when to remove this message)
Algorithm for factoring polynomials over finite fields
Not to be confused withZassenhaus algorithm.

Incomputationalalgebra, theCantor–Zassenhaus algorithm is a method for factoringpolynomials overfinite fields (also called Galois fields).

The algorithm consists mainly of exponentiation and polynomialGCD computations. It was invented byDavid G. Cantor andHans Zassenhaus in 1981.[1]

It is arguably the dominant algorithm for solving the problem, having replaced the earlierBerlekamp's algorithm of 1967.[2][3] It is currently implemented in manycomputer algebra systems likePARI/GP.

Overview

[edit]

Background

[edit]

The Cantor–Zassenhaus algorithm takes as input asquare-free polynomialf(x){\displaystyle f(x)} (i.e. one with no repeated factors) of degreen with coefficients in a finite fieldFq{\displaystyle \mathbb {F} _{q}} whoseirreducible polynomial factors are all of equal degree (algorithms exist for efficiently factoring arbitrary polynomials into a product of polynomials satisfying these conditions, for instance,f(x)/gcd(f(x),f(x)){\displaystyle f(x)/\gcd(f(x),f'(x))} is a squarefree polynomial with the same factors asf(x){\displaystyle f(x)}, so that the Cantor–Zassenhaus algorithm can be used to factor arbitrary polynomials). It gives as output a polynomialg(x){\displaystyle g(x)} with coefficients in the same field such thatg(x){\displaystyle g(x)} dividesf(x){\displaystyle f(x)}. The algorithm may then be applied recursively to these and subsequent divisors, until we find the decomposition off(x){\displaystyle f(x)} into powers of irreducible polynomials (recalling that thering of polynomials over any field is aunique factorisation domain).

All possible factors off(x){\displaystyle f(x)} are contained within thefactor ringR=Fq[x]f(x){\displaystyle R={\frac {\mathbb {F} _{q}[x]}{\langle f(x)\rangle }}}. If we suppose thatf(x){\displaystyle f(x)} has irreducible factorsp1(x),p2(x),,ps(x){\displaystyle p_{1}(x),p_{2}(x),\ldots ,p_{s}(x)}, all of degreed, then this factor ring is isomorphic to thedirect product of factor ringsS=i=1sFq[x]pi(x){\displaystyle S=\prod _{i=1}^{s}{\frac {\mathbb {F} _{q}[x]}{\langle p_{i}(x)\rangle }}}. The isomorphism fromR toS, sayϕ{\displaystyle \phi }, maps a polynomialg(x)R{\displaystyle g(x)\in R} to thes-tuple of its reductions modulo each of thepi(x){\displaystyle p_{i}(x)}, i.e. if:

g(x)g1(x)(modp1(x)),g(x)g2(x)(modp2(x)),  g(x)gs(x)(modps(x)),{\displaystyle {\begin{aligned}g(x)&{}\equiv g_{1}(x){\pmod {p_{1}(x)}},\\g(x)&{}\equiv g_{2}(x){\pmod {p_{2}(x)}},\\&{}\ \ \vdots \\g(x)&{}\equiv g_{s}(x){\pmod {p_{s}(x)}},\end{aligned}}}

thenϕ(g(x)+f(x))=(g1(x)+p1(x),,gs(x)+ps(x)){\displaystyle \phi (g(x)+\langle f(x)\rangle )=(g_{1}(x)+\langle p_{1}(x)\rangle ,\ldots ,g_{s}(x)+\langle p_{s}(x)\rangle )}. It is important to note the following at this point, as it shall be of critical importance later in the algorithm: Since thepi(x){\displaystyle p_{i}(x)} are each irreducible, each of the factor rings in this direct sum is in fact a field. These fields each have degreeqd{\displaystyle q^{d}}.

Core result

[edit]

The core result underlying the Cantor–Zassenhaus algorithm is the following: Ifa(x)R{\displaystyle a(x)\in R} is a polynomial satisfying:

a(x)0,±1{\displaystyle a(x)\neq 0,\pm 1}
ai(x){0,1,1} for i=1,2,,s,{\displaystyle a_{i}(x)\in \{0,-1,1\}{\text{ for }}i=1,2,\ldots ,s,}

whereai(x){\displaystyle a_{i}(x)} is the reduction ofa(x){\displaystyle a(x)} modulopi(x){\displaystyle p_{i}(x)} as before, and if any two of the following three sets is non-empty:

A={iai(x)=0},{\displaystyle A=\{i\mid a_{i}(x)=0\},}
B={iai(x)=1},{\displaystyle B=\{i\mid a_{i}(x)=-1\},}
C={iai(x)=1},{\displaystyle C=\{i\mid a_{i}(x)=1\},}

then there exist the following non-trivial factors off(x){\displaystyle f(x)}:

gcd(f(x),a(x))=iApi(x),{\displaystyle \gcd(f(x),a(x))=\prod _{i\in A}p_{i}(x),}
gcd(f(x),a(x)+1)=iBpi(x),{\displaystyle \gcd(f(x),a(x)+1)=\prod _{i\in B}p_{i}(x),}
gcd(f(x),a(x)1)=iCpi(x).{\displaystyle \gcd(f(x),a(x)-1)=\prod _{i\in C}p_{i}(x).}

Algorithm

[edit]

The Cantor–Zassenhaus algorithm computes polynomials of the same type asa(x){\displaystyle a(x)} above using the isomorphism discussed in the Background section. It proceeds as follows, in the case where the fieldFq{\displaystyle \mathbb {F} _{q}} is of odd-characteristic (the process can be generalised to characteristic 2 fields in a fairly straightforward way.[4] Select a random polynomialb(x)R{\displaystyle b(x)\in R} such thatb(x)0,±1{\displaystyle b(x)\neq 0,\pm 1}. Setm=(qd1)/2{\displaystyle m=(q^{d}-1)/2} and computeb(x)m{\displaystyle b(x)^{m}}. Sinceϕ{\displaystyle \phi } is an isomorphism, we have (using our now-established notation):

ϕ(b(x)m)=(b1m(x)+p1(x),,bsm(x)+ps(x)).{\displaystyle \phi (b(x)^{m})=(b_{1}^{m}(x)+\langle p_{1}(x)\rangle ,\ldots ,b_{s}^{m}(x)+\langle p_{s}(x)\rangle ).}

Now, eachbi(x)+pi(x){\displaystyle b_{i}(x)+\langle p_{i}(x)\rangle } is an element of a field of orderqd{\displaystyle q^{d}}, as noted earlier. The multiplicative subgroup of this field has orderqd1{\displaystyle q^{d}-1} and so, unlessbi(x)=0{\displaystyle b_{i}(x)=0}, we havebi(x)qd1=1{\displaystyle b_{i}(x)^{q^{d}-1}=1} for eachi and hencebi(x)m=±1{\displaystyle b_{i}(x)^{m}=\pm 1} for eachi. Ifbi(x)=0{\displaystyle b_{i}(x)=0}, then of coursebi(x)m=0{\displaystyle b_{i}(x)^{m}=0}. Henceb(x)m{\displaystyle b(x)^{m}} is a polynomial of the same type asa(x){\displaystyle a(x)} above. Further, sinceb(x)0,±1{\displaystyle b(x)\neq 0,\pm 1}, at least two of the setsA,B{\displaystyle A,B} andC are non-empty and by computing the above GCDs we may obtain non-trivial factors. Since the ring of polynomials over a field is aEuclidean domain, we may compute these GCDs using theEuclidean algorithm.

Applications

[edit]

One important application of the Cantor–Zassenhaus algorithm is in computingdiscrete logarithms over finite fields of prime-power order. Computing discrete logarithms is an important problem inpublic key cryptography. For a field of prime-power order, the fastest known method is theindex 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.

Implementation in computer algebra systems

[edit]

The Cantor–Zassenhaus algorithm is implemented in the PARI/GP computer algebra system as thefactormod() function (formerlyfactorcantor()).

See also

[edit]

References

[edit]
  1. ^Cantor, David G.;Zassenhaus, Hans (April 1981), "A new algorithm for factoring polynomials over finite fields",Mathematics of Computation,36 (154):587–592,doi:10.1090/S0025-5718-1981-0606517-5,JSTOR 2007663,MR 0606517
  2. ^Grenet, B.;van der Hoeven, Joris; Lecerf, G. (2016), "Deterministic root finding over finite fields using Graeffe transforms",Applicable Algebra in Engineering, Communication and Computing,27:237–257
  3. ^van der Hoeven, Joris; Monagan, Michael (2021), "Computing one billion roots using the tangent Graeffe method",ACM Communications in Computer Algebra,54 (3):65–85
  4. ^Elia, Michele; Schipani, Davide (2015), "Improvements on the Cantor–Zassenhaus factorization algorithm",Mathematica Bohemica,140 (3), Institute of Mathematics, Czech Academy of Sciences:271–290,arXiv:1012.5322,doi:10.21136/mb.2015.144395

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Cantor–Zassenhaus_algorithm&oldid=1324148443"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2025 Movatter.jp