Dynamic Programming for Optimization Problems in CS 477/677 Lectures

analysis of algorithms cs 477 677 n.w
1 / 31
Embed
Share

Explore the concepts of dynamic programming in CS 477/677 lectures, focusing on optimization problems, optimal substructure, and matrix chain multiplication. Learn how dynamic programming is used to find solutions with optimal values and make choices for optimal solutions efficiently.

  • Dynamic Programming
  • Optimization Problems
  • CS 477/677
  • Lectures
  • Matrix Chain

Uploaded on | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.

E N D

Presentation Transcript


  1. Analysis of Algorithms CS 477/677 Instructor: Monica Nicolescu Lecture 17

  2. Dynamic Programming Used for optimization problems Find a solution with the optimal value (minimum or maximum) A set of choices must be made to get an optimal solution There may be many solutions that return the optimal value: we want to find one of them CS 477/677 - Lecture 17 2

  3. Elements of Dynamic Programming Optimal Substructure An optimal solution to a problem contains within it an optimal solution to subproblems Optimal solution to the entire problem is build in a bottom-up manner from optimal solutions to subproblems Overlapping Subproblems If a recursive algorithm revisits the same subproblems again and again the problem has overlapping subproblems CS 477/677 - Lecture 17 3

  4. Matrix-Chain Multiplication Given a chain of matrices A1, A2, , An , where for i = 1, 2, , n matrix Ai has dimensions pi-1x pi, fully parenthesize the product A1 A2 An in a way that minimizes the number of scalar multiplications. A1 A2 Ai Ai+1 An p0 x p1 p1 x p2 pi-1 x pi pi x pi+1 pn-1 x pn CS 477/677 - Lecture 17 4

  5. 2. A Recursive Solution Subproblem: determine the minimum cost of parenthesizing Ai j = Ai Ai+1 Aj for 1 i j n Let m[i, j] = the minimum number of multiplications needed to compute Ai j Full problem (A1..n): m[1, n] i = j: Ai i = Ai m[i, i] = 0, for i = 1, 2, , n CS 477/677 - Lecture 17 5

  6. 2. A Recursive Solution Consider the subproblem of parenthesizing Ai j = Ai Ai+1 Aj pi-1pkpj for 1 i j n = Ai k Ak+1 j m[i, k] for i k < j m[k+1,j] Assume that the optimal parenthesization splits the product Ai Ai+1 Aj at k (i k < j) m[i, j] = m[i, k] + m[k+1, j] + pi-1pkpj min # of multiplications to compute Ai k min # of multiplications to compute Ak+1 j CS 477/677 - Lecture 17 # of multiplications to compute Ai kAk j 6

  7. 2. A Recursive Solution m[i, j] = m[i, k] + m[k+1, j] + pi-1pkpj We do not know the value of k There are j i possible values for k: k = i, i+1, , j-1 Minimizing the cost of parenthesizing the product Ai Ai+1 Aj becomes: 0 m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj}if i < j i k<j if i = j CS 477/677 - Lecture 17 7

  8. 3. Computing the Optimal Costs if i = j 0 m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj}if i < j i k<j How many subproblems do we have? Parenthesize Ai j for 1 i j n One subproblem for each choice of i and j 1 2 3 n (n2) n j 3 2 1 CS 477/677 - Lecture 17 8 i

  9. 3. Computing the Optimal Costs if i = j 0 m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj}if i < j i k<j How do we fill in table m[1..n, 1..n]? Determine which entries of the table are used in computing m[i, j] Ai j = Ai k Ak+1 j Fill in m such that it corresponds to solving problems of increasing length CS 477/677 - Lecture 17 9

  10. 3. Computing the Optimal Costs if i = j 0 m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj}if i < j i k<j Length = 1: i = j, i = 1, 2, , n Length = 2: j = i + 1, i = 1, 2, , n-1 1 2 3 n n m[1, n] gives the optimal solution to the problem j 3 Compute elements on each diagonal, starting with the longest diagonal. In a similar matrix s we keep the optimal values of k. 2 1 i CS 477/677 - Lecture 17 10

  11. Example: min {m[i, k] + m[k+1, j] + pi-1pkpj} m[2, 2] + m[3, 5] + p1p2p5 m[2, 3] + m[4, 5] + p1p3p5 m[2, 4] + m[5, 5] + p1p4p5 k = 2 m[2, 5] = min k = 3 k = 4 1 2 3 4 5 6 6 5 Values m[i, j] depend only on values that have been previously computed 4 j 3 2 1 i CS 477/677 - Lecture 17 11

  12. Example min {m[i, k] + m[k+1, j] + pi-1pkpj} 1 2 3 Compute A1 A2 A3 A1: 10 x 100 (p0 x p1) A2: 100 x 5 (p1 x p2) A3: 5 x 50 (p2 x p3) m[i, i] = 0 for i = 1, 2, 3 m[1, 2] = m[1, 1] + m[2, 2] + p0p1p2 = 0 + 0 + 10 *100* 5 = 5,000 m[2, 3] = m[2, 2] + m[3, 3] + p1p2p3 = 0 + 0 + 100 * 5 * 50 = 25,000 m[1, 3] = min m[1, 1] + m[2, 3] + p0p1p3 = 75,000 (A1(A2A3)) m[1, 2] + m[3, 3] + p0p2p3 = 7,500 ((A1A2)A3) 2 2 3 0 25000 7500 1 2 0 5000 0 1 (A1A2) (A2A3) CS 477/677 - Lecture 17 12

  13. 4. Construct the Optimal Solution Store the optimal choice made at each subproblem s[i, j] = a value of k such that an optimal parenthesization of Ai..j splits the product between Ak and Ak+1 1 2 3 n n k j 3 2 1 i CS 477/677 - Lecture 17 13

  14. 4. Construct the Optimal Solution s[1, n] is associated with the entire product A1..n The final matrix multiplication will be split at k = s[1, n] A1..n = A1..k Ak+1..n A1..n = A1..s[1, n] As[1, n]+1..n For each subproduct recursively find the corresponding value of k that results in an optimal parenthesization 1 2 3 n n j 3 2 1 i CS 477/677 - Lecture 17 14

  15. 4. Construct the Optimal Solution s[i, j] = value of k such that the optimal parenthesization of Ai Ai+1 Aj splits the product between Ak and Ak+1 1 2 3 4 5 6 3 3 3 1 1 - 3 3 3 2 - 3 3 3 - 5 4 - 5 - - 6 5 s[1, n] = 3 A1..6 = A1..3 A4..6 s[1, 3] = 1 A1..3 = A1..1 A2..3 s[4, 6] = 5 A4..6 = A4..5 A6..6 4 3 j 2 1 i CS 477/677 - Lecture 17 15

  16. 4. Construct the Optimal Solution PRINT-OPT-PARENS(s, i, j) 1 2 3 4 5 6 if i = j 3 3 3 1 1 - 3 3 3 2 - 3 3 3 - 5 4 - 5 - - 6 5 thenprint A i 4 else j 3 print ( 2 PRINT-OPT-PARENS(s, i, s[i, j]) 1 PRINT-OPT-PARENS(s, s[i, j] + 1, j) i print ) CS 477/677 - Lecture 17 16

  17. Example: A1A6 ( ( A1( A2A3) ) ( ( A4 A5 ) A6 ) ) 1 2 3 4 5 6 PRINT-OPT-PARENS(s, i, j) if i = j thenprint A i elseprint ( PRINT-OPT-PARENS(s, i, s[i, j]) PRINT-OPT-PARENS(s, s[i, j] + 1, j) print ) s[1..6, 1..6] 3 3 3 1 1 - 3 3 3 2 - 3 3 3 - 5 4 - 5 - - 6 5 4 j 3 2 1 P-O-P(s, 1, 6) s[1, 6] = 3 i = 1, j = 6 ( P-O-P (s, 1, 3) s[1, 3] = 1 i = 1, j = 3 ( P-O-P(s, 1, 1) A1 i P-O-P(s, 2, 3) s[2, 3] = 2 i = 2, j = 3 ( P-O-P (s, 2, 2) A2 P-O-P (s, 3, 3) A3 ) CS 477/677 - Lecture 17 ) 17

  18. Memoization Top-down approach with the efficiency of typical bottom-up dynamic programming approach Maintains an entry in a table for the solution to each subproblem memoize the inefficient recursive top-down algorithm When a subproblem is first encountered its solution is computed and stored in that table Subsequent calls to the subproblem simply look up that value CS 477/677 - Lecture 17 18

  19. Memoized Matrix-Chain Alg.: MEMOIZED-MATRIX-CHAIN(p) 1. n length[p] 2. fori 1ton Initialize the m table with large values that indicate whether the values of m[i, j] have been computed 3. doforj iton dom[i, j] 4. 5. return LOOKUP-CHAIN(p, 1, n) Top-down approach CS 477/677 - Lecture 17 19

  20. Memoized Matrix-Chain Alg.: LOOKUP-CHAIN(p, i, j) 1. ifm[i, j] < 2. thenreturnm[i, j] 3. ifi = j 4. thenm[i, j] 0 5. elsefork itoj 1 6. doq LOOKUP-CHAIN(p, i, k) + LOOKUP-CHAIN(p, k+1, j) + pi-1pkpj 7. ifq < m[i, j] 8. thenm[i, j] q 9. returnm[i, j] Running time is O(n3) m[i, j] = min {m[i, k] + m[k+1, j] + pi-1pkpj} i k<j CS 477/677 - Lecture 17 20

  21. Dynamic Progamming vs. Memoization Advantages of dynamic programming vs. memoized algorithms No overhead for recursion The regular pattern of table accesses may be used to reduce time or space requirements Advantages of memoized algorithms vs. dynamic programming More intuitive CS 477/677 - Lecture 17 21

  22. Optimal Substructure - Examples Assembly line Fastest way of going through a station j contains: the fastest way of going through station j-1 on either line Matrix multiplication Optimal parenthesization of Ai Ai+1 Aj that splits the product between Ak and Ak+1 contains: an optimal solution to the problem of parenthesizing Ai..k an optimal solution to the problem of parenthesizing Ak+1..j CS 477/677 - Lecture 17 22

  23. Parameters of Optimal Substructure How many subproblems are used in an optimal solution for the original problem Assembly line: Matrix multiplication: How many choices we have in determining which subproblems to use in an optimal solution Assembly line: Matrix multiplication: One subproblem (the line that gives best time) Two subproblems (subproducts Ai..k, Ak+1..j) Two choices (line 1 or line 2) j - i choices for k (splitting the product) CS 477/677 - Lecture 17 23

  24. Parameters of Optimal Substructure Intuitively, the running time of a dynamic programming algorithm depends on two factors: Number of subproblems overall How many choices we examine for each subproblem Assembly line (n) subproblems (n stations) 2 choices for each subproblem Matrix multiplication: (n2) subproblems (1 i j n) At most n-1 choices (n)overall (n3)overall CS 477/677 - Lecture 17 24

  25. Longest Common Subsequence Given two sequences X = x1, x2, , xm Y = y1, y2, , yn find a maximum length common subsequence (LCS) of X and Y E.g.: X = A, B, C, B, D, A, B Subsequence of X: A subset of elements in the sequence taken in order (but not necessarily consecutive) A, B, D , B, C, D, B , etc. 25 CS 477/677 - Lecture 17

  26. Example X = A, B, C, B, D, A, B X = A, B, C, B, D, A, B Y = B, D, C, A, B, A Y = B, D, C, A, B, A B, C, B, A and B, D, A, B are longest common subsequences of X and Y (length = 4) B, C, A , however is not a LCS of X and Y CS 477/677 - Lecture 17 26

  27. Brute-Force Solution For every subsequence of X, check whether it s a subsequence of Y There are 2m subsequences of X to check Each subsequence takes (n) time to check scan Y for first letter, from there scan for second, and so on Running time: (n2m) CS 477/677 - Lecture 17 27

  28. 1. Making the choice X= A, B, D, E Y = Z, B, E Choice: include one element into the common sequence (E) and solve the resulting subproblem X= A, B, D, G Y = Z, B, D Choice: exclude an element from a string and solve the resulting subproblem X= A, B, D, G Y = Z, B, D CS 477/677 - Lecture 17 28

  29. Notations Given a sequence X = x1, x2, , xm we define the i-th prefix of X, for i = 0, 1, 2, , m Xi = x1, x2, , xi c[i, j] = the length of a LCS of the sequences Xi = x1, x2, , xi and Yj = y1, y2, , yj CS 477/677 - Lecture 17 29

  30. 2. A Recursive Solution Case 1: xi = yj Xi = A, B, D, E Yj = Z, B, E e.g.: c[i, j] = c[i - 1, j - 1] + 1 Append xi = yj to the LCS of Xi-1 and Yj-1 Must find a LCS of Xi-1 and Yj-1 optimal solution to a problem includes optimal solutions to subproblems CS 477/677 - Lecture 17 30

  31. Readings Chapters 14, 15 CS 477/677 - Lecture 17 31

Related


More Related Content