Comment multiplier les très grands nombres entiers ?

Dossier : Nouvelles du PlatâlMagazine N°746 Juin 2019Par Joris Van Der Hoeven

JR : Vous venez de vous faire remar­quer par la com­mu­nau­té scien­ti­fique inter­na­tio­nale pour votre publi­ca­tion, avec David Har­vey de l’Uni­ver­si­té de Nou­velle-Galles du Sud, d’une méthode révo­lu­tion­naire pour mul­ti­plier de très grands nombres entiers. Mais où est la nou­veau­té ? On ne savait pas faire de multiplications ?

Des algorithmes en progrès continus

Si, bien sûr ! Mais les algo­rithmes de mul­ti­pli­ca­tion n’ont pas ces­sé de pro­gres­ser. Il y a eu d’abord la méthode que nous appre­nons tous à l’école pri­maire, qui remonte aux Baby­lo­niens. Cet algo­rithme simple a une com­plexi­té en N² : c’est-à-dire que si vous pre­nez un très grand nombre, met­tons avec 1 mil­liard de chiffres (vous pou­vez tout à fait sto­cker un nombre aus­si grand que ça dans votre smart­phone !), et que vous le mul­ti­pliez par lui-même, cela fera 1018 opé­ra­tions. Même avec un cal­cu­la­teur hyper­ra­pide, à rai­son d’une nano­se­conde par opé­ra­tion, cela fera tout de même 109 secondes, soit envi­ron trente ans… On voit tout de suite qu’il faut s’y prendre autrement.

C’est dans les années 50 qu’un Russe, Ana­to­li Karat­sou­ba, a mis au point un algo­rithme beau­coup plus rapide, qui per­met de mul­ti­plier des nombres assez grands. Cet algo­rithme est encore cou­ram­ment uti­li­sé aujourd’hui pour des nombres entre 100 et 1 000 chiffres, par exemple dans les opé­ra­tions de cryp­to­lo­gie. Sa com­plexi­té est de Nlog3/log2, soit N1,58….

Rééchantillonnage gaussien
Illus­tra­tion de la tech­nique de « rééchan­tillon­nage gaus­sien », qui est un des ingré­dients essen­tiels pour le nou­vel algorithme.

Traiter des nombres au-delà du millier de chiffres

Puis sont venues les méthodes modernes, basées sur la trans­for­ma­tion de Fou­rier rapide (FFT), inven­tées indé­pen­dam­ment par Pol­lard et Schön­hage-Stras­sen en 1971, qui per­mettent de trai­ter des nombres au-delà du mil­lier de chiffres. À l’époque, Schön­hage et Stras­sen ont conjec­tu­ré qu’on pour­rait trou­ver un algo­rithme encore plus rapide, avec une com­plexi­té en N Log N. C’est de cet algo­rithme que nous venons de prou­ver l’existence, avec mon col­lègue David Har­vey. Nous en avons prou­vé l’existence, et nous en avons don­né une des­crip­tion expli­cite. Peut-on encore faire mieux et aller plus vite ? À vrai dire, on ne sait pas, mais je pense qu’on ne pour­ra pas. J’en serais en tout cas très éton­né, même si je ne peux pas prou­ver que c’est pos­sible. Mais il serait tout aus­si dif­fi­cile de prou­ver que ce n’est pas pos­sible !… C’est une vieille dif­fi­cul­té bien connue des mathé­ma­ti­ciens : dans un pro­blème don­né, on prouve faci­le­ment qu’on a une borne supé­rieure, mais il est tou­jours beau­coup plus dif­fi­cile de prou­ver qu’il existe une borne inférieure.

A multiplication complexe algorithme complexe

On voit bien que la ques­tion sous-jacente est celle de la com­plexi­té des algo­rithmes : beau­coup de ces com­plexi­tés d’algorithmes s’expriment en fonc­tion de la com­plexi­té de la mul­ti­pli­ca­tion. Par exemple, la com­plexi­té d’un algo­rithme pour cal­cu­ler la Nème déci­male de π est log N fois la com­plexi­té de la mul­ti­pli­ca­tion, c’est-à-dire
N (Log N)², avec notre nou­vel algo­rithme. La mul­ti­pli­ca­tion des entiers joue un peu en infor­ma­tique le rôle de la vitesse de la lumière en physique.

Pour­ra-t-on appli­quer cet algo­rithme ? Ce ne sera pas chose facile, en tout cas pas avec la des­crip­tion que nous en avons don­née. Mais nous avons uti­li­sé pour notre recherche tout un tas de tech­niques inté­res­santes en soi, qui pour­ront être uti­le­ment réuti­li­sées pour amé­lio­rer les algo­rithmes exis­tants, y com­pris pour des nombres de quelques mil­liards de chiffres. Au-delà, il existe encore beau­coup d’autres types d’algorithmes sur les­quels il y a des choses à trou­ver, ceux qui inter­viennent par exemple dans les cal­culs de la divi­sion, de PGCD, de cal­cul sur les poly­nômes, etc.


Pro­pos recueillis par Robert Ran­quet (72)

Poster un commentaire