• Aucun résultat trouvé

Un concept important : les fonctions de multiplication

Dans le document Algorithmes Efficaces en Calcul Formel (Page 51-58)

Polynômes et séries

2. Multiplication rapide

2.7 Un concept important : les fonctions de multiplication

Un bon nombre des résultats de complexité donnés dans la suite de cet ouvrage reposent sur la notion defonction de multiplication. Une fonction M : N → N sera dite

fonction de multiplication polynomiale (pour un anneau A) si :

— on peut multiplier les polynômes de A[X] de degrés au plus n en au plus M(n) opérations dans A ;

— M vérifie l’inégalité M(n + n0) ≥ M(n) + M(n0).

Ainsi, on sait d’après ce qui précède que des fonctions de la forme nlog23ou n log n sont (à des constantes près) des fonctions de multiplication (respectivement pour tous les anneaux ou ceux qui permettent la transformée de Fourier). L’intérêt de cette

2.7 Un concept important : les fonctions de multiplication 51

notion est qu’elle permet d’énoncer des résultats de complexité indépendants du choix de l’algorithme utilisé pour multiplier les polynômes (même si parfois cela mène à des estimations légèrement pessimistes, parce que les algorithmes n’exploitent pas la remarque page 44).

La seconde condition est utilisée pour écarter l’hypothèse d’une fonction qui croît trop lentement (si M est constante, elle ne vérifie pas cette condition). Con-crètement, elle permettra par exemple d’établir que dans des algorithmes du type « inversion de série formelle par l’opérateur de Newton » (Chapitre 3), le coût total

est essentiellement celui de la dernière étape.

De la même manière, on est amené à introduire la notion defonction de multiplica-tion pour les entiers. Une foncmultiplica-tion MZ: N → N est une fonction de multiplication pour les entiers si :

— on peut multiplier des entiers de n chiffres en MZ(n) opérations binaires ; — MZvérifie l’inégalité MZ(n + n0) ≥ MZ(n) + MZ(n0).

Ce concept est très proche de son analogue polynomial et les contextes d’utilisation sont souvent les mêmes : on utilise la seconde condition pour contrôler les coûts de multiplication lors de l’analyse d’algorithmes récursifs.

Exercices

Exercice 2.13 Soit A un anneau, soit a ∈ A et soit P un polynôme de A[X], de degré au plus n. On se propose de calculer le polynôme Q(X) = P(X + a).

1. Donner un algorithme direct pour le calcul de Q et estimer sa complexité en termes de n ;

2. Montrer qu’il est possible de calculer Q(X) en utilisant OM(n) log nopérations (+, −, ×) dans A. (Un algorithme en O(M(n)) opérations sera donné au Chapitre 3 par somme composée, et une autre solution en O(M(n)) est donnée en Exer-cice 33.2 en Annexe.)



Exercice 2.14 Soit A un anneau, soient κ, n ∈ N et soit P un polynôme de A[X], de degré au plus n.

1. Donner un algorithme direct pour le calcul de P(X)κet estimer sa complexité en fonction de κ et de n ;

2. Montrer qu’il est possible de calculer P(X)κen n’utilisant que OM(nκ) opéra-tions (+, −, ×) dans A.



Exercice 2.15 — Produit court. Pour deux polynômes A, B ∈ Q[X] de degré stricte-ment inférieur à n, le polynôme AB mod Xn est appeléproduit court de A et B. Le

but de cet exercice est de montrer qu’il est possible de calculer plus efficacement le produit court que le produit entier AB. Le gain est d’un facteur constant.

1. Prouver que tel est le cas avec la multiplication polynomiale naïve.

On suppose que l’on dispose d’un algorithme de multiplication polynomiale qui, en degré n, utilise Mα(n) = Knαopérations dans Q, avec α > 1 et K > 0.

2. Donner un algorithme de type « diviser pour régner » pour le calcul du produit court de A, B.

3. Montrer que la complexité de cet algorithme est 2α1−2Mα(n) + O(n log n). En déduire l’impact sur la multiplication naïve, et celle de Karatsuba.

