Algorithme de Karatsuba

1

Algorithme de Karatsuba
L'algorithme de Karatsuba (1960) est une méthode permettant de multiplier rapidement deux nombres avec une complexité en au lieu de pour la méthode naïve. Note : .

Énoncé
Pour multiplier deux nombres de n chiffres, la méthode naïve multiplie chaque chiffre du multiplicateur par chaque chiffre du multiplicande. Cela exige donc n2 produits de deux chiffres. Le temps de calcul est en O(n2). En 1960, Karatsuba remarque que le calcul de (a × 10k + b)(c × 10k + d) qui, sous forme développée ac × 102k + (ad + bc) × 10k + bd, semble nécessiter les quatre produits ac, ad, bc et bd, peut en fait être effectué seulement avec les trois produits ac, bd et (a – b)(c – d) en regroupant les calculs sous la forme suivante : (a × 10k + b)(c × 10k + d) = ac × 102k + (ac + bd – (a – b)(c – d)) × 10k + bd Ainsi, pour calculer 26 × 34, on calcule 2×3=6 6 × 4 = 24 (2 – 6) × (3 – 4) = 4 Le résultat final est alors 6 × 100 + (6 + 24 – 4) × 10 + 24 = 600 + 260 + 24 = 884. La multiplication par la base de numération (10 dans l'exemple précédent mais en binaire pour les machines) qui correspond à un décalage de chiffre, et les additions sont peu coûteuses en temps. Pour de grands nombres, la méthode peut être appliquée de manière récursive pour les calculs de ac, bd et (a – b)(c – d) en scindant à nouveau a, b, c et d en deux et ainsi de suite.

Exemple
Ainsi, 12378456 × 25874215 est calculé, en prenant une base 10000, comme suit : 1237 × 2587 8456 × 4215 (1237 – 8456) × (2587 – 4215) = 7219 × 1628 Le produit 1237 × 2587 est lui-même calculé, en prenant une base 100, comme suit : 12 × 25 37 × 87 (12 – 37) × (25 – 87) = 25 × 62 Le produit 12 × 25 est calculé, en prenant une base 10, au moyen de : 1×2=2 2 × 5 = 10 (1 – 2) × (2 – 5) = 1 × 3 = 3 pour obtenir 12 × 25 = 2 × 100 + (2 + 10 – 3) × 10 + 10 = 300. On obtient de même : 12 × 25 = 300 37 × 87 = 3219 25 × 62 = 1550 d'où 1237 × 2587 = 300 × 1002 + (300 + 3219 – 1550) × 100 + 3219 = 3000000 + 196900 + 3219 = 3200119. On procède de même pour les produits 8456 × 4215 et 7219 × 1628, obtenant finalement : 1237 × 2587 = 3200119

révèle toute sa puissance pour une machine devant effectuer le produit de grands nombres. est de l'ordre de 50 000 alors que n2 = 1 000 000. ru/ personal/ karatsuba/ divcen. enfin : 12378456 × 25874215 = 3200119 × 100002 + (3200119 + 35642040 – 11752532) × 10000 + 35652040 = 320011900000000 + 270896270000 + 35642040 = 320282831912040 Le calcul complet ne demande que 27 produits de deux chiffres au lieu de 64 par la méthode usuelle.Algorithme de Karatsuba 8456 × 4215 = 35642040 7219 × 1628 = 11752532 D'où. • Karatsuba Multiplication on Fast Algorithms and the FEE [1] Références [1] http:/ / www. ccas. Inst.-verarb. E. 595–596. 724 pp. Karatsuba and Yu Ofman. L'algorithme de Toom-Cook est une amélioration de cette méthode. 211. en découpant les nombres en r blocs (au lieu de 2). Kybernetik. 186–202 (1995). Reading (1969). Pour n = 1000. The art of computer programming.. translation from Trudy Mat. Le temps de calcul en O(n2) par la méthode naïve passe alors en O(n1+ε) où ε est un réel positif arbitraire.2. Berechnungen und die Kompliziertheit von Beziehungen (German) // Elektron. htm . Doklady Akad. A. Nauk SSSR Vol. The complexity of computations // Proc. Math. pp. Multiplication of Many-Digital Numbers by Automatic Computers.. Steklov Inst. On obtient alors un algorithme dit de multiplication rapide de deux nombres de n chiffres en opérations élémentaires (tels que produit ou somme de deux chiffres) au lieu de n2. 145 (1962). v. Translation in Physics-Doklady 7 (1963). 169–183 (1995).Co. • Karatsuba A. Steklova. cette méthode. • Knuth D. 11. 293–294.. pp. Inform. Addison-Wesley Publ. fastidieuse à la main. 211. • Karacuba A. 603–606 (1975). A. Bien entendu. 2 Références • A.

Haypo.org/w/index. Anne Bauval. Zetud.0 Unported http:/ / creativecommons. Cantons-de-l'Est. org/ licenses/ by-sa/ 3. Verdy p.wikipedia. Jarod42. Theon.php?oldid=59408676  Contributeurs: (:Julien:). Valvino. Pini. Ce`dric. Parerga. 0/ .Sources et contributeurs de l’article 3 Sources et contributeurs de l’article Algorithme de Karatsuba  Source: http://fr. 14 modifications anonymes Licence Creative Commons Attribution-Share Alike 3.