Dynamic Programming - PowerPoint PPT Presentation

About This Presentation
Title:

Dynamic Programming

Description:

Computing the nth Fibonacci number recursively (top-down): f(n) f(n-1) f(n-2) ... Example: Fibonacci numbers. Computing the nth fibonacci number using bottom ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 9
Provided by: john1382
Learn more at: https://www.cse.sc.edu
Category:

less

Transcript and Presenter's Notes

Title: Dynamic Programming


1
Dynamic Programming
  • Dynamic Programming is a general algorithm
    design technique
  • Invented by American mathematician Richard
    Bellman in the 1950s 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

2
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-2) f(n-3) f(n-3)
    f(n-4)
  • ...

3
Example Fibonacci numbers
  • Computing the nth fibonacci number using
    bottom-up iteration
  • f(0) 0
  • f(1) 1
  • f(2) 01 1
  • f(3) 11 2
  • f(4) 12 3
  • f(5) 23 5
  • f(n-2)
  • f(n-1)
  • f(n) f(n-1) f(n-2)

4
Examples of Dynamic Programming Algorithms
  • Computing binomial coefficients
  • Optimal chain matrix multiplication
  • Constructing an optimal binary search tree
  • Warshalls algorithm for transitive closure
  • Floyds algorithms for all-pairs shortest paths
  • Some instances of difficult discrete optimization
    problems
  • travelling salesman
  • knapsack

5
Warshalls Algorithm Transitive Closure
  • Computes the transitive closure of a relation
  • (Alternatively all paths in a directed graph)
  • Example of transitive closure

0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0
6
Warshalls 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 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

R0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0
0
R1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0
R2 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1
R3 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1 1
R4 0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1
7
Warshalls Algorithm
  • In the kth stage determine if a path exists
    between two vertices i, j using just vertices
    among 1,,k
  • R(k-1)i,j (path
    using just 1 ,,k-1)
  • R(k)i,j or
  • (R(k-1)i,k and R(k-1)k,j) (path from
    i to k

  • and from k to i

  • using just 1 ,,k-1)


k
i
kth stage
j
8
Floyds 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
Write a Comment
User Comments (0)
About PowerShow.com