4. Modifier la conception de l’algorithme précédent, en découpant en deux sous-problèmes de tailles βn et (1 − β)n, avec 1/2 ≤ β ≤ 1 laissé en paramètre. Prouver que le nouvel algorithme utilise

βα

1 − 2(1 − β)α· Mα(n) + O(n log n) opérations dans Q.

5. Montrer que le minimum de la fonction β 7→ 1−2(1−β)βα α est atteint en βmin = 1 −12

1 α−1

et en déduire qu’on peut calculer le produit court en C(α) Mα(n) + O(n log n) opérations dans Q, où

C(α) = 

2α−11 −1α 2α−1α −2 .

6. Conclure sur le gain obtenu (à l’aide d’un calcul numérique).



Exercice 2.16 Soient P1, . . . , Pt des polynômes de A[X], de degrés d1, . . . , dt. Montrer que le produit P1· · ·Ptpeut s’effectuer en O(M(n)logt) opérations dans A, où n = Pidi.



Notes

Le mathématicien russe A. N. Kolmogorov avait conjecturé au début des années 1960 qu’il serait impossible de multiplier deux entiers en un coût binaire sous-quadratique. En 1962 cette conjecture fut infirmée par Karatsuba et Ofman [KO63]. Une généralisation de leur algorithme a été proposée peu de temps après par Toom et Cook [Coo66 ; Too63]. L’algorithme de Toom–Cook a une complexité binaire de O(n · 32

log2n) pour multiplier deux entiers de taille binaire n ; ce résultat peut être importé dans le monde polynomial (voir l’Exercice 2.7 pour une version plus faible). L’algorithme de FFT a une longue histoire, qui remonte à Gauss [Coo90 ; CT93 ; HJB85]. Il s’agit d’un progrès algorithmique très célèbre : Dongarra et Sullivan [DS00] le placent parmi les dix algorithmes qui ont le plus marqué le développement des sciences de l’ingénieur du 20esiècle. L’article fondateur de Cooley et Tukey [CT65] est l’un des plus cités en informatique2. La variante de la DFT décrite dans ce chapitre, appeléedecimation-in-frequency en anglais, est due à Gentleman et Sande [GS66] ; il

s’agit d’une version duale (au sens du principe de transposition de Tellegen évoqué au Chapitre 12) de l’algorithmedecimation-in-time [CT65]. De nombreux livres [Bri74 ;

Nus81 ; Van92] et articles [Bera ; DV90 ; FJ05] permettent de se familiariser avec la

2.7 Un concept important : les fonctions de multiplication 53

myriade de techniques de type FFT ; en particulier, Frigo et Johnson [FJ05] décrivent l’une des implantations les plus efficaces de la transformée de Fourier complexe (appelée FFTW, pourFastest Fourier Transform in the West.)

Une avancée importante a été la découverte de Schönhage et Strassen [SS71] du résultat équivalent pour la multiplication des nombres entiers. Pendant longtemps, on a cru que cet algorithme ne pourrait présenter qu’un intérêt purement théorique. À ce jour, la plupart des logiciels généralistes de calcul formel disposent d’une mul-tiplication rapide d’entiers qui inclut la FFT. Maple, Mathematica et Sage utilisent la bibliothèque GMP. Il faut noter que cette bibliothèque est le résultat d’un travail de nombreuses années, qui comporte une partie importante de code assembleur consacré à la multiplication sur chacun des processeurs produits dans une période récente.

L’analogue polynomial de l’algorithme de Schönhage–Strassen traité en Section 2.5 a été suggéré par Nussbaumer [Nus80]. Le cas particulier de la caractéristique 2 est traité par Schönhage [Sch77]. Plus récemment, Cantor et Kaltofen [CK91] ont donné un algorithme qui multiplie des polynômes de degré n sur une algèbre A (non nécessairement commutative, ni associative) en O(n log n log log n) opérations dans A.

En ce qui concerne la terminologie, nous suivons Demazure [Dem97] pour la définition des racines principales de l’unité. D’autres auteurs [Für09] utilisent la troisième propriété du Lemme 2.5. D’autres enfin [GG03] les appellent simplement primitives.

