Algorithme de Berlekamp

Un article de Wikipédia, l'encyclopédie libre.

L'algorithme de Berlekamp est une méthode de factorisation des polynômes à coefficients dans un corps fini, qui repose sur des calculs de PGCD de polynômes et des opérations matricielles. Il a été découvert par Elwyn Berlekamp en 1967, et est resté l'algorithme le plus performant concernant ce problème jusqu'en 1981, et la découverte de l'algorithme de Cantor-Zassenhaus.

[modifier] Description

L'algorithme exige de travailler sur un polynôme f(x) sans facteur carré. On note n son degré, et q le nombre d'éléments du corps fini \mathbb{F}_q sur lequel on se place. Le point central est la recherche et l'utilisation de polynômes g(x) tels que :

g(x)^q-g(x)\equiv 0 \mod\;f(x)

Ces polynômes forment une sous-algèbre, dite algèbre de Berlekamp de l'espace quotient \mathbb{F}_q[x]/(f(x)). En particulier, les images des polynômes constants seront des éléments de l'algèbre de Berlekamp ; on parlera d'élément trivial. Si un élément non trivial de l'algèbre de Berlekamp a été déterminé, provenant d'un polynôme g, on peut alors former le produit \prod_{s \in \mathbb{F}_q} pgcd(f(x),g(x)-s), qui vaut f(x) ; dès que le degré de g est plus petit que n, un des facteurs du produit est non trivial.


On a ainsi décomposé le polynôme f en produit de facteurs, dont l'un est non trivial : on a factorisé f. Pour obtenir une factorisation en produit de polynômes irréductibles, il suffit d'appliquer cette méthode récursivement.

Pour trouver des polynômes g non triviaux dans l'algèbre de Berlekamp, on part du constat que la puissance q-ème d'un polynôme g(x)=g0+g1x+...+gn-1xn-1, à coefficients dans \mathbb{F}_q, s'écrit g(x)q=g0+g1xq+...+gn-1xq(n-1). En notant ainsi la réduction modulo f des monômes xjq :

x^{jq}=\sum_{i=0}^{n-1}\alpha_{ij}x^i\mod\;f(x),

on obtient alors :

g(x)^q=\sum_{i=0}^{n-1}(\sum_j\alpha_{ji}g_j)x^i.

Les monômes xi, pour i allant de 0 jusqu'à n-1, forment une \mathbb{F}_q-base de l'espace vectoriel \mathbb{F}_q[x]/(f(x)), on obtient donc par identification des coefficients, que g est un élément de l'algèbre de Berlekamp si et seulement si l'identité matricielle suivante est vérifiée :

\begin{pmatrix}g_0\\\vdots\\g_{n-1}\end{pmatrix}=\begin{pmatrix}\alpha_{0,0} & \dots&\alpha_{0,n-1}\\\vdots& &\vdots\\\alpha_{n-1,0}&\dots&\alpha_{n-1,n-1}\end{pmatrix}\begin{pmatrix}g_0\\\vdots\\g_{n-1}\end{pmatrix}.

L'algorithme consiste donc à calculer la matrice des αi,j, à tenter, par la méthode du pivot de Gauss, de trouver un vecteur dans le noyau de cette matrice à laquelle a été soustraite la matrice identité ; si on en trouve un, on peut factoriser f par des calculs de pgcd, via l'algorithme d'Euclide. Enfin, on montre que s'il n'existe pas d'élément non trivial dans l'algèbre de Berlekamp, alors le polynôme f est irréductible.


[modifier] Références

Michel Demazure, Cours d'algèbre. Primalité Divisibilité. Codes [détail des éditions]

Autres langues