Universit´
e Pierre & Marie Curie Master de math´
ematiques 1
Ann´
ee 2011-2012 Module MM020
Th´eorie des Nombres - TD5
´
El´ements de complexit´e algorithmique
On appelle “op´eration ´el´ementaire” dans un anneau Ala somme ou le produit de deux ´el´ements de A.
On appelle “op´eration binaire ´el´ementaire” la somme ou le produit de deux nombres s’´ecrivant avec
un seul chiffre en base 2.
On ne s’int´eresse ici qu’`a la complexit´e temporelle (temps d’´ex´ecution de l’algorithme) et non `a la
complexit´e spatiale (encombrement m´emoire).
Exercice 1 :
a) Montrer que le nombre d’op´erations binaires ´el´ementaires pour calculer “na¨ıvement” la somme
de deux entiers de moins de nchiffres (´ecrits en binaire) est O(n).
b) Montrer que le nombre d’op´erations binaires ´el´ementaires pour calculer “na¨ıvement” le produit
de deux entiers de moins de nchiffres (´ecrits en binaire) est O(n2).
c) Montrer que le nombre d’op´erations ´el´ementaires dans Zpour calculer “na¨ıvement” n! est O(n).
Quel est le nombre d’op´erations binaires ´el´ementaires correspondant ?
d) Soient a, k, n trois entiers. Montrer que le nombre d’op´erations ´el´ementaires modulo kpour cal-
culer “na¨ıvement” anmodulo kest O(n) et que le nombre d’op´erations binaires ´el´ementaires
est O(nlog(k)2). Proposer un algorithme plus efficace, montrer que le nombre d’op´erations
´el´ementaires modulo kest alors O(log(n)) et que le nombre d’op´erations binaires ´el´ementaires
est O(log(n) log(k)2)
Exercice 2 : (Algorithme de Karatsuba)
L’objectif de cet exercice est l’´etude d’un algorithme pour le produit des nombres entiers qui est plus
rapide que la m´ethode na¨ıve. On fixe B2 un entier.
a) Soient x, y Ndeux nombres entiers, dont l’´ecriture en base Bcompte moins de nchiffres. Soit
n
2m<n. On ´ecrit x=x1Bm+x0et y=y1Bm+y0les divisions euclidiennes de xet ypar
Bm. Calculer le produit x.y en fonction des xiet yj.
b) Combien de multiplications de nombres de moins de mchiffres sont n´ecessaires au calcul de
x.y ? En d´eduire un algorithme de multiplication des entiers, et ´evaluer rapidement le nombre
d’op´erations ´el´ementaires de cet algorithme. Le comparer `a l’algorithme na¨ıf.
c) Avec les notations pr´ec´edentes, v´erifier que x1y0+x0y1= (x1+x0)(y1+y0)x1y1x0y0.
d) En d´eduire un nouvel algorithme pour calculer x.y, en effectuant moins de multiplications. ´
Etablir
une formule de r´ecurrence pour le nombre d’op´erations ´el´ementaires, puis ´evaluer ce nombre et
comparer `a l’algorithme na¨ıf (on pourra supposer pour commencer que nest une puissance de
2).
e) Que donne cet algorithme pour le calcul de anmodulo k(voir exercice 1, question d)) ?
Exercice 3 : (Transform´ee de Fourier rapide)
Soit k0 et n:= 2k. Soit Aun anneau et ωAtel que ωn= 1 et ωt1 n’est pas diviseur de 0
pour 1 tn1. Soient F, G A[X], tels que deg(F.G)< n. On cherche un algorithme rapide pour
calculer F.G A[X].
a) On d´efinit φ=φn:A[X]Anpar φ(P) =: (P(1), P (ω), . . . , P (ωn1)). L’objectif de cette
question est de calculer efficacement φ(H), avec deg(H)< n. On ´ecrit H(X) = Pn1
i=0 aiXiet
on pose m:= n
2. On ´ecrit les divisions euclidiennes de Hpar Xm1 et Xm+ 1 : H(X) =
(Xm1)Q0(X) + R0(X) et H(X) = (Xm+ 1)Q1(X) + R1(X).
1
i) Pour tout lZ, calculer H(ωl) en fonction de R0(ωl) et R1(ωl).
ii) Calculer les coefficients de R0et R1en fonction des ai.
iii) On pose R1(X) := R1(ωX). Calculer les coefficients de R1.
iv) Montrer que l’on peut calculer φn(H) `a partir de φm(R0) et φm(R1).
v) En d´eduire un algorithme pour calculer φ(H) et ´evaluer le nombre d’op´erations ´el´ementaires
dans An´ecessaires.
b) On cherche maintenant `a utiliser la question a) pour calculer le produit F.G.
i) On note e
φla restriction de φaux polynˆomes de degr´e < n. Calculer la matrice de e
φdans
les bases canoniques, et en d´eduire que e
φest inversible et que son inverse se calcule en un
nombre d’op´erations ´el´ementaires ´egal `a celui de la question a)v).
ii) En d´eduire un algorithme pour calculer F.G A[X], et montrer qu’il n´ecessite O(nlog(n))
op´erations ´el´ementaires dans A.
c) On cherche maintenant `a multiplier efficacement des entiers de taille n= 2k. On suppose donn´e
un nombre premier 2n < p < Kn (Kest une constante fix´ee, ind´ependante de n) tel que
p1 [2n] et un g´en´erateur ζde (Z/pZ). En d´eduire un algorithme de multiplication des
entiers qui s’´ecrivent en binaire avec moins de nchiffres. ´
Evaluer le nombre d’op´erations binaires
n´ecessaires, et comparer `a la m´ethode na¨ıve et `a l’algorithme de l’exercice 2.
d) En d´eduire un algorithme pour calculer anmodulo ket ´evaluer sa complexit´e (voir exercice 1,
question d) et exercice 2, question e)).
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !