Top Banner
September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer algorithm n×n matrix = 2×2 matrix of (n/2)×(n/2) submatrices: IDEA: = h g f e d c b a u t s r C = A B r =ae+bg s = af + bh t = ce + dh u = cf + dg 8 mults of (n/2)×(n/2) submatrices 4 adds of (n/2)×(n/2) submatrices ^ recursive © 2001–4 by Charles E. Leiserson
24

Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

May 07, 2019

Download

Documents

phamliem
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.31

Divide-and-conquer algorithm

n×n matrix = 2×2 matrix of (n/2)×(n/2) submatrices:IDEA:

=

hgfe

dcba

utsr

C = A ⋅ Br = ae + bgs = af + bht = ce + dhu = cf + dg

8 mults of (n/2)×(n/2) submatrices4 adds of (n/2)×(n/2) submatrices^

recursive

© 2001–4 by Charles E. Leiserson

Page 2: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.32

Analysis of D&C algorithm

# submatricessubmatrix size

work adding submatrices

T(n) = 8 T(n/2) + Θ(n2)

© 2001–4 by Charles E. Leiserson

Page 3: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.33

Analysis of D&C algorithm

nlogba = nlog28 = n3 ⇒ CASE 1 ⇒ T(n) = Θ(n3).

# submatricessubmatrix size

work adding submatrices

T(n) = 8 T(n/2) + Θ(n2)

© 2001–4 by Charles E. Leiserson

Page 4: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.34

Analysis of D&C algorithm

nlogba = nlog28 = n3 ⇒ CASE 1 ⇒ T(n) = Θ(n3).

No better than the ordinary algorithm.

# submatricessubmatrix size

work adding submatrices

T(n) = 8 T(n/2) + Θ(n2)

© 2001–4 by Charles E. Leiserson

Page 5: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.35

Strassen’s idea• Multiply 2×2 matrices with only 7 recursive mults.

© 2001–4 by Charles E. Leiserson

Page 6: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.36

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 )

© 2001–4 by Charles E. Leiserson

Page 7: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.37

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 + P6s = P1 + P2t = P3 + P4u = P5 + P1 – P3 – P7

© 2001–4 by Charles E. Leiserson

Page 8: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.38

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• 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 + P6s = P1 + P2t = P3 + P4u = P5 + P1 – P3 – P7

© 2001–4 by Charles E. Leiserson

Page 9: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.39

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© 2001–4 by Charles E. Leiserson

Page 10: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.40

Strassen’s algorithm1. 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.

© 2001–4 by Charles E. Leiserson

Page 11: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.41

Strassen’s algorithm1. 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) = 7 T(n/2) + Θ(n2)

© 2001–4 by Charles E. Leiserson

Page 12: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.42

Analysis of StrassenT(n) = 7 T(n/2) + Θ(n2)

© 2001–4 by Charles E. Leiserson

Page 13: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.43

Analysis of StrassenT(n) = 7 T(n/2) + Θ(n2)

nlogba = nlog27 ≈ n2.81 ⇒ CASE 1 ⇒ T(n) = Θ(nlg 7).

© 2001–4 by Charles E. Leiserson

Page 14: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.44

Analysis of StrassenT(n) = 7 T(n/2) + Θ(n2)

nlogba = nlog27 ≈ n2.81 ⇒ CASE 1 ⇒ T(n) = Θ(nlg 7).

The number 2.81 may 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 ≥ 32 or so.

© 2001–4 by Charles E. Leiserson

Page 15: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.45

Analysis of StrassenT(n) = 7 T(n/2) + Θ(n2)

nlogba = nlog27 ≈ n2.81 ⇒ CASE 1 ⇒ T(n) = Θ(nlg 7).

Best to date (of theoretical interest only): Θ(n2.376L).

The number 2.81 may 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 ≥ 32 or so.

© 2001–4 by Charles E. Leiserson

Page 16: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.46

VLSI layoutProblem: Embed a complete binary tree with n leaves in a grid using minimal area.

© 2001–4 by Charles E. Leiserson

Page 17: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.47

VLSI layoutProblem: Embed a complete binary tree with n leaves in a grid using minimal area.

H(n)

W(n)

© 2001–4 by Charles E. Leiserson

Page 18: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.48

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)

© 2001–4 by Charles E. Leiserson

Page 19: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.49

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)

© 2001–4 by Charles E. Leiserson

Page 20: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.50

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)© 2001–4 by Charles E. Leiserson

Page 21: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.51

H-tree embeddingL(n)

L(n)

© 2001–4 by Charles E. Leiserson

Page 22: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.52

H-tree embeddingL(n)

L(n)

L(n/4) L(n/4)Θ(1)© 2001–4 by Charles E. Leiserson

Page 23: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.53

H-tree embeddingL(n)

L(n)

L(n/4) L(n/4)Θ(1)

L(n) = 2L(n/4) + Θ(1)= Θ( )n

Area = Θ(n)

© 2001–4 by Charles E. Leiserson

Page 24: Divide-and-conquer algorithm - cgi.cse.unsw.edu.aucgi.cse.unsw.edu.au/~cs3121/Lectures/MoreDivideAndConquer.pdf · September 15, 2004 Introduction to Algorithms L3.31 Divide-and-conquer

September 15, 2004 Introduction to Algorithms L3.54

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).

• The divide-and-conquer strategy often leads to efficient algorithms.

© 2001–4 by Charles E. Leiserson