• Aucun résultat trouvé

Multiplier des entiers en temps O (n log n)

N/A
N/A
Protected

Academic year: 2022

Partager "Multiplier des entiers en temps O (n log n)"

Copied!
9
0
0

Texte intégral

(1)

HAL Id: hal-03278647

https://hal.archives-ouvertes.fr/hal-03278647

Submitted on 5 Jul 2021

HAL

is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.

L’archive ouverte pluridisciplinaire

HAL, est

destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

Multiplier des entiers en temps O (n log n)

Joris van der Hoeven

To cite this version:

Joris van der Hoeven. Multiplier des entiers en temps O (n log n). Gazette du GDR IM, 2021.

�hal-03278647�

(2)

Multiplier des entiers en temps O ( n log n ) ∗†

par Joris van der Hoeven CNRS, LIX (UMR 7161) 1, rue Honoré d'Estienne d'Orves

Bâtiment Alan Turing, CS35003 91120 Palaiseau, France

Mars 2021

Résumé

Il a été démontré récemment que deux entiers denchiffres peuventêtre multipliés en temps O(nlogn)[12]. L'exis- tence d'un tel algorithmefut conjecturé en 1971par Schön- hage et Strassen[23].Ils émettaient également leurs doutes sur l'existence d'une méthode encoreplus rapide, ce que l'on ignore toujours.

Dans cet article,jeprésenteraibriévement une longue histoire etjepoursuivrai avec un aperçu du nouvel algo- rithme.

Introduction

Quelle est la meilleure façon de multiplier deux entiers? Cette question, simple en apparence, estpeut-être leplus ancienproblème mathématique non résolu. Ainsi, cepro- blème est au moins dixfoisplus ancien que la conjecture de Fermat, alias«théorème deWiles».

Figure1. Pierre commémorative dans le Pieterskerk àLeyde, avec une reconstruction du texte original de lapierre tombale de Ludolph van Ceulen (1540–1610), qui apassé vingt-cinq ans de sa vieàcalculer 35 décimales deπ.

Il fautbien sûr préciser ce que nous entendons par

«meilleur». Pour cela, il a fallu attendre l'invention de la machine de Turing : équipée d'un modèle de calcul précis, onpeut définir le nombre M(n)d'étapes nécessaires pour multiplier deux nombres denchiffres. La meilleure méthode est alors cellepour laquelle M(n)augmente aussi lentement quepossible enfonction den.

Prenonspar exemple la méthode de l'écoleprimaire, qui consisteàmultiplier chaque chiffre dupremier nombrepar chaque chiffre du deuxième nombre, en ajoutant les résul- tats de manière appropriée. Cela donne M(n)=O(n2): il existe une constanteC>0 avec M(n)

C n2pour toutn.

Afin de rendre notre questionprincipale indépendante de la machine de Turing en cher et en os sur laquelle nous faisons notre calcul, nous nous intéressons uniquement au temps de calculàunfacteur constantprès. Une méthode 100foisplus rapide n'est doncpas une amélioration signi- ficative, mais un algorithme logloglognfoisplus rapide est un énormepas en avant.

C'estprobablementKolmogorov qui a été lepremierà formuler notreproblème ainsi, dans un séminaire célèbreà Moscou.Emportépar son enthousiasme, il avait également

Figure2.Andrej Kolmogorov.

∗.Cet article est une traduction libre de[15].

†.Ce document a été rédigé avecGNU TEXMACS[16].

(3)

conjecturé quen2=O(M(n)). Car, raissona-t-il, s'ilyavait une meilleure méthode que celle de l'école, on l'auraitbien trouvé depuis six mille ans.

La formulation précise d'un problème facilite la recherche de solutions.Mais l'absence d'une telleformula- tion n'exclutpas d'éventuelsprogrès. Les Babyloniens ont déjàcalculé 2 jusqu'àseize chiffres derrière la virgule. Un jour, on trouvera peut-être une tablette d'argile avec des méthodes inédites de multiplicationàgrande vitesse. Les amateurs du nombreπ, comme mon compatriote Ludolph van Ceulen, auraientpu en tirerprofit (voir lafigure1).

Karatsuba

La conjecture de Kolmogorov ne fit pas longfeu. Après trois semaines, il a été surprispar unjeune élève avec une méthode de multiplication enO(nlog3/log2)étapes. Kolmo- gorov rédigea immédiatement cette nouvelle trouvaille, la publia sous le nom de son créateur,Karatsuba, et la regroupa avec un autre article qui n'avait rienàvoir[18,17].

