Séminaire de Cryptographie

Accueil     Présentation     Archives

Nicolas Estibal


Un algorithme pour trouver toutes les formules calculant une application bilinéaire.

La multiplication est une opération arithmétique coûteuse comparativement à l'addition. Aussi il est intéressant, étant donné une application, de minimiser le nombre de produits à effectuer pour la calculer. Dans cette étude, nous nous restreignons au cas des applications bilinéaires.

En effet, parmi les applications bilinéaires, nous étions intéressés en premier lieu par la multiplication polynomiale. Ce problème ancien a déjà été très étudié. La première découverte fut celle de Karatsuba (1962) qui montra que l'on peut effectuer le produit de deux polynômes de degré~$2$ en n'utilisant que $3$ produits au lieu de $4$ avec l'algorithme quadratique. Puis Toom \& Cook (1963) montrèrent que $5$ multiplications suffisent à calculer le produit de polynômes de degré~$3$. En généralisant le problème aux polynômes de degré~$n$ fixé, on définit alors $M(n)$ le nombre minimal de produits à effectuer pour une telle multiplication. Le calcul de $M(n)$ est difficile et on ne dispose bien souvent que de bornes supérieures, de formules sans preuve de leur optimalité. En 2005, Montgomery effectua une recherche exhaustive de formules pour la multiplication de polynômes de degré~$5$ et trouva de nouvelles formules pour le degré~$6$ et ~$7$.

Nous avons alors cherché à généraliser son approche et réduire son coût grâce à une formalisation en terme d'espace vectoriel. Nous présentons ainsi un algorithme permettant d'énumérer toutes les formules contenant exactement $k$ produits calculant une application bilinéaire. Cet algorithme permet de calculer le nombre minimal de produits à calculer pour certaines applications bilinéaires.

Enfin, notre algorithme ne se restreignant pas au produit de polynômes, nous avons pu appliquer cet algorithme à d'autres problèmes tels que~: le produit court, la multiplication dans une extension de corps ou encore de matrices.