15. Recurrence Examples
• T(n) = 2 T(n/2) + cn
– O(n log n)
• T(n) = T(n/2) + cn
– O(n)
• More useful facts:
– logkn = log2n / log2k
– k log n
= n log k
16. Recursive Matrix Multiplication
Multiply 2 x 2 Matrices:
| r s | | a b| |e g|
| t u| | c d| | f h|
r = ae + bf
s = ag + bh
t = ce + df
u = cg + dh
A N x N matrix can be viewed as
a 2 x 2 matrix with entries that
are (N/2) x (N/2) matrices.
The recursive matrix
multiplication algorithm
recursively multiplies the
(N/2) x (N/2) matrices and
combines them using the
equations for multiplying 2 x 2
matrices
=
17. Recursive Matrix Multiplication
• How many recursive calls
are made at each level?
• How much work in
combining the results?
• What is the recurrence?
18. What is the run time for the recursive
Matrix Multiplication Algorithm?
• Recurrence:
24. What you really need to know
about recurrences
• Work per level changes geometrically with
the level
• Geometrically increasing (x > 1)
– The bottom level wins
• Geometrically decreasing (x < 1)
– The top level wins
• Balanced (x = 1)
– Equal contribution
25. Classify the following recurrences
(Increasing, Decreasing, Balanced)
• T(n) = n + 5T(n/8)
• T(n) = n + 9T(n/8)
• T(n) = n2
+ 4T(n/2)
• T(n) = n3
+ 7T(n/2)
• T(n) = n1/2
+ 3T(n/4)
26. Strassen’s Algorithm
Multiply 2 x 2 Matrices:
| r s | | a b| |e g|
| t u| | c d| | f h|
r = p1 + p4 – p5 + p7
s = p3 + p5
t = p2 + p5
u = p1 + p3 – p2 + p7
Where:
p1 = (b + d)(f + g)
p2= (c + d)e
p3= a(g – h)
p4= d(f – e)
p5= (a – b)h
p6= (c – d)(e + g)
p7= (b – d)(f + h)
=