Sunteți pe pagina 1din 3

Despre o tehnic de nmulire rapid a numerelor ntregi de mai multe cifre

Inst. Marian Ciuperceanu, Colegiul Naional Fraii Buzeti-Craiova

Presupunem c avem de efectuat produsul a dou numere formate fiecare din dou cifre: A = ab i B = cd . Folosind scrierea n baza 10 a celor dou numere, avem:
A B = (10 a + b ) (10 c + d ) = 100 a c + 10 ( a d + b c ) + b d

Dac facem nmulirea n scris, de exemplu pentru A=28 i B=73, avem:

Tabelul urmtor ilustreaz modul n care s-a calculat produsul anterior: Puterile lui 10 A B nmulim toate cifrele lui A cu cifra unitilor lui B nmulim toate cifrele lui A cu cifra zecilor lui B Adunm pe coloane produsele intermediare de pe ultimele dou linii Calculm rezultatul final, pstrnd cifra unitilor i innd minte ceea ce rmne 1 2 7 6 14 14 2 0 56 62 4 24 4 0 8 3 24

Observm c pentru calcularea produsului a dou numere formate din cte 2 cifre este nevoie s facem 4 nmuliri de numere de o cifr i 3 adunri. Dac dorim n continuare s nmulim dou numere formate fiecare din cte 3 cifre: A = abc i B = cde , atunci folosind descompunerea lor n baza 10 vom avea:
A B = (100 a + 10 b + c ) (100 d + 10 e + f ) = = 10000 a d + 1000 ( a e + c d + b d ) + 100( a f + b e ) + 10 ( b f + c e ) + c f

i constatm din nou c este nevoie de efectuarea a 9 nmuliri i a unui numr de adunri. n general, dac trebuie s facem produsul a dou numere de cte n cifre fiecare, este nevoie de n 2 nmuliri i un numr de adunri. Vom aminti, n cele ce urmeaz, o alt modalitate de a nmuli 2 numere de cte n cifre fiecare. Ideea de baz este de a se micora numrul de nmuliri, n scopul scderii complexitii operaiei. Fie, n general, dou numere scrise n baza X (n prezent se folosete baza 10, dar se pare c n antichitate se foloseau i altele):

B( X ) = b0 + b1 X + b2 X 2 + ..... + bn 1 X n 1

A( X ) = a 0 + a1 X + a 2 X 2 + ..... + a n 1 X n 1

Produsul celor dou numere A (X) B (X) = P (X) este polinomul


P ( X ) = p 0 + p1 X + p 2 X 2 + ..... + p 2 n 2 X 2 n 2

Dar fcnd efectiv produsul celor dou numere obinem: A( X ) B ( X ) = a 0 b0 + ( a 0 b1 + a1 b0 ) X + ( a 0 b2 + a1 b1 + a 2 b0 ) X 2 + ... + a n 1 bn 1 X 2 n 2 Egalnd n ultimele dou relaii coeficienii diferitelor puteri ale lui X, obinem :
p 0 = a 0 b0

p1 = a 0 b1 + a1 b0 p 2 = a 0 b2 + a1 b1 + a 2 b0

p 2 n 2 = a n 1 bn 1

Astfel, nmulirea a 2 numere mari A i B revine la a calcula termenii p 0, , p2n-2, la rndul lor obinui prin produse de cifre i adunri. n 1962, Karatsuba a descoperit o metod de a reduce numrul de calcule n cazul nmulirii a dou numere. Pentru simplitate, vom considera produsul a dou numere formate fiecare din cte 2 cifre: A = a1 a 0 i B =b1b0 . Produsul P (X) = A (X) B (X) este: P( X ) = a 0 b0 + ( a 0 b1 + a1 b0 ) X + a1 b1 X 2 unde:
p 0 = a 0 b0

p1 = a 0 b1 + a1 b0

p 2 = a1 b1

Ideea lui Karatsuba a fost de a face notaiile:


q1 = ( a 0 + a1 ) ( b0 + b1 )
q 2 = a1 b1
q 0 = a 0 b0

din care rezult:

p0 = q0 p1 = q1 q 0 q 2

p2 = q2

Este evident c pentru a face produsul a dou numere de cte dou cifre utilizm, n acest caz, 3 nmuliri : a0b0, a1b1 i (a0+a1)(b0+b1) n loc de 4, cte am fi fcut la o nmulire obinuit. Preul pltit pentru reducerea numrului de nmuliri l reprezint apariia operaiilor de scdere pe lng cele de adunare cu care eram obinuii. Revenind la exemplul de nmulire de la nceput, pentru a face produsul 2873 sunt necesare calculele: 27=14, 83=24, (2+8)(7+3)=1010=100 i-n felul acesta:
28 73 = 2 7 100 + [ ( 2 + 8) ( 7 + 3) 2 7 8 3] 10 + 8 3 = = 14 100 + (100 14 24 ) 10 + 24 = 1400 + 620 + 24 = 2044

rezultat gsit anterior prin nmulire obinuit, fcut la coal n clasele primare.

S extindem aceast tehnic la efectuarea produsului a 2 numere A i B, fiecare de cte n cifre. mprim numrul ntreg A n dou buci C i D, fiecare de cte n/2 cifre, iar numrul ntreg B n dou buci E i F, tot de cte n/2 cifre .Presupunem n ca fiind o putere a lui 2, caz n care mprirea n dou a numerelor se face fr probleme la fiecare pas, pn se ajunge la numere de o singur cifr, care se nmulesc direct. Atunci, se poate scrie: Pentru a calcula produsul AB avem nevoie de 4 produse pariale, de 3 adunri i de 2 nmuliri cu puteri ale lui 10. Definind produsul:
G = ( C + D ) ( E + F ) = CE + DF + ( CF + DE )
n
n n n n 2 2 2 A B = C 10 + D E 10 + F = C E 10 +(C F + D E ) 10 + D F

putem scrie:
A B = C E 10 n + ( G C E D F ) 10 2 + D F

variant n care folosim doar 3 nmuliri i chiar dac avem nevoie de un numr de 6 adunri i scderi i 2 nmuliri cu puteri ale lui 10, complexitatea calculului se reduce. Pentru n = 4, vom da un nou exemplu de aplicare a acestei tehnici: 1022 4510 = 4609220.
1022 4510 = 10 45 10 2 + 2 + [ (10 + 22 ) ( 45 + 10 ) 10 45 22 10] 10 2 + 22 10 = = 450 10 4 +1090 10 2 + 220 = 4609220

Procedeul continu pn cnd se ajunge la nmuliri de dimensiuni elementare: n=1. Soluiile problemelor de dimensiuni elementare sunt combinate pentru a obine soluiile subproblemelor de dimensiuni mai mari, inclusiv a problemei (de nmulire ) iniiale. Aceast metod de a descompune o problem n mai multe subprobleme (de dimensiuni mai mici i implicit mai uor de soluionat) ce trebuie rezolvate la rndul lor i de a gsi soluia problemei iniiale combinnd soluiile subproblemelor este numit Divide et Impera (dup spusele lui Iulius Cezar, conform crora adversarii trebuie mprii i divizai de luptele dintre ei, fiind astfel mult mai uor de controlat i nvins).

Bibliografie: 1. D.E. Knuth, The Art of Computer Programming, Volume 2 Seminumerical Algorithms, Readings, Edition Addison-Wesley, 1981 2. http://en.wikipedia.org/wiki/karatsuba_algorithm

S-ar putea să vă placă și