SlideShare a Scribd company logo
1 of 46
Download to read offline
Recursion tree method
Solve
22
T(n) = 2 ⋅ T(n/2) + Θ(n)
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
⋮
inputs of length n
inputs of length n/2
inputs of length n/4
base case: input n=1
T(1) T(1) ……….
Recursion tree method — TopHat Question 2
Solve
23
T(n) = 2 ⋅ T(n/2) + Θ(n)
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
⋮
Question. How many layers?
A. constant
B. log2 n
C. log4 n
D. n
E. n2
T(1) T(1) ……….
Recursion tree method — TopHat Question 3
Solve
24
T(n) = 2 ⋅ T(n/2) + Θ(n)
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
⋮
Question. How many leaves?
A. constant
B. log2 n
C. log4 n
D. n
E. n2
T(1) T(1) ……….
Recursion tree method
Solve
25
T(n) = 2 ⋅ T(n/2) + Θ(n)
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
⋮
inputs of length n
inputs of length n/2
inputs of length n/4
base case: input n=1
log 2 n
#leaves = n
T(1) T(1) ……….
Recursion tree method — analysis idea
• charge each operation to the function call (i.e. tree node) at which it is executed
• for Mergesort on a subarray of length k we do O(k) work to compute the split point
and do the merge
• work in further recursive calls is counted separately
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
⋮
T(n) = 2 ⋅ T(n/2) + cn where c > 0
T(1) T(1) ……….
use cn instead of Θ(n)
Recursion tree method — analysis idea
• charge each operation to the function call (i.e. tree node) at which it is executed
• for Mergesort on a subarray of length k we do O(k) work to compute the split point
and do the merge
• work in further recursive calls is counted separately
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
⋮
T(n) = 2 ⋅ T(n/2) + cn where c > 0
cn
cn/2 cn/2
T(1) T(1) ……….
use cn instead of Θ(n)
Recursion tree method — analysis idea
• charge each operation to the function call (i.e. tree node) at which it is executed
• for Mergesort on a subarray of length k we do O(k) work to compute the split point
and do the merge
• work in further recursive calls is counted separately
T (n)
T (n / 2) T (n / 2)
T (n / 8) T (n / 8)
T (n / 8) T (n / 8) T (n / 8) T (n / 8)
T (n / 8) T (n / 8)
T (n / 4) T (n / 4) T (n / 4) T (n / 4)
T(n) = 2 ⋅ T(n/2) + cn where c > 0
cn
cn/2 cn/2
cn/4 cn/4 cn/4 cn/4
cn/2k
amount of work per level:
c ⋅ n
2 ⋅ c ⋅ n/2
4 ⋅ c ⋅ n/4
2k
⋅ c ⋅ n/2k
Θ(n)
Θ(1)
Total: Θ(n log n)
use cn instead of Θ(n)
binary search
29
Input: sorted array A, integer x
Output: the index in A where the int x is located or “x is not in A”
1.Divide: compare x to middle element
2.Conquer: recursively search one subarray
3.Combine: trivial
2 3 7 10 11 14 16 18 20 23
example: find 16
binary search - running time
30
Algorithm 1: BinarySearch( sorted array A, int p, int r, query )
/* find the index of query in A (if present) */
1 q bp+r
2 c;
2 middle A[q];
3 if query == middle then
4 return q;
5 if query < middle then
6 BinarySearch(A, p, q, query);
7 else
8 BinarySearch(A, p, q, query);
9 return q not in A;
binary search — running time
31
Algorithm 1: BinarySearch( sorted array A, int p, int r, query )
/* find the index of query in A (if present) */
1 q bp+r
2 c;
2 middle A[q];
3 if query == middle then
4 return q;
5 if query < middle then
6 BinarySearch(A, p, q, query);
7 else
8 BinarySearch(A, p, q, query);
9 return q not in A;
O(c)
recursive call on array half the size
T(n) = 1 ⋅ T(n/2) + Θ(1)
#of
subproblems
subproblem
size
work dividing
and combining
find closed form by “telescoping”
Reminder: our goal is to find a closed form formula for the recurrence
method:
• substitute the recursive formula until we get a good guess
• use induction to prove the formula
T(n) = T(n/2) + c = T(n/4) + 2c = …
= T(n/23
) + 3c = … = T(n/2log n
) + (log n)c = Θ(log n)
proof by “telescoping”
claim.
proof. by induction on n.
• base case: for n = 2 (or any constant) it takes const comparisons and log n = const
• suppose that the formula is true for every k < n
• proof for n: substitute k = n/2
T(n) = Θ(log n)
T(n) = T(n/2) + Θ(1) = Θ(log(n/2)) + Θ(1) = Θ(log n)
Proof by “telescoping” for mergesort
Proposition. If T (n) satisfies the following recurrence, then T (n) = n log2 n.
Pf.
The last line corresponds to the base case. We know that the base case is T(1) = 0
by substituting log(n) for k we get
34
assuming n
is a power of 2
Substitute the formula in to T(n/2)
base case
T(1) = T( n
2k ) =) k = log(n)
T(n)  2 · T n
2 + cn  4 · T n
4 + 2cn 
 8 · T n
8 + 3cn  24
· T n
24 + 4cn 
· · ·
 2k
