Download presentation
Presentation is loading. Please wait.
1
Applied Symbolic Computation
September 4, 1997 Applied Symbolic Computation (CS 567) Karatsuba’s Algorithm for Integer Multiplication Jeremy R. Johnson Applied Symbolic Computation
2
Applied Symbolic Computation
September 4, 1997 Introduction Objective: To derive a family of asymptotically fast integer multiplication algorithms using polynomial interpolation Karatsuba’s Algorithm Polynomial algebra Interpolation Vandermonde Matrices Toom-Cook algorithm Polynomial multiplication using interpolation Faster algorithms for integer multiplication References: Lipson, Cormen et al. Applied Symbolic Computation
3
Karatsuba’s Algorithm
September 4, 1997 Karatsuba’s Algorithm Using the classical pen and paper algorithm two n digit integers can be multiplied in O(n2) operations. Karatsuba came up with a faster algorithm. Let A and B be two integers with A = A110k + A0, A0 < 10k B = B110k + B0, B0 < 10k C = A*B = (A110k + A0)(B110k + B0) = A1B1102k + (A1B0 + A0 B1)10k + A0B0 Instead this can be computed with 3 multiplications T0 = A0B0 T1 = (A1 + A0)(B1 + B0) T2 = A1B1 C = T2102k + (T1 - T0 - T2)10k + T0 Applied Symbolic Computation
4
Complexity of Karatsuba’s Algorithm
September 4, 1997 Complexity of Karatsuba’s Algorithm Let T(n) be the time to compute the product of two n-digit numbers using Karatsuba’s algorithm. Assume n = 2k. T(n) = (nlg(3)), lg(3) 1.58 T(n) 3T(n/2) + cn 3(3T(n/4) + c(n/2)) + cn = 32T(n/22) + cn(3/2 + 1) 32(3T(n/23) + c(n/4)) + cn(3/2 + 1) = 33T(n/23) + cn(32/22 + 3/2 + 1) … 3iT(n/2i) + cn(3i-1/2i-1 + … + 3/2 + 1) ... 3kT(1) + cn(3k-1/2k-1 + … + 3/2 + 1) cn[((3/2)k - 1)/(3/2 -1)] + c3k = 2c(3k - 2k) + c3k 3c3lg(n) = 3cnlg(3) Applied Symbolic Computation
5
Divide & Conquer Recurrence
September 4, 1997 Divide & Conquer Recurrence Assume T(n) = aT(n/b) + (n) T(n) = (n) [a < b] T(n) = (nlog(n)) [a = b] T(n) = (nlogb(a)) [a > b] Applied Symbolic Computation
6
Applied Symbolic Computation
September 4, 1997 Polynomial Algebra Let F[x] denote the set of polynomials in the variable x whose coefficients are in the field F. F[x] becomes an algebra where +, * are defined by polynomial addition and multiplication. Applied Symbolic Computation
7
Applied Symbolic Computation
September 4, 1997 Interpolation A polynomial of degree n is uniquely determined by its value at (n+1) distinct points. Theorem: Let A(x) and B(x) be polynomials of degree m. If A(i) = B(i) for i = 0,…,m, then A(x) = B(x). Proof. Recall that a polynomial of degree m has m roots. A(x) = Q(x)(x- ) + A(), if A() = 0, A(x) = Q(x)(x- ), and deg(Q) = m-1 Consider the polynomial C(x) = A(x) - B(x). Since C(i) = A(i) - B(i) = 0, for m+1 points, C(x) = 0, and A(x) must equal B(x). Applied Symbolic Computation
8
Lagrange Interpolation Formula
September 4, 1997 Lagrange Interpolation Formula Find a polynomial of degree m given its value at (m+1) distinct points. Assume A(i) = yi Observe that Applied Symbolic Computation
9
Matrix Version of Polynomial Evaluation
September 4, 1997 Matrix Version of Polynomial Evaluation Let A(x) = a3x3 + a2x2 + a1x + a0 Evaluation at the points , , , is obtained from the following matrix-vector product Applied Symbolic Computation
10
Matrix Interpretation of Interpolation
September 4, 1997 Matrix Interpretation of Interpolation Let A(x) = anxn + … + a1x +a0 be a polynomial of degree n. The problem of determining the (n+1) coefficients an,…,a1,a0 from the (n+1) values A(0),…,A(n) is equivalent to solving the linear system Applied Symbolic Computation
11
Applied Symbolic Computation
September 4, 1997 Vandermonde Matrix V(0,…, n) is non-singular when 0,…, n are distinct. Applied Symbolic Computation
12
Polynomial Multiplication using Interpolation
September 4, 1997 Polynomial Multiplication using Interpolation Compute C(x) = A(x)B(x), where degree(A(x)) = m, and degree(B(x)) = n. Degree(C(x)) = m+n, and C(x) is uniquely determined by its value at m+n+1 distinct points. [Evaluation] Compute A(i) and B(i) for distinct i, i=0,…,m+n. [Pointwise Product] Compute C(i) = A(i)*B(i) for i=0,…,m+n. [Interpolation] Compute the coefficients of C(x) = cnxm+n + … + c1x +c0 from the points C(i) = A(i)*B(i) for i=0,…,m+n. Applied Symbolic Computation
13
Interpolation and Karatsuba’s Algorithm
September 4, 1997 Interpolation and Karatsuba’s Algorithm Let A(x) = A1x + A0, B(x) = B1x + B0, C(x) = A(x)B(x) = C2x2 + C1x + C0 Then A(10k) = A, B(10k) = B, and C = C(10k) = A(10k)B(10k) = AB Use interpolation based algorithm: Evaluate A(), A(), A() and B(), B(), B() for = 0, = 1, and =. Compute C() = A()B(), C() = A() B(), C() = A()B() Interpolate the coefficients C2, C1, and C0 Compute C = C2102k + C110k + C0 Applied Symbolic Computation
14
Matrix Equation for Karatsuba’s Algorithm
September 4, 1997 Matrix Equation for Karatsuba’s Algorithm Modified Vandermonde Matrix Interpolation Applied Symbolic Computation
15
Integer Multiplication Splitting the Inputs into 3 Parts
September 4, 1997 Integer Multiplication Splitting the Inputs into 3 Parts Instead of breaking up the inputs into 2 equal parts as is done for Karatsuba’s algorithm, we can split the inputs into three equal parts. This algorithm is based on an interpolation based polynomial product of two quadratic polynomials. Let A(x) = A2x2 + A1x + A0, B(x) = B2x2 + B1x + B, C(x) = A(x)B(x) = C4x4 + C3x3 + C2x2 + C1x + C0 Thus there are 5 products. The divide and conquer part still takes time = O(n). Therefore the total computing time T(n) = 5T(n/3) + O(n) = (nlog3(5)), log3(5) 1.46 Applied Symbolic Computation
16
Asymptotically Fast Integer Multiplication
September 4, 1997 Asymptotically Fast Integer Multiplication We can obtain a sequence of asymptotically faster multiplication algorithms by splitting the inputs into more and more pieces. If we split A and B into k equal parts, then the corresponding multiplication algorithm is obtained from an interpolation based polynomial multiplication algorithm of two degree (k-1) polynomials. Since the product polynomial is of degree 2(k-1), we need to evaluate at 2k-1 points. Thus there are (2k-1) products. The divide and conquer part still takes time = O(n). Therefore the total computing time T(n) = (2k-1)T(n/k) + O(n) = (nlogk(2k-1)). Applied Symbolic Computation
17
Asymptotically Fast Integer Multiplication
September 4, 1997 Asymptotically Fast Integer Multiplication Using the previous construction we can find an algorithm to multiply two n digit integers in time (n1+ ) for any positive . logk(2k-1) = logk(k(2-1/k)) = 1 + logk(2-1/k) logk(2-1/k) logk(2) = ln(2)/ln(k) 0. Can we do better? The answer is yes. There is a faster algorithm, with computing time (nlog(n)loglog(n)), based on the fast Fourier transform (FFT). This algorithm is also based on interpolation and the polynomial version of the CRT. Applied Symbolic Computation
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.