Expliquons l'idée deKaratsuba avec un exemple: u = 2 2 0 6 2 9 0 1 2 0 2 0

v = 3 141 5 9 2 6 5 3 58.

Nous commençonspar couper les deux nombres en deux: u = 2 2 0 6 2 9

a

×1 0 0 0 0 0 0

x

+0 1 2 0 2 0

b

v = 3 141 5 9

c

×1 0 0 0 0 0 0+2 6 5 3 58

d

Ensuite, nous faisons deux additions et trois multiplica- tions:

a+b = 2 3 2 649 c+d = 5 7 9 5 1 7

a c = 0 6 9 3 1 2 586 0 1 1 b d = 0 0 3 189 6 0 3 1 6 0 (a+b) (c+d) = 1 34 8240 5 0 5 3 3

Figure3.Anatoly Karatsuba.

Maintenant, nous remarquons qu'il suffit de deux soustrac- tionspour trouver

a d+b c = (a+b) (c+d)−a c−b d

= 6 2 3 2 186 1 3 6 2.

Enfin, on a

u v = (a x+b) (c x+d)

= a c x2+(a d+b c)x+b d, et on termine avec une dernière addition:

0 6 9 3 1 2 586 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 a c x2 6 2 3 2 186 1 3 6 2 0 0 0 0 0 0 (a d+b c)x

0 0 3 189 6 0 3 1 6 0 b d 0 6 9 3 1 2 64 83 3 28645 5 1 6 0 3 1 6 0 u v Aufinal, nous avons réduit une multiplicationà12 chiffres àtrois multiplicationsà6 chiffres et quelques additions et soustractions.

En général, multiplier des nombres deuxfoisplus longs prend environ troisfois plus de temps. Plusprécisément, on a l'«inégalité récurrente»suivante:

M(2n)

3 M(n)+O(n).

Pour une certaine constanteC etpourn=2r, nous avons donc

M(n)

3 M(n/2)+C n

9 M(n/4)+

(

1+32

)

C n

27 M(n/8)+

(

1+32+94

)

C n

⋅⋅⋅ 3rM(1)+O

((

32

)

rn

)

= O(3r).

Or nouspouvons toujours rajouter deszérosàgauche d'un nombre afin que son nombre de chiffres devienne unepuis- sance de deux.Enfin de compte, ceciprouve

M(n) = O(nlog3/log2). Des nombresauxpolynômes

L'un des ingrédients de la méthode de Karatsuba est de couper les nombres en deux morceaux.Celapermet de voir uetvcomme despolynômesax+betcx+dde degré<2.En fait, cela revient simplementàtravailler enbase x=1000000 au lieu de 10.

L'idée de remplacer l'arithmétique entière par l'arith- métiquepolynomiale a déjàété suggéréeparKronecker au 19èmesiècle.Par exemple, nouspouvons couper un nombre denchiffres enlmorceaux dep:=[[n/l]] chiffres et réinter- préter le résultat comme unpolynôme.

Dans les années 1960, on a développé une série d'amélio- rations de la méthode deKaratsuba, enprenant le nombre de morceauxlsupérieuràdeux[24,22,19] ;voir le tableau1

(4)

-4000 Onbekend O(n2) 1962 Karatsuba O(nlog3/log2)

1963 Toom O

(((((

n25qloglog2n

)))))

1966 Schönhage O

(((((

n2q2lognlog2(logn)32

)))))

1969 Knuth O

(((((

n2q2lognlog2logn

)))))

1971 Pollard O(nlognlog logn⋅ ⋅ ⋅) 1971 Schönhage-Strassen O(nlognlog logn)

2007 Fürer O(nlogn2O(logn)) 2014 Harvey-vdH-Lecerf O(nlogn8logn) 2017 Harvey O(nlogn6logn) 2017 Harvey-vdH O(nlogn(4√ )2logn) 2018 Harvey-vdH O(nlogn4logn) 2019 Harvey-vdH O(nlogn)

Tableau1. De meilleures limites supérieurespour M(n)aufil des ans. Dans le tableau, lafonction log×est définiepar logx= min{n∈ ℕ:l(og∘ . . .∘log)(x)

1}.

pour un aperçu historique.

Sans entrer dans les détails, chacune de ces améliora- tions estbasée sur une généralisation de l'astuce deKarat- suba. La multiplication de deuxpolynômes de degré<lse réduit alorsà 2l−1 multiplications de coefficients, après quoi M(n)=O(nlog(2l−1)/log(l−1)).