T n
2k + kcn
T(n)  2log(n)
· T n
2log(n) + log(n) · n = n + O(n log n)
T(n) =
(
1 n == 1
2T n
2 + cn otherwise
Master Theorem
For recurrences defined as
T(n) = aT(n/b) + f(n) in which a > 0, b ≥ 1 are constants
Then the overall computational cost is given by
T(n) = Θ(nlogb a
)
! "# $
leaves
+
logb n
%
k=1
ak−1
f(n/bk−1
)
! "# $
internal nodes
Such that
T(n) =





Θ(nlogb a) if f(n) = O(nlogb a−!)
Θ(nlogb a log n) if f(n) = Θ(nlogb a)
Θ(f(n)) if f(n) = Ω(nlogb a+!) and af(n/b) ≤ cf(n)
in which a ≥ 1, b > 1, c < 1 and ! > 0 are constants.
Solve the following recurrences
1. T(n) = 4T(n/2) + n
2. T(n) = 4T(n/2) + n2
3. T(n) = 4T(n/2) + n3
Asymptotic time to execute integer operations
Basic operations:
adding, subtracting, multiplying, dividing
Complexity of mathematical operations:
• Usually in this class we count them as constant time
• Today: we look at algorithms for efficiently implementing these basic operations.
• Today: in our analysis one computational step is counted as one bit operation.
Unit of measurement will be bit operations.
Input: two n-bit long integers a , b
Output: arithmetic operation on the two integers
2
Integer addition
Addition. Given two n-bit integers a and b, compute a + b.
Subtraction. Given two n-bit integers a and b, compute a – b.
Grade-school algorithm. Θ(n) bit operations.
3
1 1 0 1 0 1 0 1
+ 0 1 1 1 1 1 0 1
2 1 3
+ 1 2 5
Integer addition
Addition. Given two n-bit integers a and b, compute a + b.
Subtraction. Given two n-bit integers a and b, compute a – b.
Grade-school algorithm. Θ(n) bit operations.
4
1 1 1 1 1 1 0 1
1 1 0 1 0 1 0 1
+ 0 1 1 1 1 1 0 1
1 0 1 0 1 0 0 1 0
2 1 3
+ 1 2 5
3 3 8
Integer addition
Addition. Given two n-bit integers a and b, compute a + b.
Subtraction. Given two n-bit integers a and b, compute a – b.
Grade-school algorithm. Θ(n) bit operations.
Remark. Grade-school addition and subtraction algorithms are asymptotically
optimal.
5
an-1 an-2…a2 a1 a0
bits of a + b
+ bn-1 bn-2…b2 b1 b0
Integer multiplication
Multiply 21310 x 12510 = 110101012 x 011111012
・(subscript refers to decimal and binary representation)
Grade-school algorithm:
6
2 1 3
x 1 2 5
+
Integer multiplication
Multiply 21310 x 12510 = 110101012 x 011111012
・(subscript refers to decimal and binary representation)
Grade-school algorithm:
7
2 1 3
x 1 2 5
1 0 6 5
4 2 6
+ 2 1 3
2 6 6 2 5
TopHat
Multiplication. Given two n-bit integers a and b, compute a × b.
Grade-school algorithm.
8
1 1 0 1 0 1 0 1
× 0 1 1 1 1 1 0 1
1 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1
Question: What is the running time?
A. O(1)
B. O(log n)
C. O(n)
D. D. (n2)
Multiplication. Given two n-bit integers a and b, compute a × b.
Grade-school algorithm. Θ(n2) bit operations.
Integer multiplication
9
1 1 0 1 0 1 0 1
× 0 1 1 1 1 1 0 1
1 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
1 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0
0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1
n i n t e r m e d i a t e
products
2n additions
n bits each
total of O(n2) bits
Integer multiplication
10
n i n t e r m e d i a t e
products
2n additions
n bits each
total of O(n2) bits
an-1 an-2…a2 a1 a0
n bits
+ bn-1 bn-2…b2 b1 b0
a x b 2n bits
n bits
n bits
…
+
Multiplication. Given two n-bit integers a and b, compute a × b.
Grade-school algorithm. Θ(n2) bit operations.
Conjecture. [Kolmogorov 1952] Grade-school algorithm is optimal.
Theorem. [Karatsuba 1960] Conjecture is wrong. (his result )
O(nlog23
) = O(n1.59...
)
Multiplying large integers
Input: n bit integers a and b
Compute: ab
computing ab = multiplying two n bit integers ~ O(n2) time
Divide-and-conquer:
・subproblem: same problem on smaller input
- input size here is the number of bits in the integers
- goal: compute ab by multiplying n/2 bit integers and then combine them
11
Divide: n bits to n/2
12
355710 = 3500 + 57 = 35 x 102 + 57
355710 = 1101111001012 = 1101110000002 + 1001012 = 1101112 x 26 + 1001012
Input: n-bit integers a , b
Compute: ab
How to divide n-bit integers into n/2-bit ints?
Note: in decimal multiplying by 10k shifts the number k bits to the left. Same in
binary, multiplying by 2k shifts k bits to the left (glues k 0s at the end.)
TopHat
Question. Write the representation of the base-3 number 1201203 as two parts of
n/2 digit base-3 integers.
A.
B.
C.
D.
2 ⋅ 1203
3 ⋅ 1203 + 1203
1203 ⋅ 33
+ 1203
1203 ⋅ 36
+ 1203 ⋅ 33
Divide: n bits to n/2
Input: integers a ,b of length n bits
How to “divide”? What are the subproblems?
・split a in to two substrings A1, A0 of length n/2
・then a = A12n/2 + A0
・same for b: b = B12n/2+B0
14
a = an 1an 2 . . . an
2
an
2 1 . . . a2a1a0
A1 = an−1an−2…an
2
A0 = an
2 −1…a1a0
Multiplying large integers using D&C
Input: n bit integers a and b
Compute: ab
・A1, A0, B1, B0 are n/2 bit integers
ab consists of multiplying 2 n bit integers ~ O(n2) time
a = A12n/2 + A0 b = B12n/2 + B0
Compute:
ab = (A12n/2 + A0)(B12n/2 + B0)=
15
Multiplying large integers using D&C
Input: n bit integers a and b
Compute: ab
・A1, A0, B1, B0 are n/2 bit integers
ab consists of multiplying 2 n bit integers ~ O(n2) time
a = A12n/2 + A0 b = B12n/2 + B0
Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0
・this formula consists of 4 multiplications of n/2 bit numbers and 3 additions
Divide and conquer approach: multiply n/2 bit integers recursively
16
17
Multiplying large integers using D&C
Algorithm 1: Multiply(ints a, b, n)
1 if n == 1 then
2 return ab;
3 m bn
2 c;
4 A0 ba/2m
c /* integer division */
5 B0 bb/2m
c /* integer division */
6 A1 a mod 2m
;
7 B1 b mod 2m
;
8 x Multiply(A1, B1, m);
9 y Multiply(A1, B0, m);
10 z Multiply(A0, B1, m);
11 w Multiply(A0, B0, m);
12 return x22m
+ (y + z)2m
+ w;
recursive call on input of size n/2
Note that lines 4-7 can be implemented by simple bit-shifts — no real division
is taking place!
Recurrence:
(reminder: ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0)
18
Solve the recurrence
T(n) 
(
1 n = 1
4T(n
2 ) + O(n) otherwise
19
Solve the recurrence
T(n) 
(
1 n = 1
4T(n
2 ) + O(n) otherwise
Use telescoping and solve T(n) = 4 ⋅ T(
n
2
) + cn
T(n) = 4 ⋅ T(
n
2
) + cn = 4
(
4 ⋅ T(
n
4
) + c
n
2)
+ cn = (22
)2
⋅ T(
n
22
) + 3cn = …
= (22
)3
⋅ T(
n
23
) + 5cn = … = (22
)k
⋅ T(
n
2k
) + (k + 1)cn = …
we want to substitute the base case T(1), which happens when k =
log n
= (22
)log n
T(1) + (log n)cn = n2
+ Θ(1)n log n = Θ(n2
)
Now we can prove by induction that T(n) = Θ(n2
)
Recurrence:
General form:
Discussed in detail: Kleinberg-Tardos pages 214 - 218
General formula for recurrences of specific form
20
T(n) = 4T
(
n
2)
+ cn = cnlog24
= Θ(n2
)
T(n) = qT
(
n
2 )
+ cn = cnlog2 q
for q > 2
21
Multiplying large integers using D&C
Algorithm 1: Multiply(ints a, b, n)
1 if n == 1 then
2 return ab;
3 m bn
2 c;
4 A0 ba/2m
c /* integer division */
5 B0 bb/2m
c /* integer division */
6 A1 a mod 2m
;
7 B1 b mod 2m
;
8 x Multiply(A1, B1, m);
9 y Multiply(A1, B0, m);
10 z Multiply(A0, B1, m);
11 w Multiply(A0, B0, m);
12 return x22m
+ (y + z)2m
+ w;
recursive call on input of size n/2
Note that lines 4-7 can be implemented by simple bit-shifts — no real division
is taking place!
Recurrence: T(n) = 4T(n
2 ) + cn T(n) = ⇥(n2
)
(reminder: ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0)
Karatsuba’s algorithm
Input: n bit integers a and b
Compute: ab
a = A12n/2 + A0
b = B12n/2 + B0
Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0
Karatsuba’s trick: (A1+A0)(B1+B0) = A1B1 + A0B0 + (A1B0 + A0B1)
22
Input: n bit integers a and b
Compute: ab
a = A12n/2 + A0
b = B12n/2 + B0
Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0
Karatsuba’s trick: (A1+A0)(B1+B0) = A1B1 + A0B0 + (A1B0 + A0B1)
Karatsuba’s algorithm
23
Input: n bit integers a and b
Compute: ab
a = A12n/2 + A0
b = B12n/2 + B0
Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0
Karatsuba’s trick: (A1+A0)(B1+B0) = A1B1 + A0B0 + (A1B0 + A0B1)
Thus we get x = A1B1 , y = A0B0, z = (A1+A0)(B1+B0)
ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0 = x2n + (z - x - y)2n/2 + y
The new formula contains only 3 multiplications of n/2 bits.
Karatsuba’s algorithm
24
multiply n/2 bit integers
n/2 bits!
25
Karatsuba’s algorithm
Algorithm 1: Karatsuba(ints a, b, n)
1 if n == 1 then
2 return ab;
3 m bn
2 c;
4 A0 ba/2m
c /* integer division */
5 B0 bb/2m
c /* integer division */
6 A1 a mod 2m
;
7 B1 b mod 2m
;
8 x Karatsuba(A1, B1, m);
9 y Karatsuba(A0, B0, m);
10 z Karatsuba(A1 + A0, B1 + B0, m);
11 return x22m
+ (z x y)2m
+ y;
26
Karatsuba’s algorithm - TopHat
Algorithm 1: Karatsuba(ints a, b, n)
1 if n == 1 then
2 return ab;
3 m bn
2 c;
4 A0 ba/2m
c /* integer division */
5 B0 bb/2m
c /* integer division */
6 A1 a mod 2m
;
7 B1 b mod 2m
;
8 x Karatsuba(A1, B1, m);
9 y Karatsuba(A0, B0, m);
10 z Karatsuba(A1 + A0, B1 + B0, m);
11 return x22m
+ (z x y)2m
+ y;
Question: What is the recurrence for this algorithm?
A. C.
B. D.
T(n) = Θ(n)
T(n) = 2 ⋅ T(
n
3
) + Θ(n)
T(n) = 3 ⋅ T(
n
2
) + Θ(n)
T(n) = 3 ⋅ T(
n
3
) + Θ(1)
27
Karatsuba’s algorithm
Algorithm 1: Karatsuba(ints a, b, n)
1 if n == 1 then
2 return ab;
3 m bn
2 c;
4 A0 ba/2m
c /* integer division */
5 B0 bb/2m
c /* integer division */
6 A1 a mod 2m
;
7 B1 b mod 2m
;
8 x Karatsuba(A1, B1, m);
9 y Karatsuba(A0, B0, m);
10 z Karatsuba(A1 + A0, B1 + B0, m);
11 return x22m
+ (z x y)2m
+ y;
T(n) = 3T(n
2 ) + cn
T(n) = ⇥(nlog2 3
) = ⇥(n1.59...
)
Solve where
Recursion tree method
28
c 2 const
cn
cn
2
cn
2
cn
4
cn
4 cn
4
cn
4
+
work per procedure
T(n) = 3T(n
2 ) + cn
cn
2
cn
4 cn
4
cn
3
2 cn
9
4 cn
(3
2 )k
cn
Solve where
Recursion tree method - TopHat
29
c 2 const
cn
cn
2
cn
2
cn
4
cn
4 cn
4
cn
4
+
work per procedure
T(n) = 3T(n
2 ) + cn
cn
2
cn
4 cn
4
cn
3
2 cn
9
4 cn
(3
2 )k
cn
Question: what is the hight of the tree and number of nodes at
layer k? (you may assume the root is at layer 0)
A.
B.
C.
D.
log3 n & nk
log2 n & 3k
log2 n & n3
log3 n & k3
Solve where
Recursion tree method
30
c 2 const
cn
cn
2
cn
2
cn
4
cn
4 cn
4
cn
4
+
work per procedure
T(n) = 3T(n
2 ) + cn
cn
2
cn
4 cn
4
cn
3
2 cn
9
4 cn
(3
2 )k
cn
(3
2 )log3 n
cn = cnlog2 3
= cn1.59...
h = log2 n
(3
2
log3n
) = 1
n 3log2 n
=
= 3log3n
⇤ 3
1
log32
= n3log2 3
Recurrence for Karatsuba’s:
General form:
Discussed in detail: Kleinberg-Tardos pages 214 - 218
General formula for recurrences of specific form
31
T(n) = 3T(n
2 ) + cn = cnlog2 3
T(n) = qT(n
2 ) + cn = cnlog2 q
for q > 2
History of asymptotic complexity of integer multiplication
Remark. GNU Multiple Precision Library uses one of five
different algorithms depending on size of operands.
32
year algorithm order of growth
? grade-school Θ(n2)
1962 Karatsuba–Ofman Θ(n1.585)
1963 Toom-3, Toom-4 Θ(n1.465), Θ(n1.404)
1966 Toom–Cook Θ(n1 + ε)
1971 Schönhage–Strassen Θ(n log n log log n)
2007 Fürer n log n 2 O(log*n)
2019 Harvey, van der Hoeven
number of bit operations to multiply two n-bit integers
⇥(n log n)
Faster than grade-
school algorithm for
about 320–640 bits.

More Related Content

Similar to CS330-Lectures Statistics And Probability

lecture 15
lecture 15lecture 15
lecture 15sajinsc
 
1_Asymptotic_Notation_pptx.pptx
1_Asymptotic_Notation_pptx.pptx1_Asymptotic_Notation_pptx.pptx
1_Asymptotic_Notation_pptx.pptxpallavidhade2
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquerVikas Sharma
 
Skiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingSkiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingzukun
 
5.2 divide and conquer
5.2 divide and conquer5.2 divide and conquer
5.2 divide and conquerKrish_ver2
 
5.2 divede and conquer 03
5.2 divede and conquer 035.2 divede and conquer 03
5.2 divede and conquer 03Krish_ver2
 
5.2 divede and conquer 03
5.2 divede and conquer 035.2 divede and conquer 03
5.2 divede and conquer 03Krish_ver2
 
Introduction
IntroductionIntroduction
Introductionpilavare
 
04_Recurrences_1.ppt
04_Recurrences_1.ppt04_Recurrences_1.ppt
04_Recurrences_1.pptMouDhara1
 
lecture 4
lecture 4lecture 4
lecture 4sajinsc
 
l1.ppt
l1.pptl1.ppt
l1.pptImXaib
 
Welcome to Introduction to Algorithms, Spring 2004
Welcome to Introduction to Algorithms, Spring 2004Welcome to Introduction to Algorithms, Spring 2004
Welcome to Introduction to Algorithms, Spring 2004jeronimored
 
Introduction of Algorithm.pdf
Introduction of Algorithm.pdfIntroduction of Algorithm.pdf
Introduction of Algorithm.pdfLaxmiMobile1
 

Similar to CS330-Lectures Statistics And Probability (20)

3.pdf
3.pdf3.pdf
3.pdf
 
lecture 15
lecture 15lecture 15
lecture 15
 
1_Asymptotic_Notation_pptx.pptx
1_Asymptotic_Notation_pptx.pptx1_Asymptotic_Notation_pptx.pptx
1_Asymptotic_Notation_pptx.pptx
 
Divide and conquer
Divide and conquerDivide and conquer
Divide and conquer
 
Skiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sortingSkiena algorithm 2007 lecture09 linear sorting
Skiena algorithm 2007 lecture09 linear sorting
 
Algorithm.ppt
Algorithm.pptAlgorithm.ppt
Algorithm.ppt
 
03 dc
03 dc03 dc
03 dc
 
5.2 divide and conquer
5.2 divide and conquer5.2 divide and conquer
5.2 divide and conquer
 
5.2 divede and conquer 03
5.2 divede and conquer 035.2 divede and conquer 03
5.2 divede and conquer 03
 
5.2 divede and conquer 03
5.2 divede and conquer 035.2 divede and conquer 03
5.2 divede and conquer 03
 
l1.ppt
l1.pptl1.ppt
l1.ppt
 
Introduction
IntroductionIntroduction
Introduction
 
Unit 3
Unit 3Unit 3
Unit 3
 
Unit 3
Unit 3Unit 3
Unit 3
 
04_Recurrences_1.ppt
04_Recurrences_1.ppt04_Recurrences_1.ppt
04_Recurrences_1.ppt
 
lecture 4
lecture 4lecture 4
lecture 4
 
l1.ppt
l1.pptl1.ppt
l1.ppt
 
l1.ppt
l1.pptl1.ppt
l1.ppt
 
Welcome to Introduction to Algorithms, Spring 2004
Welcome to Introduction to Algorithms, Spring 2004Welcome to Introduction to Algorithms, Spring 2004
Welcome to Introduction to Algorithms, Spring 2004
 
Introduction of Algorithm.pdf
Introduction of Algorithm.pdfIntroduction of Algorithm.pdf
Introduction of Algorithm.pdf
 

Recently uploaded

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 

Recently uploaded (20)

Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 

CS330-Lectures Statistics And Probability

  • 1. Recursion tree method Solve 22 T(n) = 2 ⋅ T(n/2) + Θ(n) T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) ⋮ inputs of length n inputs of length n/2 inputs of length n/4 base case: input n=1 T(1) T(1) ……….
  • 2. Recursion tree method — TopHat Question 2 Solve 23 T(n) = 2 ⋅ T(n/2) + Θ(n) T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) ⋮ Question. How many layers? A. constant B. log2 n C. log4 n D. n E. n2 T(1) T(1) ……….
  • 3. Recursion tree method — TopHat Question 3 Solve 24 T(n) = 2 ⋅ T(n/2) + Θ(n) T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) ⋮ Question. How many leaves? A. constant B. log2 n C. log4 n D. n E. n2 T(1) T(1) ……….
  • 4. Recursion tree method Solve 25 T(n) = 2 ⋅ T(n/2) + Θ(n) T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) ⋮ inputs of length n inputs of length n/2 inputs of length n/4 base case: input n=1 log 2 n #leaves = n T(1) T(1) ……….
  • 5. Recursion tree method — analysis idea • charge each operation to the function call (i.e. tree node) at which it is executed • for Mergesort on a subarray of length k we do O(k) work to compute the split point and do the merge • work in further recursive calls is counted separately T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) ⋮ T(n) = 2 ⋅ T(n/2) + cn where c > 0 T(1) T(1) ………. use cn instead of Θ(n)
  • 6. Recursion tree method — analysis idea • charge each operation to the function call (i.e. tree node) at which it is executed • for Mergesort on a subarray of length k we do O(k) work to compute the split point and do the merge • work in further recursive calls is counted separately T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) ⋮ T(n) = 2 ⋅ T(n/2) + cn where c > 0 cn cn/2 cn/2 T(1) T(1) ………. use cn instead of Θ(n)
  • 7. Recursion tree method — analysis idea • charge each operation to the function call (i.e. tree node) at which it is executed • for Mergesort on a subarray of length k we do O(k) work to compute the split point and do the merge • work in further recursive calls is counted separately T (n) T (n / 2) T (n / 2) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 8) T (n / 4) T (n / 4) T (n / 4) T (n / 4) T(n) = 2 ⋅ T(n/2) + cn where c > 0 cn cn/2 cn/2 cn/4 cn/4 cn/4 cn/4 cn/2k amount of work per level: c ⋅ n 2 ⋅ c ⋅ n/2 4 ⋅ c ⋅ n/4 2k ⋅ c ⋅ n/2k Θ(n) Θ(1) Total: Θ(n log n) use cn instead of Θ(n)
  • 8. binary search 29 Input: sorted array A, integer x Output: the index in A where the int x is located or “x is not in A” 1.Divide: compare x to middle element 2.Conquer: recursively search one subarray 3.Combine: trivial 2 3 7 10 11 14 16 18 20 23 example: find 16
  • 9. binary search - running time 30 Algorithm 1: BinarySearch( sorted array A, int p, int r, query ) /* find the index of query in A (if present) */ 1 q bp+r 2 c; 2 middle A[q]; 3 if query == middle then 4 return q; 5 if query < middle then 6 BinarySearch(A, p, q, query); 7 else 8 BinarySearch(A, p, q, query); 9 return q not in A;
  • 10. binary search — running time 31 Algorithm 1: BinarySearch( sorted array A, int p, int r, query ) /* find the index of query in A (if present) */ 1 q bp+r 2 c; 2 middle A[q]; 3 if query == middle then 4 return q; 5 if query < middle then 6 BinarySearch(A, p, q, query); 7 else 8 BinarySearch(A, p, q, query); 9 return q not in A; O(c) recursive call on array half the size T(n) = 1 ⋅ T(n/2) + Θ(1) #of subproblems subproblem size work dividing and combining
  • 11. find closed form by “telescoping” Reminder: our goal is to find a closed form formula for the recurrence method: • substitute the recursive formula until we get a good guess • use induction to prove the formula T(n) = T(n/2) + c = T(n/4) + 2c = … = T(n/23 ) + 3c = … = T(n/2log n ) + (log n)c = Θ(log n)
  • 12. proof by “telescoping” claim. proof. by induction on n. • base case: for n = 2 (or any constant) it takes const comparisons and log n = const • suppose that the formula is true for every k < n • proof for n: substitute k = n/2 T(n) = Θ(log n) T(n) = T(n/2) + Θ(1) = Θ(log(n/2)) + Θ(1) = Θ(log n)
  • 13. Proof by “telescoping” for mergesort Proposition. If T (n) satisfies the following recurrence, then T (n) = n log2 n. Pf. The last line corresponds to the base case. We know that the base case is T(1) = 0 by substituting log(n) for k we get 34 assuming n is a power of 2 Substitute the formula in to T(n/2) base case T(1) = T( n 2k ) =) k = log(n) T(n)  2 · T n 2 + cn  4 · T n 4 + 2cn   8 · T n 8 + 3cn  24 · T n 24 + 4cn  · · ·  2k T n 2k + kcn T(n)  2log(n) · T n 2log(n) + log(n) · n = n + O(n log n) T(n) = ( 1 n == 1 2T n 2 + cn otherwise
  • 14. Master Theorem For recurrences defined as T(n) = aT(n/b) + f(n) in which a > 0, b ≥ 1 are constants Then the overall computational cost is given by T(n) = Θ(nlogb a ) ! "# $ leaves + logb n % k=1 ak−1 f(n/bk−1 ) ! "# $ internal nodes Such that T(n) =      Θ(nlogb a) if f(n) = O(nlogb a−!) Θ(nlogb a log n) if f(n) = Θ(nlogb a) Θ(f(n)) if f(n) = Ω(nlogb a+!) and af(n/b) ≤ cf(n) in which a ≥ 1, b > 1, c < 1 and ! > 0 are constants.
  • 15. Solve the following recurrences 1. T(n) = 4T(n/2) + n 2. T(n) = 4T(n/2) + n2 3. T(n) = 4T(n/2) + n3
  • 16. Asymptotic time to execute integer operations Basic operations: adding, subtracting, multiplying, dividing Complexity of mathematical operations: • Usually in this class we count them as constant time • Today: we look at algorithms for efficiently implementing these basic operations. • Today: in our analysis one computational step is counted as one bit operation. Unit of measurement will be bit operations. Input: two n-bit long integers a , b Output: arithmetic operation on the two integers 2
  • 17. Integer addition Addition. Given two n-bit integers a and b, compute a + b. Subtraction. Given two n-bit integers a and b, compute a – b. Grade-school algorithm. Θ(n) bit operations. 3 1 1 0 1 0 1 0 1 + 0 1 1 1 1 1 0 1 2 1 3 + 1 2 5
  • 18. Integer addition Addition. Given two n-bit integers a and b, compute a + b. Subtraction. Given two n-bit integers a and b, compute a – b. Grade-school algorithm. Θ(n) bit operations. 4 1 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 + 0 1 1 1 1 1 0 1 1 0 1 0 1 0 0 1 0 2 1 3 + 1 2 5 3 3 8
  • 19. Integer addition Addition. Given two n-bit integers a and b, compute a + b. Subtraction. Given two n-bit integers a and b, compute a – b. Grade-school algorithm. Θ(n) bit operations. Remark. Grade-school addition and subtraction algorithms are asymptotically optimal. 5 an-1 an-2…a2 a1 a0 bits of a + b + bn-1 bn-2…b2 b1 b0
  • 20. Integer multiplication Multiply 21310 x 12510 = 110101012 x 011111012 ・(subscript refers to decimal and binary representation) Grade-school algorithm: 6 2 1 3 x 1 2 5 +
  • 21. Integer multiplication Multiply 21310 x 12510 = 110101012 x 011111012 ・(subscript refers to decimal and binary representation) Grade-school algorithm: 7 2 1 3 x 1 2 5 1 0 6 5 4 2 6 + 2 1 3 2 6 6 2 5
  • 22. TopHat Multiplication. Given two n-bit integers a and b, compute a × b. Grade-school algorithm. 8 1 1 0 1 0 1 0 1 × 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 Question: What is the running time? A. O(1) B. O(log n) C. O(n) D. D. (n2)
  • 23. Multiplication. Given two n-bit integers a and b, compute a × b. Grade-school algorithm. Θ(n2) bit operations. Integer multiplication 9 1 1 0 1 0 1 0 1 × 0 1 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 n i n t e r m e d i a t e products 2n additions n bits each total of O(n2) bits
  • 24. Integer multiplication 10 n i n t e r m e d i a t e products 2n additions n bits each total of O(n2) bits an-1 an-2…a2 a1 a0 n bits + bn-1 bn-2…b2 b1 b0 a x b 2n bits n bits n bits … + Multiplication. Given two n-bit integers a and b, compute a × b. Grade-school algorithm. Θ(n2) bit operations. Conjecture. [Kolmogorov 1952] Grade-school algorithm is optimal. Theorem. [Karatsuba 1960] Conjecture is wrong. (his result ) O(nlog23 ) = O(n1.59... )
  • 25. Multiplying large integers Input: n bit integers a and b Compute: ab computing ab = multiplying two n bit integers ~ O(n2) time Divide-and-conquer: ・subproblem: same problem on smaller input - input size here is the number of bits in the integers - goal: compute ab by multiplying n/2 bit integers and then combine them 11
  • 26. Divide: n bits to n/2 12 355710 = 3500 + 57 = 35 x 102 + 57 355710 = 1101111001012 = 1101110000002 + 1001012 = 1101112 x 26 + 1001012 Input: n-bit integers a , b Compute: ab How to divide n-bit integers into n/2-bit ints? Note: in decimal multiplying by 10k shifts the number k bits to the left. Same in binary, multiplying by 2k shifts k bits to the left (glues k 0s at the end.)
  • 27. TopHat Question. Write the representation of the base-3 number 1201203 as two parts of n/2 digit base-3 integers. A. B. C. D. 2 ⋅ 1203 3 ⋅ 1203 + 1203 1203 ⋅ 33 + 1203 1203 ⋅ 36 + 1203 ⋅ 33
  • 28. Divide: n bits to n/2 Input: integers a ,b of length n bits How to “divide”? What are the subproblems? ・split a in to two substrings A1, A0 of length n/2 ・then a = A12n/2 + A0 ・same for b: b = B12n/2+B0 14 a = an 1an 2 . . . an 2 an 2 1 . . . a2a1a0 A1 = an−1an−2…an 2 A0 = an 2 −1…a1a0
  • 29. Multiplying large integers using D&C Input: n bit integers a and b Compute: ab ・A1, A0, B1, B0 are n/2 bit integers ab consists of multiplying 2 n bit integers ~ O(n2) time a = A12n/2 + A0 b = B12n/2 + B0 Compute: ab = (A12n/2 + A0)(B12n/2 + B0)= 15
  • 30. Multiplying large integers using D&C Input: n bit integers a and b Compute: ab ・A1, A0, B1, B0 are n/2 bit integers ab consists of multiplying 2 n bit integers ~ O(n2) time a = A12n/2 + A0 b = B12n/2 + B0 Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0 ・this formula consists of 4 multiplications of n/2 bit numbers and 3 additions Divide and conquer approach: multiply n/2 bit integers recursively 16
  • 31. 17 Multiplying large integers using D&C Algorithm 1: Multiply(ints a, b, n) 1 if n == 1 then 2 return ab; 3 m bn 2 c; 4 A0 ba/2m c /* integer division */ 5 B0 bb/2m c /* integer division */ 6 A1 a mod 2m ; 7 B1 b mod 2m ; 8 x Multiply(A1, B1, m); 9 y Multiply(A1, B0, m); 10 z Multiply(A0, B1, m); 11 w Multiply(A0, B0, m); 12 return x22m + (y + z)2m + w; recursive call on input of size n/2 Note that lines 4-7 can be implemented by simple bit-shifts — no real division is taking place! Recurrence: (reminder: ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0)
  • 32. 18 Solve the recurrence T(n)  ( 1 n = 1 4T(n 2 ) + O(n) otherwise
  • 33. 19 Solve the recurrence T(n)  ( 1 n = 1 4T(n 2 ) + O(n) otherwise Use telescoping and solve T(n) = 4 ⋅ T( n 2 ) + cn T(n) = 4 ⋅ T( n 2 ) + cn = 4 ( 4 ⋅ T( n 4 ) + c n 2) + cn = (22 )2 ⋅ T( n 22 ) + 3cn = … = (22 )3 ⋅ T( n 23 ) + 5cn = … = (22 )k ⋅ T( n 2k ) + (k + 1)cn = … we want to substitute the base case T(1), which happens when k = log n = (22 )log n T(1) + (log n)cn = n2 + Θ(1)n log n = Θ(n2 ) Now we can prove by induction that T(n) = Θ(n2 )
  • 34. Recurrence: General form: Discussed in detail: Kleinberg-Tardos pages 214 - 218 General formula for recurrences of specific form 20 T(n) = 4T ( n 2) + cn = cnlog24 = Θ(n2 ) T(n) = qT ( n 2 ) + cn = cnlog2 q for q > 2
  • 35. 21 Multiplying large integers using D&C Algorithm 1: Multiply(ints a, b, n) 1 if n == 1 then 2 return ab; 3 m bn 2 c; 4 A0 ba/2m c /* integer division */ 5 B0 bb/2m c /* integer division */ 6 A1 a mod 2m ; 7 B1 b mod 2m ; 8 x Multiply(A1, B1, m); 9 y Multiply(A1, B0, m); 10 z Multiply(A0, B1, m); 11 w Multiply(A0, B0, m); 12 return x22m + (y + z)2m + w; recursive call on input of size n/2 Note that lines 4-7 can be implemented by simple bit-shifts — no real division is taking place! Recurrence: T(n) = 4T(n 2 ) + cn T(n) = ⇥(n2 ) (reminder: ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0)
  • 36. Karatsuba’s algorithm Input: n bit integers a and b Compute: ab a = A12n/2 + A0 b = B12n/2 + B0 Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0 Karatsuba’s trick: (A1+A0)(B1+B0) = A1B1 + A0B0 + (A1B0 + A0B1) 22
  • 37. Input: n bit integers a and b Compute: ab a = A12n/2 + A0 b = B12n/2 + B0 Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0 Karatsuba’s trick: (A1+A0)(B1+B0) = A1B1 + A0B0 + (A1B0 + A0B1) Karatsuba’s algorithm 23
  • 38. Input: n bit integers a and b Compute: ab a = A12n/2 + A0 b = B12n/2 + B0 Compute ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0 Karatsuba’s trick: (A1+A0)(B1+B0) = A1B1 + A0B0 + (A1B0 + A0B1) Thus we get x = A1B1 , y = A0B0, z = (A1+A0)(B1+B0) ab = A1B12n + (A1B0 + A0B1)2n/2 + A0B0 = x2n + (z - x - y)2n/2 + y The new formula contains only 3 multiplications of n/2 bits. Karatsuba’s algorithm 24 multiply n/2 bit integers n/2 bits!
  • 39. 25 Karatsuba’s algorithm Algorithm 1: Karatsuba(ints a, b, n) 1 if n == 1 then 2 return ab; 3 m bn 2 c; 4 A0 ba/2m c /* integer division */ 5 B0 bb/2m c /* integer division */ 6 A1 a mod 2m ; 7 B1 b mod 2m ; 8 x Karatsuba(A1, B1, m); 9 y Karatsuba(A0, B0, m); 10 z Karatsuba(A1 + A0, B1 + B0, m); 11 return x22m + (z x y)2m + y;
  • 40. 26 Karatsuba’s algorithm - TopHat Algorithm 1: Karatsuba(ints a, b, n) 1 if n == 1 then 2 return ab; 3 m bn 2 c; 4 A0 ba/2m c /* integer division */ 5 B0 bb/2m c /* integer division */ 6 A1 a mod 2m ; 7 B1 b mod 2m ; 8 x Karatsuba(A1, B1, m); 9 y Karatsuba(A0, B0, m); 10 z Karatsuba(A1 + A0, B1 + B0, m); 11 return x22m + (z x y)2m + y; Question: What is the recurrence for this algorithm? A. C. B. D. T(n) = Θ(n) T(n) = 2 ⋅ T( n 3 ) + Θ(n) T(n) = 3 ⋅ T( n 2 ) + Θ(n) T(n) = 3 ⋅ T( n 3 ) + Θ(1)
  • 41. 27 Karatsuba’s algorithm Algorithm 1: Karatsuba(ints a, b, n) 1 if n == 1 then 2 return ab; 3 m bn 2 c; 4 A0 ba/2m c /* integer division */ 5 B0 bb/2m c /* integer division */ 6 A1 a mod 2m ; 7 B1 b mod 2m ; 8 x Karatsuba(A1, B1, m); 9 y Karatsuba(A0, B0, m); 10 z Karatsuba(A1 + A0, B1 + B0, m); 11 return x22m + (z x y)2m + y; T(n) = 3T(n 2 ) + cn T(n) = ⇥(nlog2 3 ) = ⇥(n1.59... )
  • 42. Solve where Recursion tree method 28 c 2 const cn cn 2 cn 2 cn 4 cn 4 cn 4 cn 4 + work per procedure T(n) = 3T(n 2 ) + cn cn 2 cn 4 cn 4 cn 3 2 cn 9 4 cn (3 2 )k cn
  • 43. Solve where Recursion tree method - TopHat 29 c 2 const cn cn 2 cn 2 cn 4 cn 4 cn 4 cn 4 + work per procedure T(n) = 3T(n 2 ) + cn cn 2 cn 4 cn 4 cn 3 2 cn 9 4 cn (3 2 )k cn Question: what is the hight of the tree and number of nodes at layer k? (you may assume the root is at layer 0) A. B. C. D. log3 n & nk log2 n & 3k log2 n & n3 log3 n & k3
  • 44. Solve where Recursion tree method 30 c 2 const cn cn 2 cn 2 cn 4 cn 4 cn 4 cn 4 + work per procedure T(n) = 3T(n 2 ) + cn cn 2 cn 4 cn 4 cn 3 2 cn 9 4 cn (3 2 )k cn (3 2 )log3 n cn = cnlog2 3 = cn1.59... h = log2 n (3 2 log3n ) = 1 n 3log2 n = = 3log3n ⇤ 3 1 log32 = n3log2 3
  • 45. Recurrence for Karatsuba’s: General form: Discussed in detail: Kleinberg-Tardos pages 214 - 218 General formula for recurrences of specific form 31 T(n) = 3T(n 2 ) + cn = cnlog2 3 T(n) = qT(n 2 ) + cn = cnlog2 q for q > 2
  • 46. History of asymptotic complexity of integer multiplication Remark. GNU Multiple Precision Library uses one of five different algorithms depending on size of operands. 32 year algorithm order of growth ? grade-school Θ(n2) 1962 Karatsuba–Ofman Θ(n1.585) 1963 Toom-3, Toom-4 Θ(n1.465), Θ(n1.404) 1966 Toom–Cook Θ(n1 + ε) 1971 Schönhage–Strassen Θ(n log n log log n) 2007 Fürer n log n 2 O(log*n) 2019 Harvey, van der Hoeven number of bit operations to multiply two n-bit integers ⇥(n log n) Faster than grade- school algorithm for about 320–640 bits.