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