Des polynômesaux cyclonômes

Désormais, nous nousfocaliseronsprincipalement sur la multiplication depolynômes et il est utile de travailler avec des coefficients dans un anneau généralR. Nous laissons de côté le choixprécis deR,pour l'instant.

Pour la suite, il est également utile de travailler avec des«cyclonômes»au lieu depolynômes.Uncyclonômede degrélest un élément deR[x]/(xl−1).

La relationxl=1 n'entre en action que lorsque le degré d'unpolynôme excèdel. Leproduit de deuxpolynômes de degré<l/2 dansR[x]peut ainsi tout aussibien se calculer dansR[x]/(xl−1).

L'avantage des cyclonômes est que nous avons de nou- velles astuces de calculà notre disposition. Par exemple, supposons quel=2 et que 2 soit inversible dansR. Alors il devient possible d'optimiser la méthode deKaratsuba : modulox2−1 on a

(a1x+a0) (b1x+b0)=aˆ0bˆ0aˆ1bˆ1

2 x+aˆ0bˆ0+aˆ1bˆ1

2 ,

aˆ0 = a0+a1 bˆ0 = b0+b1

aˆ1 = a0a1 bˆ1 = b0b1.

DansR[x]/(x2−1), le calcul d'unproduit ne nécessite donc que deux multiplications dans R. Ily a aussi un certain nombre d'additions, de soustractions et de divisions par deux.

Les relations ci-dessus viennent de lafactorisation (x2−1)=(x−1) (x+1) (1) et de l'application du théorème des restes chinoisàcelle- ci:

R[x]/(x2−1) ≅ R[x]/(x−1)×R[x]/(x+1) a1x+a0 ↦ (a0+a1,a0a1)

Celapermet de remplacer les calculs arbitraires dansR[x]/ (x2−1)par des calculs dansR[x]/(x−1)×R[x]/(x+1)≅R2. LamultiplicationFFT

Lafactorisation (1) est valablepour chaque anneauR. Dans certains anneaux, lepolynômexl−1 se scinde de la même manière enfacteurs linéairespour certainsl>2.Cela arrive dès queRadmet un élémentωavec∑k=0l−1(ωj)k=0pour j= 1,. . .,l−1. Un tel élémentω est appelé racine principale d'unité d'ordrelet conduitàlafactorisation

xl−1 = Y

0

k<l(xω

k).

Silest également inversible dansR, alors le théorème des restes chinois donne:

R[x]/(xl−1) ≅ Y

0

k<lR[x]/(xω

k).

De gaucheà droite, cet isomorphisme est appelétrans- formée deFourier discrète ou DFT. Pour tout AR[x]et 0

k<lon ax=ωketP(x)=P(ωk)moduloxωk, donc

DFT(A¯) = (A(1),A(ω),. . .,A(ωl−1)).

L'algèbreR[x]/(xωk)estàson tour isomorpheàRpour toutk, d'où

R[x]/(xl−1) ≅ Rl.

Or des calculs dans l'anneauRlsefontàmoindrefrais:une multiplication dansRl équivautpar exempleàlmultipli- cations dansR. Si nous disposions d'algorithmes efficaces àlafoispour laDFT et son inverseDFT−1, alors cela don- nerait unebonne méthodepour multiplier des cyclonômes A,B∈R[x]/(xl−1):

A B = DFT−1(DFT(A)DFT(B)). Cela s'appelle lamultiplicationFFT.

(5)

Latransformation deFourier rapide

Mais comment calculer rapidement une telleDFT? Nous avons déjàétudié le casl=2. Plus généralement, lafactori- sation

x2l−1 = (xl−1) (xl+1) pour des degréspairs 2linduit l'isomorphisme

R[x]/(x2l−1) ≅ R[x]/(xl−1)×R[x]/(xl+1). SiA,BR[x] sont despolynômes de degré <l, alors cet isomorphisme envoieA+Bxl vers (A+B,AB); pour la lisibilité, nous omettons désormais lesbarres des modulos.

Calculer A±B revientà additionner et soustraire l fois dans R. Pour l'isomorphisme dans l'autre sens, il faut rajouter 2ldivisionspar deux.

Siωest une racineprincipale d'unité d'ordre 2l, on a en outre l'isomorphisme suivant:

R[x]/(xl+1) ≅ R[x]/(yl−1) X

0

k<lakx

k ↦ X

0

k<l(akω

k)yk.