La borne de complexité binaire On log n · 2O(logn) mentionnée en fin de Sec-tion 2.6, pour multiplier des entiers de n chiffres, a été obtenue récemment par Fürer [De+08 ; Für07 ; Für09]. Harvey, van der Hoeven et Lecerf ont ensuite montré que l’algorithme de Fürer pouvait être un peu modifié pour atteindre un coût binaire en On log n · 16log2n

[HHL16]. Puis ils ont conçu un autre algorithme ayant un coût On log n · 8log2n

. À ce jour, on ne connaît pas de borne analogue pour la complexité arithmétique de la multiplication polynomiale en degré n en toute généralité. Néan-moins si les coefficients sont dans le corps fini Fq alors la complexité binaire du produit en degré n est en On log q log(n log q) · 8log2(n log q)

[HHL14].

Un problème ouvert est de trouver un algorithme de multiplication polyno-miale en complexité O(n), ou de prouver qu’un tel algorithme n’existe pas. Mor-genstern [Mor73] a donné une première réponse partielle, en montrant que dans un modèle simplifié où A = C et où les seules opérations admises sont les additions et les multiplications par des nombres complexes de module inférieur à 1, au moins

1

2n log n opérations sont nécessaires pour calculer une DFT en taille n. Plus récemment,

Bürgisser et Lotz [BL04] ont étendu ce type de borne à la multiplication dans C[X]. Concernant les entiers, Cook et Aanderaa [CA69] ont prouvé une borne inférieure de la forme cn log n/(log log n)2pour la multiplication en taille binaire n sur une ma-chine de Turing. Cette borne a été améliorée à Ω(n log n) pour un modèle restreint (multiplication en ligne) [PFM74].

Malgré la simplicité de leur idée de base, les algorithmes de Karatsuba et de Toom– Cook soulèvent encore des questions délicates ; plusieurs travaux récents traitent diverses généralisations (degrés déséquilibrés ou non-puissances, caractéristique non nulle de l’anneau des scalaires) [BZ07 ; CH07 ; Mon05 ; WP06]. Par exemple, connaître le nombre minimum de multiplications sm(n) (resp. smp(n)) suffisantes pour

multi-plier des polynômes de degré donné n sur un anneau arbitraire (resp. sur un anneau de caractéristique p) est un problème important et difficile. Pour les premières valeurs de n, les meilleures bornes connues actuellement, dues à Montgomery [Mon05], sont sm(1) ≤ 3, sm(2) ≤ 6, sm(3) ≤ 9, sm(4) ≤ 13, sm(5) ≤ 17 et sm(6) ≤ 22. L’optima-lité de ces bornes est un problème difficile. Pour smp(n), on sait par exemple que sm2(1) = 3, sm2(2) = 6, sm2(3) = 9 [Kam85] et que sm7(4) = 10, sm5(4) ≤ 11 [CKO09]. Une autre question importante est de savoir si les n coefficients du produit court FG mod Xn de deux polynômes F et G de degrés au plus n peuvent être calculés plus efficacement que l’ensemble des 2n coefficients du produit FG. L’Exercice 2.15, inspiré d’un résultat de Mulders [Mul00], apporte une réponse positive dans le cas où l’algorithme de multiplication est celui de Karatsuba. Par contre, on ne connaît aucun élément de réponse dans le cas où la multiplication polynomiale repose sur la DFT. Une question liée, le calcul duproduit médian [HQZ04], sera abordée au Chapitre 12.

Une faiblesse de l’algorithme DFT est son comportement quasi-linéairepar mor-ceaux, dû aux sauts de complexité entre deux puissances successives de 2. Récemment,

van der Hoeven a donné un nouvel algorithme, appelé TFT (de Truncated Fourier Transform en anglais), qui coïncide avec la DFT si n est une puissance de 2 et a une

courbe de complexité « plus lisse » que la DFT [Hoe04].

Le produit de t polynômes de degrés arbitraires d1, . . . , dtpeut s’effectuer [Str83] en O(M(n)(1 + H(d1, . . . , dt))) opérations, où H(d1, . . . , dt) = −P

