Stage de L3
Complexité de la multiplication de polynômes creux
Lieu : Université de Montpellier, Laboratoire LIRMM
Équipe d’accueil : équipe ECO (http://www.lirmm.fr/eco/)
L’algorithmique des polynômes est au cœur des systèmes de calcul formel (comme
SageMath ou Maple). Elle a aussi de nombreuses applications, de la cryptographie à
l’algorithmique des graphes.
Informatiquement, les deux manières les plus fréquentes de représenter un poly-
nôme est soit de stocker la liste de ses coefficients (représentation dense), soit de sto-
cker la liste de ses monômes non nuls (représentation creuse). L’algorithmique des po-
lynômes en représentation dense est extrêmement bien comprise aujourd’hui, et on
sait par exemple calculer le produit de deux polynômes denses en complexité quasi-
linéaire. La situation est très différente pour la représentation creuse. En particulier, on
ne connaît pas d’algorithme de complexité optimale pour la multiplication de deux po-
lynômes creux. L’objet de ce stage est de comprendre l’approche la plus efficace pour
ce calcul, et d’en proposer des améliorations.
Par exemple, on souhaite calculer le produit de f=20x4913 +63x3631 +16x2520 +
26x1238 par g=60x4316 −48x1923 +78x641. L’algorithme naïf consiste à effectuer tous les
produits « monôme-monôme ». Ici, on effectue donc 12 tels produits. Dans le pire cas, on
ne peut pas mieux faire car ce nombre de produits correspond au nombre de monômes
du résultat. Cependant, il y a parfois des collisions, ce qui diminue le nombre final de
monômes : ici les produits x3631 ×x1923 et x1238 ×x4316 donnent le même monôme x5554.
De plus, il peut également y avoir des annulations qui diminuent encore la taille du
résultat : ici, 26x1238 ×(−48x1923) + 16x2520 ×78x641 =0. Ainsi, le résultat final est f×
g=1200x9229 +3780x7947 +96x5554 −768x4443 +4914x4272 +2028x1879 qui a 6 monômes
et non 12.
L’objectif d’un algorithme optimal de multiplication de polynômes creux est de
réussir à détecter les collisions et les annulations en amont, pour que la complexité totale
de l’algorithme soit linéaire en le nombre de monômes du résultat. Arnold et Roche 1
ont montré comment détecter les collisions. Leur algorithme est linéaire en le nombre
de monômes du résultat s’il n’y avait pas d’annulations (mais uniquement des collisions).
Le stagiaire devra en premier lieu comprendre l’approche d’Arnold et Roche, par
exemple en proposant une implantation de leur algorithme pour observer son com-
portement en pratique. On cherchera ensuite à trouver une méthode pour détecter les
annulations, et non plus seulement les collisions, en amont du calcul.
1. A. ARNOLD et D. S. ROCHE. « Output-Sensitive Algorithms for Sumset and Sparse Polynomial Mul-
tiplication ». Dans : Proc. ISSAC. ACM, 2015, p. 29–36. DOI :10.1145/2755996.2756653.
1