Algorithme de Berlekamp - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

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.

Description

L'algorithme exige de travailler sur un polynôme f(x)\, sans facteur carré, c'est-à-dire que les exposants des facteurs dans la décomposition en irréductibles de f\, valent tous 1. 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)=g_0+g_1 x+...+g_{n-1}x^{n-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 x^i\, , pour i =0,\ldots,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.

Page générée en 0.133 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise