![](//s1.studylibfr.com/store/data-gzf/d9804b42ed3f203d0eae0aff5b03ceb7/1/003925108.htmlex.zip/bg1.jpg)
Algorithmique et Programmation
TD n◦8 : Polynômes et FFT
École normale supérieure – Département d’informatique
2014-2015
Exercice 1 Multiplication de polynômes bivariés
Donner un algorithme qui multiplie deux polynômes (representés par leur coefficients) P, Q ∈C[X, Y ]de
degrés inférieurs à nen O(n2log n)opérations élémentaires dans C.
Exercice 2 Division euclidienne rapide par la méthode de Newton
Soit Aun anneau commutatif unitaire (en pratique nous considérerons A=Zou A=ZN). Soient
S, T ∈A[X]avec deg(S) = n,deg(T) = met Tunitaire.
1. Montrer que l’algorithme classique de division euclienne de Spar Ta une complexité arithmétique
en O(n2)(i.e. le nombre d’opérations nécessaires dans l’anneau Aest en O(n2)).
2. Pour P∈A[X]et k= deg(P), nous notons Rec(P(X)) = XkP(1/X)le polynôme réciproque de
P. Montrer que
Rec(Q) = Rec(S)Rec(T)−1mod Xn−m+1,
où Qest le quotient de la division euclidienne de Spar T.
3. Soit F∈A[X]avec F(0) = 1. Considérons la suite de polynômes Gi∈A[X]définie par G0= 1 et
Gi+1 = 2Gi−F·G2
imod X2i+1
pour i≥0. Montrer que pour tour entier i≥0, nous avons
F·Gi≡1 mod X2i.
4. En déduire un algorithme pour calculer Qet le reste Rde la division euclidienne de Spar T.
5. Montrer que la complexité arithmétique de cet algorithme de division euclidienne appliqué à deux
polynômes de degrés < n est en O(M(n)) où M(n)est la complexité arithmétique du produit de
deux polynômes de degré < n de A[X](avec M(n1+n2)≥M(n1) + M(n2)pour n1, n2∈N).
Exercice 3 Multi-évaluation d’un polynôme univarié
Soit Aun anneau commutatif unitaire (en pratique nous considérerons A=Zou A=ZN). Soient
a1, . . . , ad∈A. Nous notons M(d)la complexité arithmétique du produit et de la division euclidienne de
deux polynômes de degré < d de A[X](avec M(d1+d2)≥M(d1) + M(d2)pour d1, d2∈N).
1. Supposons que d= 2kest une puissance de 2et considérons l’arbre binaire complet Tàdfeuilles
défini par :
– chacune des dfeuilles est associée à un polynôme X−ajpour j∈ {1, . . . , d};
– pour chaque nœud interne uayant les fils vet wassociés aux polynômes Mv(X)et Mw(X)
respectivement, uest associé au polynôme Mu(X) = Mv(X)·Mw(X).
Donner un algorithme pour construire l’arbre Tavec une complexité arithmétique en O(M(d) log d).
2. Soit P∈A[X]unitaire avec deg(P) = d. Donner un algorithme qui prenant en entrée P,(a1, . . . , ad)
et l’arbre T, calcule P(X) mod Mu(X)pour tout u∈T, avec une complexité arithmétique en
O(M(d) log d).
3. Déduire des questions précédentes un algorithme qui calcule P(a1), . . . , P (ad)pour tout d∈Navec
une complexité arithmétique en O(M(d) log d).
Exercice 4 Recherche de motifs
Le but de cet exercice est de proposer des algorithmes numériques de recherche de motifs (classique
ou avec jokers). Nous supposerons sans perte de généralité que l’alphabet Σ = {1, . . . , σ} ⊂ Nest un
ensemble d’entiers consécutifs.
1