![](//s1.studylibfr.com/store/data-gzf/6851f0ff2c20e2d9903293b5ee339446/1/003679886.htmlex.zip/bg3.jpg)
Analyse d’algorithmes 2001 EXERCICES SUR L’ALGORITHMIQUE ÉLÉMENTAIRE 3
Solution
Rappelons que, comme on travaille avec de grands entiers, on ne peut pas considérer une
addition ou une multiplication comme une opération élémentaire. Concernant les multiplications ou
divisions par deux, même si elles devaient se traduire par des décalages, ceux-ci devraient être
propagés de mot en mot, et donc prendre un temps linéaire par rapport à la taille (nombre de mots, de
chiffres, ou de bits) des grands entiers en question, comme toute autre addition ou multiplication. La
seule chose favorisant ces «décalages étendus» est que la constante multiplicative (temps par mot-
machine) a des chances d’être plus faible pour les décalages que pour les additions (et plus faible pour
les additions que pour les multiplications quelconques d’un mot ou chiffre par un autre). Dans le
raisonnement qui suit, nous exprimons la taille en bits, plus faciles à appréhender, plutôt qu’en mots,
d’autant plus que c’est ainsi qu’a été présenté l’algorithme.
La ie itération (remplissage de la ie ligne du tableau), dans la colonne du multiplicande A, calcule
un produit partiel double de celui calculé à la ligne précédente, donc ayant un bit de plus. Comme au
départ le multiplicande comporte m bits, cette ie itération calcule un produit partiel de m + i bits (ou
mots). Elle prend par conséquent un temps dans l’ordre de m + i. Puisque le multiplicateur B, qui
diminue d’un bit à chaque itération, comprend au départ p bits ou mots, il y a p itérations au total. La
succession de ces p itérations prend donc un temps
T (m, p)= m + (m + 1) + (m + 2) + ... + (m + p – 1)
= m p + ∑
i=1
p–1 i = m p + p (p–1)
2 ≈ p (m + p
2)(1)
Si on prend comme multiplicateur B le plus petit des deux opérandes (p < m), le terme dominant
de la parenthèse est m, d’où un temps global dans l’ordre de p m. C’est dans le même ordre que pour
l’algorithme classique, mais avec une constante multiplicative risquant d’être plus grande (p. ex., si B
est le multiplicateur, il y a lgB itérations dans l’algorithme à la russe au lieu de log10B itérations dans
l’algorithme classique, soit lg10 fois plus).
Si on prend comme multiplicateur B le plus grand des deux opérandes (p > m), le terme
dominant de la parenthèse est p
2, d’où un temps global dans l’ordre de p2. Cela est plus mauvais que
pour l’algorithme classique, puisque l’algorithme est alors quadratique par rapport à la taille du plus
grand opérande (au lieu d’être le produit des deux tailles)!
Remarque. Dans le raisonnement qui précède, on s’est concentré sur le calcul des produits
partiels successifs (colonne du multiplicande A). Alternativement, on pourrait prendre en compte
aussi le temps de calcul des multiplicateurs successifs. Cela serait tout-à-fait justifié, puisque ces
multiplicateurs successifs sont aussi de grands entiers, bien que leur taille diminue de p à 1. Dans ce
cas, à la sommation (1) ci-dessus des produits partiels s’ajouterait une sommation
T1 (p)= (p – 1) + (p – 2) + ... + 1 = ∑
i=1
p–1 i = p (p–1)
2 ≈ p (p
2)(2)
due aux multiplicateurs successifs qui vont en diminuant. La prise en compte de cette seconde com-
posante aurait comme seul effet, en bout de ligne, de remplacer dans (1) la parenthèse (m + p
2) par
(m + p), et les conclusions ci-dessus (selon les tailles respectives de A et B) subsisteraient.