0% found this document useful (0 votes)
10 views

Dynamic Programming

Uploaded by

Aparna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Dynamic Programming

Uploaded by

Aparna
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 32

DYNAMIC

PROGRAMMING
ALGORITHM PARADIGMS
Greedy: Makes a series of choices, each of which looks best
at the moment (locally optimal choice), with the hope that
these local optima lead to a globally optimal solution.
Divide-and-conquer: Break up a problem into independent
subproblems; solve each subproblem; combine solutions to
subproblems to form solution to the original problem.
Dynamic programming: Break up a problem into a series of
overlapping subproblems; combine solutions to smaller
subproblems to form solution to large subproblem
DYNAMIC PROGRAMMING

Main idea:
• set up a recurrence relating a solution
to a larger instance to solutions of
some smaller instances
• solve smaller instances once
• record solutions in a table
• extract the solution to the initial
instance from that table
FIBONACCI NUMBERS
Pseudocode:
Recall the definition of
Fibonacci numbers: fib(n)
{
If(n==0)
 F(n) = F(n-1) + F(n-2)
return 0;
 F(0) = 0
if ( n<=2 )
 F(1) = 1
return 1;
return (fib(n-1) + fib(n-2) );
}
FLAW IN RECURSION
• The same subproblem is
being recomputed
repeatedly
• This can be avoided by
storing the results of
subproblems and reusing it
● Memoization: Store
intermediate results to reuse
● Memoized Algorithm

MEMOIZ memo = {};

ED mfib(n):
if n in memo: return
SOLUTIO memo[n]

N if n<=2: f=1
else: f=mfib(n-1)+mfib(n-2)
memo[n]=f
return f
• Use an iterative method
dynamic_fib(n){
int f[n+1];
BOTTOM f[1]=f[2]=1;
-UP for (int i=3; i<=n;i++)
APPROA f[i]=f[i-1]+f[i-2];

CH return f[n];
}
• Cost is O(n) (both time and
space)
REQUIREMENTS
● Simple Subproblem: Must be able to divide problems into simple
subproblems each similar to the original
- Usually, there are polynomial number of subproblems
● Subproblem Optimality: The optimal solution to the global
problem must be composition of optimal subproblem solutions
using a simple combining operation
● Subproblem Overlap: Optimal solutions to unrelated sub-
problems can contain subproblems in common
5 EASY STEPS
● Define subproblems
● Guess part of the solution
● Relate subproblems
● Recurse and Memoize or build a DP table
● Solve the final problem
COIN CHANGE PROBLEM
● You are given some amount N and a set of
denominations C={c1,c2,..,cd}, and each
denominations has infinite coins.
● The goal is to make change for the amount
n using the given denominations.
- Minimize the total number of coins
returned for a particular quantity of change.
GREEDY APPROACH
Example: Example:
Denominations available: {1, 5, 6, 9}
Denominations available:
Amount: N = 11 {4,10,25}
• 11 - 9 = 2
Amount: N = 41
• 2-1=1
• 41 – 25 = 16
• 1–1
• 16 – 10 = 6
Number of coins requires to make
change to 11 = 3 • 6–4=2
- Coin set = {9, 1, 1}
Solution does not exist
RECURSIVE APPROACH
DYNAMIC
PROGRAMMING
Denominations available: {1, 5, 6, 9}
Amount: N = 10

0 1 2 3 4 5 6 7 8 9 10
1
5
6
9

c[i-1][j] if D[i]>j
c[i][j] =
min{ c[i-1][j], 1+c[i][ j-D[i] ] } otherwise
Denominations available: {2, 3, 5, 10}
Amount: N = 15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
2
3
5
10
0-1 KNAPSACK
PROBLEM
OPTIMIZAT
ION
PROBLEM
DP
SOLUTION
● Relating
subproblems
● Best subset of Sk that has total
weight w is either best subset Sk-1

DP with weight w, or best subset Sk-1


with weight w-wk plus item k
SOLUTION ●
Item k can be part of the knapsack
or not
Item 1 2 3 4
Weigh 2 3 4 5
t
Benefi 1 2 5 6
t

Weight
0 1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 1 1 1 1 1 1 1 1
Items
2 0
3 0
4 0
Total Capacity = 10
N=4

KP(4,10)
Yes No

KP(3,10) KP(3,5)
Yes No

KP(2,10) KP(2,6)
Yes No

KP(1,10) KP(1,8)
Yes No Yes No

KP(0,10) KP(0,8) KP(0,8) KP(1,6)


MEMOIZ
ED
BOTTOM-
UP
APPROACH
MATRIX CHAIN
MULTIPLICATION
IMPACT OF
PARENTHESIZATION
BRUTE FORCE
DP STRATEGY
• Guess: Outermost or last multiplication to be
performed
• (Ai...Ak).(Ak+1....Aj)
• Relate subproblems
• Try all possibilities for k to get best solution
• Recursion
• Ni,j = min i<=k<j [Ni,k + N k+1,j + (di-1 * dk * dj)]
RECURSIVE
ALGORITHM
DP
STRATEGY
DP
STRATEGY
RECURSION
WITH
MEMOIZATION
BOTTOM-UP
APPROACH
EXAMPLE: CLR PG 276
• N=6 and A1:30x35, A2:35x15, A3:15x5, A4:5x10,
A5:10x20, A6:20x25

You might also like