Le calcul de cet isomorphisme se réduitàlmultiplications par despuissances deω.Ici, il est important de noter qu'une multiplicationpar une puissance deω estparfois moins chère qu'une multiplication arbitraire dansR(voirplusbas).

En résumé, cela montre comment une DFT de lon- gueur 2lpeutêtre réduiteàdeuxDFTs de longueurl.Si on écrit F(l)pour le temps qu'ilfautpour calculer uneDFT de longueurl,puis T±pour le temps d'une addition ou d'une soustraction dans R, et Tω pour le temps d'une multipli- cationpar unepuissance deω, alors nous avons

F(2l)

2 F(l)+2lT±+lTω.

En appliquant cetteformule récursivement dans le cas où l=2lglest unepuissance de deux, nous obtenons

F(l)

2 F(l/2)+l

(

T±+12Tω

)

4F(l/4)+2l

(

T±+12Tω

)

⋅⋅⋅ (l/2)F(2)+(lgl1)l

(

T±+12Tω

)

llgl

(

T±+12Tω

)

. (2)

Pour la transformation inverse, ilfaut rajouterldivisions parl.

Intermezzo

Avant de continuer, c'est unbon momentpour quelques commentaires.La FFT apercé en 1965, après lapublication de l'article de Cooleyet Tukey [3].Mais une méthode simi- laire avait déjàété décrite dans des travaux nonpubliés de Gauss[6,14].

Figure4. Volker Strassen (àgauche) et Arnold Schönhage (à droite).

Par ailleurs, nous avons vu qu'une multiplication de cyclonômes peut être réduite à deux DFT directes plus une DFT inverse. En 1970, Bluestein a noté qu'une DFT de longueurlpeut égalementêtre réduiteàunproduit de cyclonômes de même degrél[2].

Pour expliquer cela, supposonspour simplifier quelest pair et queη est une racineprincipale d'unité d'ordre 2l avecη2=ω. Pour des entiersj,k, on a alors

η(j+l)2=ηj2η2l(j+l/2)=ηj2 et

ωjk=ηj2ηk2η(j−k)2.

Le coefficient j-ième de laDFT d'un cyclonômeu0+ ⋅ ⋅ ⋅ + ul−1xl−1vaut donc

X

0

k<lukω

jk = ηj2X

0

k<l(ukη

k2)η(j−k)2.

Dans la sommeàdroite nous reconnaissons maintenant le produit de deux cyclonômes:

V = X

0

k<l(ukη

k2)xk W = X

0

k<lη

−k2xk.

Retourauxnombres entiers

En 1971, pas moins de trois méthodes apparurent pour appliquer la FFTàla multiplication des nombres entiers[21, 23]. Chacune de ces méthodes reposait sur un choix dis- tinct deR.

(6)

Figure5.John Pollard.

Le choix leplus naturel est deprendreR=ℂetω=e2πi/l. Bien sûr, nous nepouvons travailler qu'avec des approxi- mations de nombres complexes dans notre cas.Pour multi- plier des nombres denchiffres, onpeutprouver qu'il suffit de travailler avec uneprécision deClognchiffres derrière la virgulepour une certaine constanteC>0. Cela signifie que nous pouvons travailler avecl=O(n/logn) blocs de O(logn)chiffres. En combinaison avec (2), ceci donne

M(n)=O(lloglM(logn))=O(nM(logn)).

En appliquant cette formule de manière récursive, nous obtenons

M(n)=O(nlognlog lognlog log logn⋅ ⋅ ⋅).

Ceci donnait le«premier algorithme»de l'article de Schön- hage–Strassen[23].

Cependant, l'algorithmezérofut découvert légèrement plus tôtpar Pollard[21].Ilproposa deprendreR=

F

p, oùp est un nombrepremier de laformep=s2r+1 (plus que s soitpetit, mieux que ça vaut). Pour de tels nombrespre- miers p, nous savons qu'il existe des racines primitives d'unité d'ordre 2r. Cettefois-ci encore, cela permet de choisir logp=O(logp)etl=O(n/logn), ce qui conduitàla mêmeborne de complexitépour M(n)que ci-dessus. Pour être toutà fait correct, ilfaut noter que cetteborne de com- plexité nefiguraitpas dans l'article de Pollard. Il étaitplus intéressépar un algorithmepratique et son article décrit plusieurs optimisations en ce sens. Pour de très grands nombres, son algorithme est toujours le meilleur sur les ordinateurs d'aujourd'hui[8].

