Dynamic Programming Dynamic Programming is a general algorithm

  • Slides: 8
Download presentation
Dynamic Programming • Dynamic Programming is a general algorithm design technique • Invented by

Dynamic Programming • Dynamic Programming is a general algorithm design technique • Invented by American mathematician Richard Bellman in the 1950 s to solve optimization problems • “Programming” here means “planning” • Main idea: • solve several smaller (overlapping) subproblems • record solutions in a table so that each subproblem is only solved once • final state of the table will be (or contain) solution Design and Analysis of Algorithms - Chapter 8 1

Example: Fibonacci numbers • Recall definition of Fibonacci numbers: f(0) = 0 f(1) =

Example: Fibonacci numbers • Recall definition of Fibonacci numbers: f(0) = 0 f(1) = 1 f(n) = f(n-1) + f(n-2) • Computing the nth Fibonacci number recursively (top-down): f(n) f(n-1) f(n-2) + + f(n-3) f(n-2) f(n-3) + f(n-4) Design and Analysis of Algorithms - Chapter 8 2

Example: Fibonacci numbers Computing the nth fibonacci number using bottom-up iteration: • f(0) =

Example: Fibonacci numbers Computing the nth fibonacci number using bottom-up iteration: • f(0) = 0 • f(1) = 1 • f(2) = 0+1 = 1 • f(3) = 1+1 = 2 • f(4) = 1+2 = 3 • f(5) = 2+3 = 5 • • • f(n-2) = • f(n-1) = • f(n) = f(n-1) + f(n-2) Design and Analysis of Algorithms - Chapter 8 3

Examples of Dynamic Programming Algorithms • Computing binomial coefficients • Optimal chain matrix multiplication

Examples of Dynamic Programming Algorithms • Computing binomial coefficients • Optimal chain matrix multiplication • Constructing an optimal binary search tree • Warshall’s algorithm for transitive closure • Floyd’s algorithms for all-pairs shortest paths • Some instances of difficult discrete optimization problems: • travelling salesman • knapsack Design and Analysis of Algorithms - Chapter 8 4

Warshall’s Algorithm: Transitive Closure • Computes the transitive closure of a relation • (Alternatively:

Warshall’s Algorithm: Transitive Closure • Computes the transitive closure of a relation • (Alternatively: all paths in a directed graph) • Example of transitive closure: 3 3 1 1 2 4 0 1 0 0 0 1 1 0 0 2 Design and Analysis of Algorithms - Chapter 8 4 0 1 0 1 1 1 0 1 0 1 5

Warshall’s Algorithm • Main idea: a path exists between two vertices i, j, iff

Warshall’s Algorithm • Main idea: a path exists between two vertices i, j, iff • there is an edge from i to j; or • there is a path from i to j going through vertex 1 and/or 2; or • there is a path from i to j going through vertex 1, 2, and/or 3; or • . . . • there is a path from i to j going through any of the other vertices 3 3 1 1 4 2 0 1 0 0 R 0 0 1 0 0 4 2 R 1 0 0 0 0 1 1 1 0 0 0 1 0 0 4 2 R 2 0 0 1 0 0 0 1 1 0 1 0 1 4 2 R 3 0 0 1 0 0 0 1 1 Design and Analysis of Algorithms - Chapter 8 1 1 0 1 0 1 3 1 4 2 R 4 0 0 1 1 1 1 0 1 0 1 6

Warshall’s Algorithm • In the kth stage determine if a path exists between two

Warshall’s Algorithm • In the kth stage determine if a path exists between two vertices i, j using just vertices among 1, …, k { R(k)[i, j] = R(k-1)[i, j] (path using just 1 , …, k-1) or (R(k-1)[i, k] and R(k-1)[k, j]) (path from i to k and from k to i k using just 1 , …, k-1) i kth stage j Design and Analysis of Algorithms - Chapter 8 7

Floyd’s Algorithm: All pairs shortest paths • In a weighted graph, find shortest paths

Floyd’s Algorithm: All pairs shortest paths • In a weighted graph, find shortest paths between every pair of vertices • Same idea: construct solution through series of matrices D(0), D(1), … using an initial subset of the vertices as intermediaries. • Example: 3 4 1 1 6 1 5 2 3 4 Design and Analysis of Algorithms - Chapter 8 8