Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
168,83 KB
Nội dung
Arithmetic I Fast Multiplication and the Master Theorem on Divide and Conquer How fast can we multiply? • Adding two n-bit numbers takes O(n) operations • How many operations to multiply two n-bit numbers? • Or two n-decimal-digit numbers – Difference is a factor of log210 ≈ 3.32 but the individual operations are harder Grade School Algorithm is Θ(n2) • But answer is only O(n) bits: Can we better? A Divide and Conquer Algorithm • Suppose n is even, n = 2m • To compute a∙b • Write a = a1∙2m + a0, b = b1∙2m + b0, where a1, a0, b1, b0 are m-bit numbers (numbers < 2m) – the first and last m bits of a and b a∙b = a1b1∙22m + (a1b0+a0b1)∙2m + a0b0 = a1b1∙(22m+2m) + (a1-a0)(b0-b1)∙2m + a0b0∙(2m+1) Only m-bit multiplications!!! How Fast? • T(1)=1 • T(n) = 3T(n/2) + cn • But how to solve this? Master Theorem on D+C recurrences • • • • T(1) = T(n) = aT(n/b) + cne Let L = logba Recurrence has the solution: T(n) = Θ(ne) if e > L T(n) = Θ(ne log n) if e = L T(n) = Θ(nL) if e < L • • • • Binary search: a=1, b=2, e=0, L=0 [Case 2] Merge sort: a=2, b=2, e=1, L=1 [Case 2] Ordinary mult: a=4, b=2, e=1, L=2 [Case 3] Fast mult: a=3, b=2, e=1, L=lg so Θ(n 1.58…) [Case 3] II: Fast Exponentiation Compute 313: 313 = 3∙3∙3∙3∙3∙3∙3∙3∙3∙3∙3∙3∙3 (12 multiplications, or Θ(exponent)) 313 = 36∙36∙3 (2 multiplications) 36 = 33∙33 (1 multiplication) 33 can be computed with multiplications So 2+1+2 = multiplications in all! lec 4F.8 Fast Exponentiation compute ab using registers X,Y,Z,R X:= a; Y:= 1; REPEAT: Z:= b; if Z=0, then return Y R:= remdr(Z,2); Z:= quotnt(Z,2) if R=1,then Y:= X⋅Y X:= X2 lec 4F.9 Powers by Repeated Squaring • Problem: compute ab • Method 1: multiply a by itself n-1 times – Requires n-1 multiplications • Method 2: use successive squaring – How many times can you divide n by before it is reduced to 1? – Repeated squaring requires between log2n and 2∙log2n multiplications – Huge savings! n = 1000 => at most 20 multiplications! (since log21000 < 10) February 28, 2007 Harvard Bits 10 III Modular arithmetic 6 + = (mod 8) February 28, 2007 11 Math Quiz 2x6 = mod 11 2x6x5 =5 mod 11 23 = 2300 = 1 mod mod = (23)100 = 1100 = February 28, 2007 12 (mod p) notation • Think of the (mod p) at the end of the line as referring to everything in the equation • (23)100 = 1100 = (mod 7) means “(23)100 , 1100 , and are all equivalent if you divide by and keep just the remainder” Often written a ≡ b (mod p) February 28, 2007 Harvard Bits 13 Fast Modular Exponentiation • Problem: Given q and p and n, find y < p such that qn = y (mod p) • Method 1: multiply q by itself n-1 times – Requires n-1 multiplications • Method 2: use successive squaring – Requires about log2n multiplications • Same idea works for multiplication modulo p • Example: If n is a 500-digit number, we can compute qn (mod p) in about 1700 (= lg 10500) steps February 28, 2007 Harvard Bits 14 FINIS ... n-1 multiplications • Method 2: use successive squaring – How many times can you divide n by before it is reduced to 1? – Repeated squaring requires between log2n and 2∙log2n multiplications... at most 20 multiplications! (since log21000 < 10) February 28, 2007 Harvard Bits 10 III Modular arithmetic 6 + = (mod 8) February 28, 2007 11 Math Quiz 2x6 = mod 11 2x6x5 =5 mod 11 23 = 2300 =... multiplications • Method 2: use successive squaring – Requires about log2n multiplications • Same idea works for multiplication modulo p • Example: If n is a 500-digit number, we can compute qn (mod p) in