Pour le«deuxième algorithme»de Schönhage–Strassen, nouspassons au systèmebinaire etprenonsR=ℤ/(2m+1)ℤ, oùm est unepuissance de deux. Dans cet anneau, nous avons par définition 2m= −1, de sorte que ω:=2 est une

racineprincipale d'unité d'ordre 2m. Un autre avantage est queωest une racine«rapide»de l'unité. Nous enten- donspar làque nouspouvons rapidement multiplierpar des puissances deω:il suffit de décaler lesbits du nombre en prenant soin d'utiliser la relation 2m−1 lorsque l'on dépasse 2m.Pourl∈{m,2m}Schönhage et Strassen montrent ensuite comment une multiplication dansℤ/(2lm/2+1)ℤse réduit àlmultiplications dansR. En écrivant Mʹ(m)pour le coût d'une multiplication dansR, cela donne

M'(l m/2)

l(m)+O(m llogl). (3)

Le termeO(mllogl)vient desDFTs, oùon utilise lefait que Tω=O(l)dansR.Le termelMʹ(m)vient de la multiplication

«interne»dans∏k=0l−1R[x]/(xωk)≅Rl.

Réexprimé enfonction den, l'inégalité (3) conduitgrosso modoàla relation

M'(n)

2n1/2(n1/2)+C nlogn, (4)

pour une certaine constanteC.Onpeut ensuite«dérouler» cetteformule:

Mʹ(n)

2n1/2(n1/2)+C nlogn

4n3/4(n1/4)+2C nlogn

8n7/8(n1/8)+3C nlogn

⋅⋅⋅ nlogn(O(1))+C nlognlog logn.

Celaprouve que M(n)=O(nlognlog logn), et cetteborne a tenupendant quarante-cinq ans.

Et ensuite?

Parmi les trois méthodes de 1971 que l'on vient de rap- peler, la dernièreprésente un inconvénient majeur: puisque l

2m, une multiplication de longueurnest«seulement» réduite à des multiplications de longueurO(√ )n au lieu deO(logn). En revanche, contrairement aux deux autres méthodes, lesDFTs ne coûtentpresque rien. Celafournit deuxpistes d'amélioration.

Unepremière option est de réduire les coûts desDFTs àcoefficients dansℂou

F

p. En 2007, Fürerfut lepremier a appliquer cette stratégie avec succès[5]. Sa méthode conduitàune inégalité de laforme

M(n)

nlogn

KMlog() +O(1), nʹ =O((logn)2)

et laborne suivantepour M(n): M(n) = O(nlognKlogn)

logx = min

{

k∈ ℕ :

(

log∘ . . .log

)

(x)

1

}

.

(7)

Fürer ne s'attardapas sur le« facteur d'expansion»K>1 précis. Depuis 2014,David Harvey,Grégoire Lecerf, et moi- même avonspufairebaisser cefacteur deplus enplus[13, 9,10,11] ;voir le tableau1.

Notre deuxième option consisteà réexaminer l'inéga- lité (4). Or le facteur 2 dans 2n1/2Mʹ(n1/2)est très exacte- ment compensépar lefait que logn= /12logn:en déroulant l'inégalité, chaque itération nécessite exactementC nlogn opérations supplémentaires.Si nouspouvions améliorer ne serait-ce que très légèrement cefacteur 2, le déroulement seferait ainsi:

M(n)

1.98n1/2M(n1/2)+C nlogn

1.982n3/4M(n1/4)+(1+0.99)C nlogn

1.983n7/8M(n1/8)+(1+0.99+0.992)C nlogn

⋅⋅⋅ o(nlogn)+100C nlogn.

Halte! Nous avonsbien lu?

M(n)=O(nlogn).

Avec cette nouvelle ligne de mire, nous allons pouvoir broder. Il suffitpar exemple deprouver que

M(n)

αn(d−1)/dM(n1/d)+O(nlogn), (5)

n

2 etα<1/d.

En routevers les dimensions supérieures

De fait, la méthode de Schönhage et Strassen présente un aspectfrustrant:la racine de l'unitéω=2 dansR, que nous avons créé artificiellement etàgrandfrais, est en réa- lité terriblement«sous-utilisée». Pour cette raison, notre réduction de longueurmnn'était que très modeste.

Or il existe aussi desDFTs quifonctionnent dansplu- sieurs directions.Supposonsànouveau queRest un anneau arbitraire avec une racine d'unitéωd'ordrel. UneDFTd- dimensionnelle effectue l'isomorphisme

R[x1,. . .,xd]/(x1l−1,. . .,xdl−1) Y ≅

0

