Content deleted Content added
Luke Maurits (talk | contribs) m Fixed categorisation. Did not realise Wikipedia was so case-sensitive! |
Jitse Niesen (talk | contribs) m copyedit |
||
Line 1:
{{dablink|This article discusses an algorithm for factorisation of polynomials over finite fields. For the algorithm dealing with LFSRs see [[Berlekamp-Massey algorithm]].}}
In [[mathematics]], particularly [[computer algebra|computational algebra]], Berlekamp's algorithm is a well
==Overview==
Berlekamp's algorithm takes as input a
All possible factors of <math>f(x)</math> are contained within the [[factor ring]]
:<math>R = \frac{\mathbb{F}_q[x]}{\langle f(x) \rangle}.</math>
The algorithm focuses on polynomials <math>g(x) \in R</math> which satisfy the congruence:
:<math>g(x)^q \equiv g(x) \pmod{f(x)}</math>.
These polynomials form a subalgebra of R (which can be considered as an <math>n</math>
:<math>f(x) = \prod_{s \in \mathbb{F}_q} \gcd(f(x),g(x)-s).</math>
In general, not every GCD in the above product will be a non-trivial factor of <math>f(x)</math>, but some are
Berlekamp's algorithm finds polynomials <math>g(x)</math> suitable for use with the above result by computing a basis for the Berlekamp subalgebra. This is achieved via the observation that Berlekamp subalgebra is
:<math>x^{iq} \equiv q_{i,n}x^n + q_{i,n-1}x^{n-1} + \ldots + q_{i,0} \pmod{f(x)} </math>.
:<math>g(x) = g_nx^n+g_{n-1}x^{n-1} + \ldots + g_0, </math>
we may associate the row vector:
:<math>g = (g_0, g_1, \ldots, g_n). </math>
It is relatively straightforward to see that the row vector <math>g\mathcal{Q}</math> corresponds, in the same way, to the reduction of <math>g(x)^q</math> modulo <math>f(x)</math>. Consequently a polynomial <math>g(x) \in R</math> is in the Berlekamp subalgebra if and only if <math>g(\mathcal{Q}-I)=0</math> (where <math>I</math> is the <math>n \times n</math> [[identity matrix]], i.e. if and only if it is in the null space of <math>\mathcal{Q}-I</math>.
By computing the matrix <math>\mathcal{Q}-I</math> and reducing it to [[reduced row echelon form]] and then easily reading off a basis for the null space, we may find a basis for the Berlekamp subalgebra and hence construct polynomials <math>g(x)</math> in it. We then need to successively compute GCDs of the form above until we find a non-trivial factor. Since the ring of polynomials over a field is a [[Euclidean ___domain]], we may compute these GCDs using the [[Euclidean algorithm]].
==Applications==
Line 40:
==See Also==
*[[Polynomial factorization|Polynomial factorisation]]
*[[Cantor-Zassenhaus
==References==
|