Vous êtes sur la page 1sur 3

Algorithme de Karatsuba

Algorithme de Karatsuba
L'algorithme de Karatsuba (1960) est une mthode permettant de multiplier rapidement deux nombres avec une complexit en au lieu de pour la mthode nave. Note : .

nonc
Pour multiplier deux nombres de n chiffres, la mthode nave 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 dveloppe ac 102k + (ad + bc) 10k + bd, semble ncessiter 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 23=6 6 4 = 24 (2 6) (3 4) = 4 Le rsultat final est alors 6 100 + (6 + 24 4) 10 + 24 = 600 + 260 + 24 = 884. La multiplication par la base de numration (10 dans l'exemple prcdent mais en binaire pour les machines) qui correspond un dcalage de chiffre, et les additions sont peu coteuses en temps. Pour de grands nombres, la mthode peut tre applique de manire rcursive 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-mme 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 : 12=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 mme : 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 procde de mme pour les produits 8456 4215 et 7219 1628, obtenant finalement : 1237 2587 = 3200119

Algorithme de Karatsuba 8456 4215 = 35642040 7219 1628 = 11752532 D'o, 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 mthode usuelle. Bien entendu, cette mthode, fastidieuse la main, rvle toute sa puissance pour une machine devant effectuer le produit de grands nombres. On obtient alors un algorithme dit de multiplication rapide de deux nombres de n chiffres en oprations lmentaires (tels que produit ou somme de deux chiffres) au lieu de n2. Pour n = 1000, est de l'ordre de 50 000 alors que n2 = 1 000 000. L'algorithme de Toom-Cook est une amlioration de cette mthode, en dcoupant les nombres en r blocs (au lieu de 2). Le temps de calcul en O(n2) par la mthode nave passe alors en O(n1+) o est un rel positif arbitraire.

Rfrences
A. Karatsuba and Yu Ofman, Multiplication of Many-Digital Numbers by Automatic Computers. Doklady Akad. Nauk SSSR Vol. 145 (1962), pp. 293294. Translation in Physics-Doklady 7 (1963), pp. 595596. Karacuba A. A. Berechnungen und die Kompliziertheit von Beziehungen (German) // Elektron. Inform.-verarb. Kybernetik, 11, 603606 (1975). Karatsuba A. A. The complexity of computations // Proc. Steklov Inst. Math., 211, 169183 (1995); translation from Trudy Mat. Inst. Steklova, 211, 186202 (1995). Knuth D. E. The art of computer programming. v.2. Addison-Wesley Publ.Co., 724 pp., Reading (1969). Karatsuba Multiplication on Fast Algorithms and the FEE [1]

Rfrences
[1] http:/ / www. ccas. ru/ personal/ karatsuba/ divcen. htm

Sources et contributeurs de larticle

Sources et contributeurs de larticle


Algorithme de Karatsuba Source: http://fr.wikipedia.org/w/index.php?oldid=59408676 Contributeurs: (:Julien:), Anne Bauval, Cantons-de-l'Est, Ce`dric, Haypo, Jarod42, Parerga, Pini, Theon, Valvino, Verdy p, Zetud, 14 modifications anonymes

Licence
Creative Commons Attribution-Share Alike 3.0 Unported http:/ / creativecommons. org/ licenses/ by-sa/ 3. 0/

Vous aimerez peut-être aussi