k1,. . .,kd<lR[x1,. . .,xd]/(x1ω1

k1,. . .,xdωdkd)

Si nous remplaçons maintenant lesDFTs enx2,...,xdpar des DFTsàcoefficients dans l'anneauR[x1]/(x1l−1), ils coûte- rontbeaucoupmoins cher,puisquex1est une racine rapide de l'unité dans cet anneau. L'utilisation systématique de ce type deDFTs a d'abord étéproposéepar Nussbaumer et Quandalle[20].

Cette idée nous permet de faire un grand pas en direction de (5). Si n=ld, alors une multiplication dansR[x1,...,xd]/(x1l−1,...,xdl−1)nécessiteO(nlogn)addi- tions et soustractions dansRplusn(d−1)/d multiplications dansR[x1]/(x1l−1).

Il reste cependant unproblème de taille:la multiplica- tion rapide dansR[x1,. . .,xd]/(x1l−1,. . .,xdl−1)n'estpas la même chose que la multiplication rapide dansR[x]/(xld−1). Nous avons doncbesoin d'un moyen de transformer des cyclonômes en une variablexen cyclonômes enplusieurs variablesx1,. . .,xd.

Avecl'aide de la Chineancienne

Dans certains cas, il est en effet possible de changer de dimension. Supposons quel1,. . .,ldsoientpremiers entres eux. Selon le théorème des restes chinois, nous avons

ℤ/(l1⋅ ⋅ ⋅ld)ℤ ≅ ℤ/l1ℤ + ⋅ ⋅ ⋅ + ℤ/ldℤ.

Formellement, ceci donne également xℤ/(l1⋅ ⋅ ⋅ld)x1ℤ/l1× ⋅ ⋅ ⋅ ×xdℤ/ld.

Considérant ensuite des combinaisons linéaires, ceci nous amène enfinà

R[x]/(xl1⋅ ⋅ ⋅ld−1) ≅ R[x1,. . .,xd]/(x1l1−1,. . .,xdld−1). En relation avec lesDFTs, ceci a été remarquépour lapre- mière fois parGood [7]. Agarwal et Cooleyont ensuite utilisé cet isomorphismepour calculer des convolutions[1].

Cependant, nous avons maintenant un nouveaupro- blème:dans la sectionprécédente nous avionsbesoin d'un isomorphismepour lequel tous lesli étaient égaux. Mais notre isomorphisme ne marche que dans le cas oùl1,. . .,ld

sont au contrairepremiers entre eux...

Le dernier ingrédient qui nous manque est un moyen de modifier légèrement la longueur d'une DFT. Celaper- mettrait de réduire uneDFTd-dimensionnelle de longueur (l1,. . .,ld)en une autre de longueur (l,. . .,l). En utilisant une versiond-dimensionnelle de l'algorithme de Bluestein, une telleDFT se réduit ensuiteà une multiplication dans R[x1,...,xd]/(x1l−1,...,xdl−1).Et celapeutêtrefait efficace- mentàl'aide des racines rapides de l'unité.

Rééchantillonnage gaussien

Comment remplacer uneDFT de longueurspar uneDFT de longueurtlégèrement supérieure? Poury parvenir, nous supposonsà partir de maintenant queR= ℂ.

(8)

Considérons une DFT de longueurs. Dans la théorie du signal, l'entrée est vue comme une série d'échantillons d'un signal.Lafréquence d'échantillonnage estproportion- nelleà s. Est-ilpossible de reconstruire le signal original à partir de notre ensemble d'échantillons? Celapermet- trait deprendre un nouvel ensemble d'échantillons, avec unefréquence différente.

La manière laplus évidente de rendre un signal numé- rique analogique estpar convolution avec une gaussienne Gα(x)=e−αx2. Plusα estpetit,plus le signal analogique est lisse (mais moins net).Unepropriété utile est que la trans- formée de Fourier deGαestànouveau une gaussienne.

Traduisons ces idées en formules. Au lieu de cyclo- nômes de degrés, nous considérons maintenant leurs vec- teurs associésu∈ ℂsde coefficients. Nous convenons que uk+jsuk pour tout j∈ ℤ. Étant donné u∈ ℂs, on définit ℱs(u)∈ ℂspar

(ℱsu)k := X

0

k<suke

−2πijks.

Ceci est une variante de notre définitionprécédente d'une DFT (ici ω=e−2πi/s). Puis on définit deux applications linéaires𝒮,𝒯: ℂs→ ℂtpar

(𝒮u)k := α−1X

j∈ℤ

e−πα−2s2(ktjs)2uj

