Université Bordeaux 1 N1MA5031 – Licence 3
Mathématiques Année 2011–2012
FEUILLE D’EXERCICES no8
Exercice 1 – (Toom-Cook) – On se penche ici sur une généralisation du principe mis en œuvre dans l’algorithme de Karatsuba. L’idée de Karatsuba est de ramener le calcul d’un produit de deux polyômes de degrés < n = 2N à celui de 3 produits de polyômes de degrés < N. Mais si au lieu de couper en 2 on coupait en 3, voire en k, qu’obtiendrait-on ? On s’intéressera ici au cas d’une double césure.
1) Soit K un corps commutatif que nous supposerons de caractéristique nulle pour simplifier. Nous désirons multiplier deux polynômesP etQ∈K[X]de degrés< n= 3N où N >0. Décomposons les sous la forme
P = P2X2N +P1XN+P0 Q = Q2X2N+Q1XN+Q0
où les Pi et lesQi sont des polynômes de degrés < N. Soit Π le produit deP etQ et posons
Π0 = P0Q0
Π1 = (P2+P1+P0)(Q2+Q1+Q0) Π−1 = P2−P1+P0
Q2−Q1+Q0
Π2 = 4P2+ 2P1+P0
4Q2+ 2Q1+Q0
Π∞ = P2Q2
Montrer quil existe 5 polynômes de degrés <2N −1 notésRi (06i64) vérifiant
Π =
4
P
i=0
RiXiN Πα =
4
P
i=0
Riαi siα ∈ {0,1,−1,2}
Π∞ = R4
2)Exprimer les Ri (06i64) en fonction desΠα (α∈ {0,1,−1,2,∞}).
3)En déduire que le calcul deΠ peut se ramener à celui de 5 produits de 2 polynômes de degrés < N.
4) Soit n > 0 quelconque. En s’inspirant de l’algorithme de Karatsuba, écrire l’algo- rithme permettant de calculer le produit de 2 polynômes de degré< nà partir de l’idée précédente. En estimer la complexité algébrique (on se contentera d’étudier le nombre de multiplications dans K en fonction den) et comparer à Karatsuba.
Exercice 2 – (FFT) – Nous considérons ici des polynômes de K[X] où K est un corps commutatif. Soit n une puissance de 2 différente de 1 : n = 2k avec k > 0.
Soit ω ∈ K une racine primitive n-ième de l’unité (on a ωn = 1 et ωd 6= 1 pour tout 1 6 d < n). On admettra que le corps considéré possède une telle racine (ce sera par exemple le cas de C pour tout n). On appelle transformée de Fourier discrète d’un polynômeR∈K[X]de degré< n, identifié au n-uplet(R0, . . . , Rn−1) len-uplet
DF Tω(R) = (R(1), R(ω), . . . , R(ωn−1)).
Ainsi a-t-on également
DF Tω−1(R) = (R(1), R(ω−1), . . . , R(ω−n+1)).
1)Montrer que pour toutR ∈K[X]de degré < n, on a
DF Tω−1(DF Tω(R)) =DF Tω(DF Tω−1(R)) =nR.
2)On pose m=n/2 = 2k−1. Montrer que pour 06p < m, on a R(ωp) =
m−1
X
j=0
R2jαjp+ωp
m−1
X
j=0
R2j+1αjp
et
R(ωp+m) =
m−1
X
j=0
R2jαjp−ωp
m−1
X
j=0
R2j+1αjp,
où α est une racine primitivem-ième de l’unité.
3)En déduire un algorithme récursif de calcul de laDF T en remarquant que les formules précédentes permettent de ramener le calcul d’uneDF T de degré < nà deux DF T de degrés < m.
4)Évaluer la complexité algébrique de l’algorithme (ditF F T) ainsi obtenu et comparer à celle d’un calcul plus naïf.
5) Soient P etQ deux polynômes deK[X]de degrés < n, que l’on identifiera encore auxn-uplets (P0, . . . , Pn−1) et(Q0, . . . , Qn−1). On appelle produit de convolutionde P etQ le polynômeR=P ∗Q de degré< ndéfini par
Ri=
n−1
X
j=0
PjQi−jmodn pour touti∈ {0, . . . , n−1}.
Montrer que
P ∗Q≡P Q mod (Xn−1).
6)Montrer que l’on a
DF Tω(P ∗Q) =DF Tω(P)·DF Tω(Q), où (ui)06i<n·(ui)06i<n= (uivi)06i<n.
7)On suppose en outre que deg(P Q)< n. Montrer que P∗Q=P Q et en déduire un algorithme de calcul du produitP Qutilisant la F F T.
8) Évaluer la complexité algébrique de cet algorithme et comparer à celles des algo- rithmes déjà rencontrés (naïf, Karatsuba, Toom-Cook).