PPT

Dynamic Programming 1
Neil Tang
4/15/2008
CS223 Advanced Data Structures and Algorithms
1
Class Overview
 Basic Idea
 Fibonacci numbers
 Recursive equation evaluation
 All-pairs shortest paths
CS223 Advanced Data Structures and Algorithms
2
Basic Idea
 Mathematically express the problem in the recursive form.
 Solve it by a non-recursive algorithm that systematically
records the answers to the subproblems in a table.
CS223 Advanced Data Structures and Algorithms
3
Fibonacci Numbers
 fib(N) = fib(N-1) + fib(N-2)
CS223 Advanced Data Structures and Algorithms
4
Fibonacci Numbers
CS223 Advanced Data Structures and Algorithms
5
Fibonacci Numbers
 A dynamic programming based algorithm
CS223 Advanced Data Structures and Algorithms
6
Recursive Equation Evaluation
2
C(N ) 
N
N 1
 C (i)  N
i 0
CS223 Advanced Data Structures and Algorithms
7
Recursive Equation Evaluation
CS223 Advanced Data Structures and Algorithms
8
Recursive Equation Evaluation
 A dynamic programming based algorithm
CS223 Advanced Data Structures and Algorithms
9
All-pairs Shortest Path
 The all-pairs shortest path problem: Given a weighted
graph G, find the shortest (minimum cost) path between
every pair of nodes in G.
CS223 Advanced Data Structures and Algorithms
10
All-Pairs Shortest Path
 Recursive expression for node pair (i, j)
Dk,i,j = min{Dk-1,i,j, Dk-1,i,k+Dk-1,k,j}
CS223 Advanced Data Structures and Algorithms
11
All-Pairs Shortest Path
Time Complexity: O(|V|3)
CS223 Advanced Data Structures and Algorithms
12