Dynamic Programming CSE 2320 – Algorithms and Data

Dynamic Programming CSE 2320 – Algorithms and Data
1 / 1
Dynamic Programming CSE 2320 – Algorithms and Data - slide 1 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 2 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 3 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 4 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 5 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 6 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 7 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 8 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 9 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 10 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 11 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 12 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 13 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 14 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 15 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 16 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 17 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 18 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 19 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 20 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 21 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 22 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 23 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 24 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 25 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 26 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 27 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 28 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 29 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 30 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 31 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 32 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 33 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 34 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 35 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 36 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 37 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 38 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 39 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 40 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 41 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 42 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 43 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 44 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 45 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 46 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 47 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 48 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 49 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 50 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 51 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 52 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 53 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 54 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 55 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 56 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 57 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 58 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 59 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 60 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 61 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 62 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 63 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 64 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 65 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 66 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 67 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 68 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 69 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 70 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 71 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 72 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 73 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 74 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 75 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 76 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 77 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 78 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 79 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 80 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 81 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 82 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 83 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 84 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 85 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 86 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 87 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 88 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 89 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 90 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 91 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 92 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 93 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 94 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 95 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 96 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 97 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 98 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 99 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 100 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 101 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 102 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 103 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 104 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 105 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 106 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 107 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 108 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 109 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 110 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 111 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 112 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 113 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 114 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 115 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 116 of 117 Dynamic Programming CSE 2320 – Algorithms and Data - slide 117 of 117
Dynamic Programming CSE 2320 Algorithms and Data Structures University of Texas at Arlington Alexandra Stefan (Includes images, formulas and examples from CLRS, Dr. Bob Weems, wikipedia) 1 4212020 Approaches for solving DP Problems

Related Topics

Download this presentation From Below

"Dynamic Programming CSE 2320 – Algorithms and Data" is the property of its rightful owner. Permission is granted to download and print the materials on this website for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.

Presentation Transcript

01
Dynamic Programming CSE 2320 – Algorithms and Data Structures
University of Texas at Arlington

Alexandra Stefan
(Includes images, formulas and examples from CLRS, Dr. Bob Weems, wikipedia) 1 4/21/2020<br>
02
Approaches for solving DP Problems Greedy
- typically not optimal solution (for DP-type problems)
- Build solution
- Use a criterion for picking
- Commit to a choice and do not look back Brute Force
- Optimal solution
- Produce all possible combinations, [check if valid], and keep the best.
- Time: exponential
- Space: depends on implementation
- It may be hard to generate all possible combinations DP
- Optimal solution
- Write math function, sol, that captures the dependency of solution to current pb on solutions to smaller problems
- Can be implemented in any of the following: iterative, memoized, recursive Iterative (bottom-up) - BEST
- Optimal solution
- sol is an array (1D or 2D). Size: n+1
- Fill in sol from 0 to n
- Time: polynomial (or pseudo-polynomial for some problems)
- Space: polynomial (or pseudo-polynomial
- To recover the choices that gave the optimal answer, must backtrace => must keep picked array (1D or 2D). Sliding window
- Improves the iterative solution
- Saves space
- If used, cannot recover the choices (gives the optimal value, but not the choices) Memoized
- Optimal solution
- Combines recursion and usage of sol array.
- sol is an array (1D or 2D)
- Fill in sol from 0 to n
- Time: same as iterative version (typically)
- Space: same as iterative version (typically) + space for frame stack. (Frame stack depth is typically smaller than the size of the sol array) Recursive
- Optimal solution
- Time: exponential (typically) =>
- DO NOT USE
- Space: depends on implementation (code). E.g. store all combinations, or generate, evaluate on the fly and keep best seen so far.
- Easy to code given math function DP can solve:
some types of counting problems (e.g. stair climbing)
some type of optimization problems (e.g. Knapsack)
some type of recursively defined pbs (e.g. Fibonacci) Some DP solutions have pseudo polynomial time<br>
03
Dynamic Programming (DP) - CLRS Dynamic programming (DP) applies when a problem has both of these properties:
Optimal substructure: “optimal solutions to a problem incorporate optimal solutions to related subproblems, which we may solve independently”.
Overlapping subproblems: “a recursive algorithm revisits the same problem repeatedly”.
Dynamic programming is typically used to:
Solve optimization problems that have the above properties.
Solve counting problems –e.g. Stair Climbing or Matrix Traversal.
Speed up existing recursive implementations of problems that have overlapping subproblems (property 2) – e.g. Fibonacci.
Compare dynamic programming with divide and conquer. 3<br>