Algorithme Toom-Cook
L'algorithme Toom-Cook, parfois appelé Toom-3, est un algorithme de multiplication dû à Andrei Toom (en) et Stephen Cook, utilisé pour multiplier deux grands nombres. Ces grands nombres sont découpés en plus petits nombres sur lesquels on effectuera les calculs. C'est un raffinement de l'algorithme de Karatsuba. L'algorithme est basé sur le paradigme diviser pour régner où on divise les écritures des nombres en k parties. Toom-3 est l'algorithme Took-Cook pour k = 3.
Description
Multiplier deux nombres revient à multiplier deux polynômes
et
ce qui donne un troisième polynôme
En évaluant en cinq points distincts
on détermine ses coefficients via une interpolation
Ce calcul nécessite cinq multiplications trois fois plus simples et quelques additions
La complexité est donc
- .
Références
- (ru) Andrei Toom, « О сложности схемы из функциональных элементов, реализующей умножение целых чисел »(Archive • Wikiwix • Archive.is • Google • Que faire ?), Доклады Академии Наук СССР, T. 150, no 3, 1963, p. 496-498, (en) « The Complexity of a Scheme of Functional Elements Realizing the Multiplication of Integers »(Archive • Wikiwix • Archive.is • Google • Que faire ?), p. 714-716
- (en) Donald Knuth, The Art of Computer Programming, Vol. 2, 3e éd. , Addison-Wesley, 1997
- (en) Richard Crandall, Carl Pomerance, Prime Numbers - A Computational Perspective, 2e éd. , Springer, 2005
- (en) Toom 3-Way Multiplication, documentation de GMP
- Arithmétique et théorie des nombres
- Portail de l'informatique théorique