introduction to algorithms - courses.csail.mit.edu · introduction to algorithms...
TRANSCRIPT
![Page 1: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/1.jpg)
Introduction to Algorithms6.046J/18.401J/SMA5503
Lecture 3Prof. Piotr Indyk
![Page 2: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/2.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.2
The divide-and-conquer design paradigm
1. Divide the problem (instance) into subproblems.
2. Conquer the subproblemsby solving them recursively.
3. Combine subproblem solutions.
![Page 3: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/3.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.3
Example: merge sor t
1. Divide: Trivial.
2. Conquer: Recursively sort 2 subarrays.
3. Combine: Linear-time merge.
T(n) = 2T(n/2) + O(n)
# subproblems
subproblem size
work dividing and combining
![Page 4: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/4.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.4
Binary search
Example: Find 9
3 5 7 8 9 12 15
Find an element in a sorted array:
1. Divide: Check middle element.
2. Conquer: Recursively search 1 subarray.
3. Combine: Trivial.
![Page 5: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/5.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.5
Binary search
Example: Find 9
3 5 7 8 9 12 15
Find an element in a sorted array:
1. Divide: Check middle element.
2. Conquer: Recursively search 1 subarray.
3. Combine: Trivial.
![Page 6: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/6.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.6
Binary search
Example: Find 9
3 5 7 8 9 12 15
Find an element in a sorted array:
1. Divide: Check middle element.
2. Conquer: Recursively search 1 subarray.
3. Combine: Trivial.
![Page 7: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/7.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.7
Binary search
Example: Find 9
3 5 7 8 9 12 15
Find an element in a sorted array:
1. Divide: Check middle element.
2. Conquer: Recursively search 1 subarray.
3. Combine: Trivial.
![Page 8: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/8.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.8
Binary search
Example: Find 9
3 5 7 8 9 12 15
Find an element in a sorted array:
1. Divide: Check middle element.
2. Conquer: Recursively search 1 subarray.
3. Combine: Trivial.
![Page 9: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/9.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.9
Binary search
Find an element in a sorted array:
1. Divide: Check middle element.
2. Conquer: Recursively search 1 subarray.
3. Combine: Trivial.
Example: Find 9
3 5 7 8 9 12 15
![Page 10: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/10.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.10
Recurrence for binary search
T(n) = 1T(n/2) + Θ(1)
# subproblems
subproblem size
work dividing and combining
nlogba = nlog21 = n0 = 1 CASE 2 (k = 0)T(n) = Θ(lgn) .
![Page 11: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/11.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.11
Power ing a number
Problem: Compute an, where n ∈ N.
an =an/2 ⋅ an/2 if n is even;
a(n–1)/2 ⋅ a(n–1)/2 ⋅ a if n is odd.
Divide-and-conquer algor ithm:
T(n) = T(n/2) + Θ(1) T(n) = Θ(lgn) .
Naive algor ithm: Θ(n).
![Page 12: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/12.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.12
Polynomial multiplication
Example: (a0+a1x) * (b0+b1x) = a0b0 + (a0b1+a1b0)x + a1b1 x2 =c0 + c1x + c2 x2
Input: a(x)=a0+a1x+… +anxn,
b(x)=b0+b1x+… +bnxn,
Output: c(x)= a(x)*b(x) =c0+c1x+…+c2nx2n
ci=a0bi+a1bi-1+…+ ai-1b1+aib0
![Page 13: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/13.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.13
Motivation (more in recitations)
• Essentially equivalent to multiplying large integers:
6046*6001 = (6*100 + 4*101 + 0*102 + 6*103) * (1*100 + 0*101 + 0*102 + 6*103) =a(10) * b(10) = c(10), where c(x)=a(x)*b(x)
c(10) = c0100 + c1101 + … + c6106
• The coefficients of c form the “digits” of the product c(10)
![Page 14: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/14.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.14
How to multiply two polynomials
• From the definition: Θ(n2) time
• Faster ? Use divide and conquer– Divide:
a(x) = a0+a1x+… +anxn =
(a0 + … + an/2xn/2 ) + xn/2(an/2x0 + … + anxn/2 ) =
p(x) + xn/2 q(x) =
p + xn/2 q
– In the same way: b(x) = s+xn/2 t
![Page 15: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/15.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.15
Conquer
• Observe that:
a*b =
(p+xn/2q) * (s+xn/2t) =
p*s + xn/2 (p* t+q*s) + xn q* t
• But p,q,s,t have degree n/2
can compute the products recursively! (and then perform Θ(n) additions)
![Page 16: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/16.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.16
The great moment…
T(n) = 4T(n/2) + Θ(n)
# subproblems
subproblem size
work dividing and combining
nlogba = nlog24 = n2 CASE 1 T(n) = Θ(n2).
No better than the ordinary algorithm ???
![Page 17: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/17.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.17
Need to be more clever
• Compute:
p*s
q* t
(p+q) * (s+t) = p*s + (p* t + q*s) + q* t
(all polynomials have degree n/2 )
• Can extract (p* t + q*s) without any additional multiplications !
![Page 18: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/18.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.18
The truly great moment
T(n) = 3T(n/2) + Θ(n)
# subproblems
subproblem size
work adding and subtracting
nlogba = nlog23 = n1.58496…
Much better than Θ(n2) !
![Page 19: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/19.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.19
Matr ix multiplication
⋅=
nnnn
n
n
nnnn
n
n
nnnn
n
n
bbb
bbb
bbb
aaa
aaa
aaa
ccc
ccc
ccc
21
22221
11211
21
22221
11211
21
22221
11211
=⋅=
n
kkjikij bac
1
Input: A = [aij], B = [bij].Output: C = [cij] = A⋅ B.
i, j = 1, 2,… , n.
![Page 20: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/20.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.20
Standard algor ithm
for i ← 1 to ndo for j ← 1 to n
do cij ← 0for k ← 1 to n
do cij ← cij + aik⋅ bkj
Running time = Θ(n3)
![Page 21: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/21.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.21
Divide-and-conquer algor ithm
n×n matrix = 2×2 matrix of (n/2)×(n/2) submatrices:IDEA:
⋅=hg
fe
dc
ba
ut
sr
C = A ⋅ Br = ae+ bgs = af + bht = ce+ dgu = cf + dh
8 multsof (n/2)×(n/2) submatrices4 adds of (n/2)×(n/2) submatrices
![Page 22: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/22.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.22
Analysis of D& C algor ithm
nlogba = nlog28 = n3 CASE 1 T(n) = Θ(n3).
No better than the ordinary algorithm.
# submatrices
submatrix size
work adding submatrices
T(n) = 8T(n/2) + Θ(n2)
![Page 23: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/23.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.23
7 mults, 18 adds/subs.Note: No reliance on commutativity of mult!
7 mults, 18 adds/subs.Note: No reliance on commutativity of mult!
Strassen’s idea (1969)
• Multiply 2×2 matrices with only 7 recursive mults.
P1 = a ⋅ ( f – h)P2 = (a + b) ⋅ hP3 = (c + d) ⋅ eP4 = d ⋅ (g – e)P5 = (a + d) ⋅ (e+ h)P6 = (b – d) ⋅ (g + h)P7 = (a – c) ⋅ (e+ f )
r = P5 + P4 – P2 + P6
s = P1 + P2
t = P3 + P4
u = P5 + P1 – P3 – P7
![Page 24: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/24.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.24
Strassen’s idea
• Multiply 2×2 matrices with only 7 recursive mults.
P1 = a ⋅ ( f – h)P2 = (a + b) ⋅ hP3 = (c + d) ⋅ eP4 = d ⋅ (g – e)P5 = (a + d) ⋅ (e+ h)P6 = (b – d) ⋅ (g + h)P7 = (a – c) ⋅ (e+ f )
r = P5 + P4 – P2 + P6
= (a + d) (e + h) + d(g – e) – (a + b)h+ (b – d) (g + h)
= ae + ah + de + dh + dg –de – ah – bh+ bg + bh – dg – dh
= ae + bg
![Page 25: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/25.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.25
Strassen’salgor ithm
1. Divide: Partition A and B into (n/2)×(n/2) submatrices. Form terms to be multiplied using + and – .
2. Conquer: Perform 7 multiplications of (n/2)×(n/2) submatrices recursively.
3. Combine: Form C using + and – on (n/2)×(n/2) submatrices.
T(n) = 7T(n/2) + Θ(n2)
![Page 26: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/26.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.26
Analysis of Strassen
T(n) = 7T(n/2) + Θ(n2)
nlogba = nlog27 ≈ n2.81 CASE 1 T(n) = Θ(nlg 7).
Best to date (of theoretical interest only): Θ(n2.376).
The number 2.81may not seem much smaller than 3, but because the difference is in the exponent, the impact on running time is significant. In fact, Strassen’s algorithm beats the ordinary algorithm on today’s machines for n ≥ 30 or so.
![Page 27: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/27.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.27
Conclusion
• Divide and conquer is just one of several powerful techniques for algorithm design.
• Divide-and-conquer algorithms can be analyzed using recurrences and the master method (so practice this math).
• Can lead to more efficient algorithms
![Page 28: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/28.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.28
VLSI layoutProblem: Embed a complete binary tree with n leaves in a grid using minimal area.
H(n)
W(n)
H(n) = H(n/2) + Θ(1)= Θ(lg n)
W(n) = 2W(n/2) + Θ(1)= Θ(n)
Area= Θ(n lg n)
![Page 29: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/29.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.29
H-tree embedding
L(n)
L(n)
L(n/4) L(n/4)Θ(1)
L(n) = 2L(n/4) + Θ(1)
= Θ( )n
Area= Θ(n)
![Page 30: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/30.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.30
Master theorem (repr ise)T(n) = aT(n/b) + f (n)
CASE 1: f (n) = O(nlogba – ε)T(n) = Θ(nlogba) .
CASE 2: f (n) = Θ(nlogba lgkn)T(n) = Θ(nlogba lgk+1n) .
CASE 3: f (n) = Ω(nlogba + ε) and af (n/b) ≤ cf (n) T(n) = Θ( f (n)) .
Merge sort: a = 2, b = 2 nlogba = nCASE 2 (k = 0) T(n) = Θ(n lgn) .
![Page 31: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/31.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.31
Fibonacci numbers
Recursive definition:
Fn =0 if n = 0;
Fn–1 + Fn–2 if n ≥ 2.1 if n = 1;
0 1 1 2 3 5 8 13 21 34
Naive recursive algor ithm: Ω(φ n)(exponential time), where φ =is the golden ratio.
2/)51( +
![Page 32: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/32.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.32
Computing Fibonacci numbers
Naive recursive squar ing:Fn = φ n/ rounded to the nearest integer.5
• Recursive squaring: Θ(lg n) time. • This method is unreliable, since floating-point
arithmetic is prone to round-off errors.
Bottom-up: • Compute F0, F1, F2, …, Fn in order, forming each number by summing the two previous.
• Running time: Θ(n).
![Page 33: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/33.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.33
Recursive squar ingn
FF
FF
nn
nn =−
+
01
11
1
1Theorem: .
Proof of theorem. (Induction on n.)
Base (n = 1): .1
01
11
01
12 =FF
FF
Algor ithm: Recursive squaring.Time = Θ(lg n) .
![Page 34: Introduction to Algorithms - courses.csail.mit.edu · Introduction to Algorithms 6.046J/18.401J/SMA5503 Lecture 3 Prof. Piotr Indyk. February 11, 2003 (c) ... • Divide-and-conquer](https://reader034.vdocuments.us/reader034/viewer/2022043004/5f87a9ab7ebd3d50e37d2da1/html5/thumbnails/34.jpg)
February 11, 2003 (c) Charles Leiserson and Piotr Indyk L3.34
Recursive squar ing
.
.
Inductive step (n ≥ 2):
n
n
FF
FF
FF
FF
nn
nn
nn
nn
=
⋅−
=
⋅=−−
−
−
+
01
11
01
111
01
11
01
11
21
1
1
1