(𝒯u)k := X

j∈ℤ

e−πα2t2(ktjs)2uj.

Enfin, nous introduisons deuxpermutations𝒫s:ℂs→ℂset 𝒫t: ℂt→ ℂtpar

(𝒫su)j := utj (𝒫tu)k := u−sk.

Dans[12, Theorem4.2]nous montrons que le diagramme suivant commute:

s →→→→→→→→ss →→→→→→→→→→𝒫ss

𝒮

→←→ →←→𝒯

t →→→→→→→→tt →→→→→→→→→→𝒫tt

C'est ce que nous utilisonspour réduire le calcul de ℱsau calcul deℱt.

Puisquet>s, les matrices de𝒮et𝒯ne sontpas carrées.

Par construction, les éléments qui ne sontpas sur la dia- gonale diminuent rapidement. En effet, les gaussiennent déclinentàla vitesse de l'éclair loin du centre. En suppri- manttsdes lignesbien choisies de𝒯, il reste une matrice

× ℤ→←

Kronecker

× ℂ[x→←→] projection sans excès

× ℂ[x]/(x→←→L−1) restes chinois

× ℂ[x1,. . .,xd]/(x1l1→←−1,. . .,xdld−1)

multiplication FFT

DFT ℂ[x1,. . .,xd]/(x1l1→←−1,. . .,xdld−1)

rééchantillonnage gaussien

DFT ℂ[x1,. . .,xd]/(x1l→←→−1,. . .,xdlréduction de Bluestein1)

× ℂ[x1,. . .,xd]/(x1l→←→−1,. . .,xdl−1)FFT de Nussbaumer

× ℂ[x]/(xl−1)

Figure6. Représentation schématique des différentes réduc- tions dans le nouvel algorithme. Nous avons triché unpeu ici et là pourfaire simple.

presque diagonale.Cecipeutêtre utilisépour calculer rapi- dement𝒯−1𝒫tt𝒮.

Si l'on choisitα et laprécision de calcul avecprécau- tion, on montre queℱspeutêtre calculé ainsi avecpresque autant deprécision queℱt et que le temps de calcul de𝒮 et de𝒯−1est négligeablepar rapportàcelui deℱt.

Ceciparachève notre méthode et la démonstration que M(n)=O(nlogn). Lafigure6récapitule toutes les réduc- tions que nous avons utilisées.

Une variante de notre méthode de rééchantillonnage futpubliéepour lapremièrefois parDutt et Rokhlin[4].

Cette variante estplus générale etpermet de calculer des DFT quand échantillons des signaux sont irréguliers. En revanche, leur méthode nefonctionne quepour logs=O(α); de cefait, elle estjuste unpeu troplentepour notre appli- cation.

Et lesapplications?

D'unpoint de vuepratique, nous verrons...Mais lafonction M(n)est importantepour la théorie, afin de décrire avec précision les coûts de toutes sortes d'opérations arithmé- tiques.Ainsi la division de deux entiers de

nchiffresprend

O(M(n))=O(nlogn)opérations et le calcul d'unpgcd en prendO(M(n)logn)=O(nlog2n). Désormais, on sait calculer

(9)

nchiffres deπen tempsO(M(n)logn)=O(nlog2n).UneDFT complexe de longueurlnécessiteO(M(l p))opérations, si on calcule avecp

loglchiffres derrière la virgule[13].Cela détermine également les émissions minimales de CO2pour des gros calculs sur le rechauffement climatique. D'une certaine manière, la fonction M(n) comme«vitesse de l'arithmétique élémentaire» joue donc un rôle similaireà la vitesse de la lumièrecenphysique.

Existe-t-il desalgorithmes plus rapides? Nous l'ignorons!

Bibliographie

[1] R.Agarwal etJ.Cooley. Newalgorithmsfor digital convolution.

IEEE Transactions onAcoustics, Speech, andSignalProcessing, 25(5):392–410, 1977.

[2] Leo I.Bluestein.A linearfiltering approach to the computation of discrete Fourier transform. IEEE Transactions onAudio andElec- troacoustics, 18(4):451–455, 1970.

[3] J. W.CooleyetJ. W.Tukey.An algorithmfor the machine calcula- tion ofcomplex Fourier series.Math.Computat., 19:297–301, 1965.

[4] A. Dutt etV.Rokhlin.Fast Fourier transformsfor nonequispaced data.SIAMJ. Sci.Comput., 14(6):1368–1393, 1993.