idni ·logdi

n est l’entropie

du vecteur (d1/n, . . . , dt/n). La multiplication des polynômes à plusieurs variables peut

se ramener à une variable grâce à une technique connue sous le nom desubstitution de Kronecker [Moe76] (voir aussi l’Exercice 5.9).

Bibliographie

Bera Bernstein, Daniel J. (2001).Multidigit multiplication for mathematicians.

url: http://cr.yp.to/papers.html (visible en 2001).

BL04 Bürgisser, Peter et Martin Lotz (2004). « Lower bounds on the bounded coefficient complexity of bilinear maps ». In : Journal of the Association for

Computing Machinery, vol. 51, n3, p. 464–482.

Bri74 Brigham, E. Oran (1974).The fast Fourier transform. Prentice-Hall.

BZ07 Bodrato, Marco et Alberto Zanoni (2007). « Integer and polynomial mul-tiplication : towards optimal Toom–Cook matrices ». In :ISSAC’07 : In-ternational Symposium on Symbolic and Algebraic Computation. Éd. par

Dongming Wang. ACM Press, p. 17–24.

CA69 Cook, S. A. et S. O. Aanderaa (1969). « On the minimum computation time of functions ». In :Transactions of the American Mathematical Society,

vol. 142, p. 291–314.

CH07 Chung, Jaewook et M. Anwar Hasan (2007). « Asymmetric squaring for-mulae ». In :ARITH’07 : IEEE Symposium on Computer Arithmetic. IEEE,

p. 113–122.

CK91 Cantor, D. G. et E. Kaltofen (1991). « On fast multiplication of polyno-mials over arbitrary algebras ». In :Acta Informatica, vol. 28, n7, p. 693– 701.

2.7 Un concept important : les fonctions de multiplication 55

CKO09 Cenk, M., C. K. Koc et F. Ozbudak (2009). « Polynomial multiplication over finite fields using field extensions and interpolation ». In :ARITH’09 : IEEE Symposium on Computer Arithmetic. IEEE Computer Society, p. 84–91.

Coo66 Cook, S. (1966). « On the minimum computation time of functions ». Thèse de doctorat. Harvard University.

Coo90 Cooley, James W. (1990). « How the FFT gained acceptance ». In :A history of scientific computing. ACM Press Hist. Ser. P : ACM, p. 133–140.

CT65 Cooley, James W. et John W. Tukey (1965). « An algorithm for the machine calculation of complex Fourier series ». In :Mathematics of Computation,

vol. 19, p. 297–301.

CT93 — (1993). « On the origin and publication of the FFT paper ». In :

Current Contents, vol. 33, n51–52, p. 8–9.

De+08 De, A., P. P. Kurur, C. Saha et R. Saptharishi (2008). « Fast integer multi-plication using modular arithmetic ». In :STOC’08 : ACM Symposium on Theory of Computing. Victoria, British Columbia, Canada : ACM, p. 499–

506.

Dem97 Demazure, Michel (1997).Cours d’algèbre. Nouvelle Bibliothèque

Mathé-matique n

1. Cassini, Paris.

DS00 Dongarra, J. et F. Sullivan (2000). « Top ten algorithms ». In :Computing in Science & Engineering, vol. 2, n1, p. 22–23.

DV90 Duhamel, P. et M. Vetterli (1990). « Fast Fourier transforms : a tutorial review and a state of the art ». In :Signal Processing. An Interdisciplinary Journal, vol. 19, n4, p. 259–299.

FJ05 Frigo, M. et S. G. Johnson (2005). « The design and implementation of FFTW3 ». In :Proceedings of the IEEE, vol. 93, n2, p. 216–231.

Für07 Fürer, Martin (2007). « Faster integer multiplication ». In :STOC’07 : ACM Symposium on Theory of Computing. New York : ACM, p. 57–66.

Für09 — (2009). « Faster integer multiplication ». In :SIAM Journal on Computing, vol. 39, n

3, p. 979–1005.

GG03 Gathen, Joachim von zur et Jürgen Gerhard (2003).Modern computer algebra. 2eéd. Cambridge University Press.

