Licence de mathématiques et informatique - 2010-2011
Algorithmique algébrique
FEUILLE D’EXERCICES N◦ 8
====================
1 Évaluation par adaptation des coefficients.
Soit K un corps commutatif. Soit P un polynôme de K[X] unitaire de degré 4: P =X4+a3X3+a2X2+a1X+a0.
On veut évaluer P en k éléments distincts de K.
1. Calculer le coût d’un tel calcul, si l’on utilise k fois l’algorithme de Horner. On détaillera le nombre d’additions et de multiplications.
2. Soit x ∈K. Déterminer quatre éléments αi ∈ K, 0 ≤i ≤ 3, ne dépendant que de P, tels que si y= (x+α0)x+α1 alors P(x) = (y+x+α2)y+α3.
3. Calculer le coût de cette nouvelle procédure appliquée à l’évaluation deP enk éléments de K.
Comparer avec le résultat du 1.
2 Toom-Cook (Algorithme de Andrei Toom et Stephen Cook).
1. Soit R un polynôme de degré inférieur ou égal à 4. Combien de valeurs de R faut-il connaître pour être capable de reconstituer R?
2. On note R=a4X4+a3X3+a2X2+a1X+a0, et R(∞) =a4. (a) Montrer l’égalité
1 0 0 0 0
0 0 0 0 1
1 1 1 1 1
1 −1 1 −1 1 16 8 4 2 1
a4 a3 a2 a1 a0
=
R(∞)
R(0) R(1) R(−1)
R(2)
.
(b) En déduire l’égalité
a4 a3
a2 a1 a0
=
1 0 0 0 0
−2 12 −12 −16 16
−1 −1 12 12 0 2 −12 1 −13 −16
0 1 0 0 0
R(∞)
R(0) R(1) R(−1)
R(2)
.
(c) Soient P = 3X2 +X −1, Q = X2 −2X+ 1 et R = P Q. Calculer R(∞), R(0), R(1), R(−1) etR(2), puis reconstituer R en utilisant la question précédente.
3. Il aurait été plus simple de calculer R en multipliant P et Q de façon classique, mais un traitement récursif de cette méthode donne un algorithme plus efficace quand les degrés de P et de Q sont grands.
On suppose que P et Q sont des polynômes de C[X]de degrés strictement inférieur à n= 3r. On note
P =
n−1
X
i=0
aiXi etQ=
n−1
X
i=0
biXi. Expliquer ce que fait l’algorithme Toom-Cook suivant.
Dans cet algorithme, on note Interp(z1, . . . , z5, Y)le polynôme R en la variable Y de degré in- férieur ou égal à4dont les valeurs eny1 =∞,y2 = 0,y3 = 1,y4 =−1ety5 = 2sont(z1, . . . , z5).
Toom-Cook(P, Q, n) :
(a) Sin = 1, retourner P Q.
(b) Écrire P etQ sous la forme
P = (Xn/3)2P2+Xn/3P1+P0 et Q= (Xn/3)2Q2+ (Xn/3)2Q1+Q0, où les Pi et les Qj sont des polynômes de degrés inférieurs strictement à n/3.
(c) Soient les polynômes de C[X][Y]
A=Y2P2 +Y P1+P0 et B =Y2Q2+Y Q1+Q0.
(d) Pour i de1 à 5, faire zi =Toom-Cook(A(yi), B(yi), n/3) (les zi sont alors des polynômes enX).
(e) P roduit=Interp(z1, z2, z3, z4, z5, Y).
(f) Retourner R =P roduit(Xn/3) 4. Expliquer comment se fait le pas (b).
5. Y a-t-il un lien entre cet algorithme et l’algorithme de Karatsuba ? 6. Quelle est la complexité de l’algorithme Toom-Cook ?
3 FFT (Fast Fourier Transformation).
Pour multiplier des polynômes, dans l’algorithme Toom-Cook, on a utilisé des évaluations et interpolations de polynômes en certains points. On peut choisir les points d’évaluation de façon plus astucieuse. Ici, on prendra des racines primitives nèmes de l’unité, où n est une puissance de 2.
1. Soitn un entier naturel non nul, et soit w une racine primitive nème de l’unité dans C (c’est- à-dire : wn = 1 et wl 6= 1 pour tout l tel que 0 < l < n, par exemple : w = e2iπn ). On définit
Fn,w : Cn → Cn (al)0≤l≤n−1 7→
n−1
X
k=0
akwkl
!
0≤l≤n−1
(a) Montrer que Fn,w◦ Fn,w−1 =nId Cn.
(b) Soit P = an−1Xn−1 +· · ·+a0 un polynôme de degré strictement inférieur à n. Montrer que
Fn,w(a0, . . . , an−1) = (P(1), P(w), . . . , P(wn−1)).
(c) On suppose quenest pair. On poseP1 =an−2Xn/2−1+· · ·+a2X+a0 etP2 =an−1Xn/2−1+
· · ·+a3X+a1 (c’est-à-dire qu’on sépare les parties paire et impaire de P. Montrer que P(X) =P1(X2) +XP2(X2).
2. On suppose maintenant quen = 2k, où k est un entier naturel. On veut pouvoir calculer F de façon rapide.
Soit A = (a0, . . . , an−1)∈Cn. Expliquer ce que fait l’algorithme F F T suivant.
FFT(n, w, A) :
(a) Sin = 1, retourner A.
(b) Séparer les parties paires et impaires deA:A0 = (a0, a2, . . . , an−2),A1 = (a1, a3, . . . , an−1).
(c) Calculer(b0, b1, . . . , bn/2−1) =FFT(n/2, w2, A0) et(c0, c1, . . . , cn/2−1) =FFT(n/2, w2, A1).
(d) Retourner(bk+wkck)0≤k<n(où l’on a posébn/2+l =bletcn/2+l =cl) pourl ∈ {0, . . . , n/2−
1}.
3. Calculer la complexité de cet algorithme.
4. En utilisant FFT, donner un algorithme de multiplication rapide de deux polynômes à coeffi- cients dans C.