2005/06-1

publicité
Université Bordeaux I
Master Informatique – Semestre 1 – INF 301
Compléments de Mathématiques et
d’Algorithmique
21 décembre 2005, 8h30 – 11h30 (3 heures)
Responsable : Alexandre Zvonkine. Tous documents autorisés
Barème envisagé : 3 + 2 + 3 + 2 + 2 + 4 + 3 + 1 + 2 + 2 = 24
Problème : Division des polynômes
I. Polynômes réciproques modulo x N
Pour comprendre de quoi on parle, commençons par deux exemples.
Exercice 1. (a) Diviser 1 par le polynôme 1 − 2x ; effectuer la division
jusqu’au degré 7.
(b) Diviser 1 par le polynôme 1 − x − x 2 ; effectuer la division jusqu’au degré 8. (Avez-vous remarqué quels sont les coefficients du polynômerésultat ?)
(c) Multiplier 1 − 2x par le polynôme obtenu dans la question (a), puis
1 − x − x2 par le polynôme obtenu dans la question (b). Que remarque-t-on ?
On peut remarquer que la division de 1 par un polynôme donne comme
résultat une série infinie. Si on s’arrête au degré N − 1 et on élimine tous les
termes de la série à partir du degré N on obtient un polynôme réciproque
modulo xN du polynôme initial.
Notation. Soit un polynôme P (x) avec le terme constant non nul. Pour
le polynôme Q(x) de degré N − 1 tel que
P (x) · Q(x) = 1 mod xN
on utilisera la notation Q = PN−1 .
Exemple.
On peut vérifier que
1
= 1 + x + x2 + x3 + x4 + x5 + (les termes de degré supérieur à 5) ,
1−x
1
d’où
2
3
4
5
(1 − x)−1
6 =1+x+x +x +x +x .
2 −1
Dans l’exercice 1, nous avons calculé (1 − 2x) −1
8 et (1 − x − x )9 .
Exercice 2. Soit un polynôme P de degré m−1. Montrer que la complexité
de calcul de Pn−1 par la division “habituelle” est O(mn). Pour m = n on
obtient la complexité O(n2 ).
L’exercice suivant est un lemme préparatoire pour construire un algorithme plus performant calculant P N−1 .
Exercice 3. Soit un polynôme P , et soit un polynôme S de degré n − 1
tel que P · S = 1 mod xn (c’est-à-dire, S = Pn−1 ). Montrer que pour le
polynôme
T = 2S − P · S 2
(1)
on obtient P · T = 1 mod x2n .
Ainsi, en connaissant S = Pn−1 on peut passer directement au polynôme
à savoir,
−1
P2n
= T mod x2n .
−1
P2n
,
Ceci veut dire que, en faisant le calcul de T selon la formule (1) il faut juste
négliger tous les termes de degré supérieur ou égal à 2n.
Notons M (n) la complexité de multiplication des polynômes de degré n.
−1
Exercice 4. Quelle est la complexité du calcul de P 2n
à partir de Pn−1
selon la formule (1) ?
Algorithme A. Soit un polynôme P de degré m avec le terme constant
a0 6= 0. On fait les itérations suivantes :
T = 1/a0 ;
n = 1;
tantque n < N faire
T = 2T − P · T 2 mod x2n ;
n = 2n ;
fin-tantque
retourner T mod xN ;
2
Exercice 5.
Montrer que l’algorithme A calcule P N−1 .
Exercice 6. (a) Montrer que la complexité de l’algorithme A est bornée
par O(M (N ) log N ).
(b) Expliquer informellement pourquoi M (n) vérifie la propriété
M (n) ≥ 2M (n/2) .
En utilisant cette propriété montrer que la complexité de l’algorithme A est
en fait O(M (N )).
On remarque que la complexité ne dépend pas de m = deg P .
II. Division euclidienne
Soient deux polynômes A(x) et B(x), de degrés deg A = m et deg B = n,
m > n > 0 ; on cherche deux polynômes Q(x) et R(x) tels que
A(x) = Q(x) · B(x) + R(x) ,
(2)
où deg Q = m − n et deg R < deg B. Rappelons que de tels polynômes
existent et sont uniques.
Exercice 7. (a) Pour les polynômes A(x) = x 5 − 3x4 + x3 + 6x2 + 1 et
B(x) = x3 − 2x2 + x + 3 trouver les polynômes Q(x) et R(x) correspondants.
(C’est-à-dire, diviser A(x) par B(x).)
(b) Quelle est la complexité de l’algorithme “usuel” de division des polynômes (en fonction de m = deg A et n = deg B) ?
L’objectif des exercices suivants est de trouver un algorithme plus performant pour faire une division euclidienne des polynômes.
Convention. Le degré du polynôme R est borné par n − 1 ; mais, pour
faciliter la présentation, nous allons, dans ce qui suit, le considérer comme
polynôme de degré égal à n − 1, en ajoutant si nécessaire les termes manquants avec les coefficients nuls.
Définition. Soit P (x) = a0 + a1 x + a2 x2 + . . . + an xn un polynôme de
degré n. On définie le miroir de P comme mir(P ) = x n P ( x1 ).
Exercice 8. Écrire explicitement le polynôme mir(P ). Expliquer pourquoi
la complexité de calcul de mir(P ) pour un polynôme P de degré n est O(n).
3
Exercice 9.
Montrer que l’égalité (2) est équivalente à l’égalité suivante :
mir(A) = mir(Q) · mir(B) + xm−n+1 mir(R)
(3)
où R est considéré comme polynôme de degré n − 1.
L’égalité (3) peut aussi s’interpréter comme
mir(A) = mir(Q) · mir(B) mod xm−n+1 .
D’où l’algorithme suivant :
Algorithme B.
1. calculer mir(A) et mir(B) ;
2. calculer mir(B)−1
k pour k = m − n + 1 en utilisant
l’algorithme A ;
3. calculer mir(Q) = mir(A) · mir(B) −1
mod xk ;
k
4. calculer Q ;
5. calculer Q · B ;
6. calculer R = A − Q · B.
Exercice 10. Montrer que l’algorithme B calcule les polynômes Q et R
recherchés dans la formule (2). Quelle est la complexité de cet algorithme
(en fonction de m) ?
Fin de l’énoncé
4
Téléchargement