[5] M.Fürer. Faster integer multiplication. DansProceedings of the Thirty-Ninth ACMSymposium onTheory ofComputing (STOC 2007), pages 57–66.SanDiego, California, 2007.

[6] C.F. Gauss.Nachlass:theoria interpolationis methodo nova trac- tata. DansWerke, volume 3,pages 265–330. KöniglicheGesellschaft derWissenschaſten,Göttingen, 1866.

[7] I. J. Good.The interaction algorithm andpractical Fourier analysis.

Journal of the RoyalStatisticalSociety, Series B.20(2):361–372, 1958.

[8] D.Harvey. Faster arithmeticfor number-theoretic transforms. J.

Symbolic Comput., 60:113–119, 2014.

[9] D.Harvey. Faster truncated integer multiplication. https://

arxiv.org/abs/1703.00640, 2017.

[10] D.HarveyetJ. van der Hoeven. Faster integer andpolynomial multiplication using cyclotomic coefficient rings.Technical Report, ArXiv, 2017.http://arxiv.org/abs/1712.03693.

[11] D.HarveyetJ.van der Hoeven.Faster integer multiplication using short lattice vectors. Dans R.Scheidler etJ.Sorenson, éditeurs, Proc.of the 13-th AlgorithmicNumberTheorySymposium, Open Book Series 2,pages 293–310.Mathematical Sciences Publishes, Berkeley, 2019.

[12] D.HarveyetJ.van der Hoeven. Integer multiplication in time O(nlogn).Annals ofMathematics, 193(2):563–617, 2021.

[13] D.Harvey,J.van der Hoeven, etG.Lecerf.Evenfaster integer mul- tiplication.Journal ofComplexity, 36:1–30, 2016.

[14] M.T.Heideman,D.H. Johnson, et C.S.Burrus. Gauss and the historyofthe FFT. IEEE Acoustics, SpeechandSignalProcessing Magazine, 1:14–21, oct 1984.

[15] J.van der Hoeven. Getallen vermenigvuldigen inO(nlogn)stappen.

Nieuw ArchiefvoorWiskunde, 21(1):55–60, 2020. Vijfde serie.

[16] J.van der Hoeven.TheJollyWriter. YourGuidetoGNU TeXmacs.

Scypress, 2020.

[17] A.A. Karatsuba. The complexityofcomputations. Proc. of the SteklovInst.ofMath., 211:169–183, 1995.English translation;Rus- sian original atpages 186–202.

[18] A. Karatsuba etJ.Ofman.Multiplication ofmultidigit numbers on automata.Soviet PhysicsDoklady, 7:595–596, 1963.

[19] D.E. Knuth.TheArtofComputerProgramming, volume 2:Seminu- merical Algorithms.Addison-Wesley, 1969.

[20] H. J.Nussbaumer et P. Quandalle. Computation ofconvolutions and discrete Fourier transformsby polynomial transforms.IBMJ.

Res. Develop., 22(2):134–144, 1978.

[21] J.M.Pollard.Thefast Fourier transform in afinitefield.Mathema- tics ofComputation, 25(114):365–374, 1971.

[22] A.Schönhage.Multiplikation großerZahlen.Computing, 1(3):182–196, 1966.

[23] A.Schönhage etV.Strassen.Schnelle Multiplikation großerZahlen.

Computing, 7:281–292, 1971.

[24] A.L.Toom.The complexityofa scheme of functional elements reali- zing the multiplication ofintegers.SovietMathematics,4(2):714–716, 1963.

Références

Documents relatifs

Multiplier plusieurs facteurs peut se faire dans n’importe quel

Par convention un nombre entier naturel positif n est appelé « puissant » si pour tout facteur premier p de n, p² divise

Combien de « mots » de quatre lettres peut-on former avec les lettres du mot

In Section 3 we will show how to use a multivariate generalisation of Bluestein’s algorithm [2] to reduce this DFT to a multiplication problem in a ring of the form (1.2).. DAVID

Définition 7-4 (Graphes squelettiques généraux). A tout squelette de base X on fait correspondre un graphe fini qui le représente et le détermine complètement. Si aucun objet

Cette proposition signifie donc que la forte associativité entraîne la complète associativité, mais l’inverse n’est pas vrai , comme le montre l’exemple

Soit C un graphe orienté (resp. un graphe multiplicatif, un graphe multiplicatif complètement associatif, une précatégorie, une catégorie) et soit A une partie pleine de C.. Alors

Elopak veut croquer SIG pour rivaliser avec Tetra Pak P.38 MACHINISMEAGRICOLE. Le