GS66 Gentleman, W. M. et G. Sande (1966). « Fast Fourier transforms : for fun and profit ». In :AFIPS’66. San Francisco, California : ACM, p. 563–578.

HHL14 Harvey, David, Joris van der Hoeven et Grégoire Lecerf (2014). « Faster polynomial multiplication over finite fields ». http://arxiv.org/abs/ 1407.3361.

HHL16 — (2016). « Even faster integer multiplication ». In :Journal of Complexity, vol. 36, p. 1–30.

HJB85 Heideman, Michael T., Don H. Johnson et C. Sidney Burrus (1985). « Gauss and the history of the fast Fourier transform ». In :Archive for History of Exact Sciences, vol. 34, n3, p. 265–277.

Hoe04 Hoeven, Joris van der (2004). « The truncated Fourier transform and applications ». In :ISSAC’04 : International Symposium on Symbolic and Algebraic Computation. New York : ACM Press, p. 290–296.

HQZ04 Hanrot, Guillaume, Michel Quercia et Paul Zimmermann (2004). « The middle product algorithm I ». In :Applicable Algebra in Engineering, Com-munication and Computing, vol. 14, n

6, p. 415–438.

Kam85 Kaminski, Michael (1985). « A lower bound for polynomial multiplica-tion ». In :Theoretical Computer Science, vol. 40, n2-3, p. 319–322. KO63 Karatsuba, A. et Y. Ofman (1963). « Multiplication of multidigit numbers

on automata ». In :Soviet Physics Doklady, vol. 7, p. 595–596.

Moe76 Moenck, Robert T. (1976). « Another polynomial homomorphism ». In :

Acta Informatica, vol. 6, n2, p. 153–169.

Mon05 Montgomery, Peter L. (2005). « Five, six, and seven-term Karatsuba-like formulae ». In :IEEE Transactions on Computers, vol. 54, n3, p. 362–369. Mor73 Morgenstern, Jacques (1973). « Note on a lower bound of the linear complexity of the fast Fourier transform ». In :Journal of the Association for Computing Machinery, vol. 20, p. 305–306.

Mul00 Mulders, Thom (2000). « On short multiplications and divisions ». In :

Applicable Algebra in Engineering, Communication and Computing, vol. 11,

n

1, p. 69–88.

Nus80 Nussbaumer, Henri J. (1980). « Fast polynomial transform algorithms for digital convolution ». In :IEEE Transactions on Acoustics, Speech, and Signal Processing, vol. 28, n2, p. 205–215.

Nus81 — (1981).Fast Fourier transform and convolution algorithms. Vol. 2.

Springer Series in Information Sciences. Springer-Verlag.

PFM74 Paterson, M. S., M. J. Fischer et A. R. Meyer (1974). « An improved over-lap argument for on-line multiplication ». In :Complexity of computation.

AMS, p. 97–111.

Sch77 Schönhage, A. (1976/77). « Schnelle Multiplikation von Polynomen über Körpern der Charakteristik 2 ». In :Acta Informatica, vol. 7, n4, p. 395– 398.

SS71 Schönhage, A. et V. Strassen (1971). « Schnelle Multiplikation großer Zahlen ». In :Computing, vol. 7, p. 281–292.

Str83 Strassen, V. (1983). « The computational complexity of continued frac-tions ». In :SIAM Journal on Computing, vol. 12, n

1, p. 1–27.

Too63 Toom, A. L. (1963). « The complexity of a scheme of functional elements simulating the multiplication of integers ». In :Doklady Akademii Nauk SSSR, vol. 150, p. 496–498.

Van92 Van Loan, Charles (1992).Computational frameworks for the fast Fourier transform. Vol. 10. Frontiers in Applied Mathematics. SIAM.

WP06 Weimerskirch, André et Christof Paar (2006). « Generalizations of the Karatsuba algorithm for efficient implementations ». Cryptology ePrint Archive. url : https://eprint.iacr.org/2006/224.pdf.

Dans le document Algorithmes Efficaces en Calcul Formel (Page 51-58)