Dynamic Programming
Dynamic Programming
S
Dynamic Programming
enters exits
Assembly 8 5 6 4 5 7
Line 2
Assembly-Line Scheduling
Assembly
Line 1 7 9 3 4 8 4
2 3
enters exits
4 2
Assembly 8 5 6 4 5 7
Line 2
Assembly-Line Scheduling
Assembly
Line 1 7 9 3 4 8 4
2 3
2 3 1 3 4
enters exits
2 1 2 2 1
4 2
Assembly 8 5 6 4 5 7
Line 2
Assembly-Line Scheduling
Assembly
Line 1 7 9 3 4 8 4
3 40
2 2 3 1 3 4
enters exits
2 1 2 2 1
4 2
41
Assembly 8 5 6 4 5 7
Line 2
Assembly-Line Scheduling
Assembly
Line 1 7 9 3 4 8 4
3 39
2 2 3 1 3 4
enters exits
2 1 2 2 1
4 2
Assembly 8 5 6 4 5 7
Line 2
Assembly-Line Scheduling
enters exits
Assembly 8 5 6 4 5 7
Line 2
Assembly-Line Scheduling
T
enters exits
Assembly
Line 2
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
Assembly-Line Scheduling
T1,5 T1,6
8 4 T = min( T1,6 + 3, T2,6 + 2)
T2,5 T2,6
Assembly-Line Scheduling
T1,5 T1,6
8 4 T = min( T1,6 + 3, T2,6 + 2)
T2,5 T2,6
Assembly-Line Scheduling
9
T1,1 T1,2 T1,3
Assembly
Line 1 7 9 3 T1,1 = 9
T2,1 = 12
2 2 3
enters
2 1
4
Assembly 8 5 6
Line 2
T2,1 T2,2 T2,3
12
Assembly-Line Scheduling
9 18
T1,1 T1,2 T1,3
Assembly
Line 1 7 9 3 T1,1 = 9
T2,1 = 12
2 2 3 T1,2 = min(T1,1 + 9,
enters T2,1 + 2 + 9)
2 1
4
Assembly 8 5 6
Line 2
T2,1 T2,2 T2,3
12
Assembly-Line Scheduling
9 18
T1,1 T1,2 T1,3
Assembly
Line 1 7 9 3 T1,1 = 9
T2,1 = 12
2 2 3 T1,2 = 18
enters T2,2 = min(T1,1 + 2 + 5,
2 1 T2,1 + 5)
4
Assembly 8 5 6
Line 2
T2,1 T2,2 T2,3
12 16
Assembly-Line Scheduling
9 18 20 24 32 35
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6
Assembly
Line 1 7 9 3 4 8 4
3 38
2 2 3 1 3 4 T
enters exits
2 1 2 2 1
4 2
Assembly 8 5 6 4 5 7
Line 2
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
12 16 22 25 30 37
Assembly-Line Scheduling
32 35
T1,5 T1,6
8 4 T = T1,6 + 3 ? or T2,6 + 2 ?
3 38
T T1,6 + 3 = T
4
exits T2,6 + 2 > T
1
2
5 7
T2,5 T2,6
30 37
Assembly-Line Scheduling
32 35
T1,5 T1,6
8 4 T = T1,6 + 3 ? or T2,6 + 2 ?
3 38
T T1,6 + 3 = T
4
exits T2,6 + 2 > T
1
2
5 7
T2,5 T2,6
30 37
Assembly-Line Scheduling
32 35
T1,5 T1,6
8 4 T1,6 = T1,5 + 4 ?
or T2,5 + 1 + 4 ?
3 38
4 T
T1,5 + 4 > T1,6
exits
T2,5 + 1 + 4 = T1,6
1
2
5 7
T2,5 T2,6
30 37
Assembly-Line Scheduling
32 35
T1,5 T1,6
8 4 T1,6 = T1,5 + 4 ?
or T2,5 + 1 + 4 ?
3 38
4 T
T1,5 + 4 > T1,6
exits
T2,5 + 1 + 4 = T1,6
1
2
5 7
T2,5 T2,6
30 37
Assembly-Line Scheduling
9 18 20 24 32 35
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6
Assembly
Line 1 7 9 3 4 8 4
3 38
2 2 3 1 3 4 T
enters exits
2 1 2 2 1
4 2
Assembly 8 5 6 4 5 7
Line 2
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
12 16 22 25 30 37
Assembly-Line Scheduling
T
exits T = min( T1,6 + 3, T2,6 + 2)
T2,5 T2,6
Assembly-Line Scheduling
9 18 20 24 32 35
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 1. Analyze the problem.
2. Find a recursive solution.
T 3. Compute the fastest time.
38
9 18 20 24 32 35
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 1. Analyze the problem.
2. Find a recursive solution.
T 3. Compute the fastest time.
38 4. Construct the fastest way.
9 18 20 24 32 35
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 1. Analyze the problem.
2. Find a recursive solution.
T 3. Compute the fastest time.
38 4. Construct the fastest way.
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6 This algorithm takes time.
12 16 22 25 30 37 Brute force :
When can we use
Dynamic Programming?
Optimal substructures
Overlapping subproblems
Overlapping Subprograms
T1,5 T1,6
T
8 4
3 T1,6 T2,6
4 T
exits
1 T1,5 T2,5 T1,5 T2,5
2
5 7 T1,4 T2,4 T1,4 T2,4 T1,4 T2,4 T1,4 T2,4
T2,5 T2,6
Overlapping Subprograms
T1,5 T1,6
T
8 4
3 T1,6 T2,6
4 T
exits
1 T1,5 T2,5 T1,5 T2,5
2
5 7 T1,4 T2,4 T1,4 T2,4 T1,4 T2,4 T1,4 T2,4
T2,5 T2,6
Optimal Substructures
d d
s s
Optimal Substructures
d d
s s
w
w
Memoization
Ordinary
- Bottom-up strategy
Memoization
- Top-down strategy
Memoization
Memoization Bottom Up
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 T1,1 T1,2 T1,3 T1,4 T1,5 T1,6
- - - - - -
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6 T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
- - - - - -
Memoization
T1,6 T2,6
T1,5 T2,5
Memoization
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 T1,4 T2,4
- - - - - -
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
… …
- - - - - -
Memoization
T1,3
T1,3
T1,3
T1,4
T1,6 T2,6
T1,5 T2,5
Memoization
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 T1,4 T2,4 T1,4 T2,4
9 18 20 24 - -
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
… …
12 16 22 - - - T1,3 T2,3
Memoization
T1,6 T2,6
T1,5 T2,5
Memoization
T1,1 T1,2 T1,3 T1,4 T1,5 T1,6 T1,4 T2,4 T1,4 T2,4
9 18 20 24 32 -
T2,1 T2,2 T2,3 T2,4 T2,5 T2,6
… … … …
12 16 22 25 - -
Memoization
T1,6 T2,6
T = 38
T1,6 T2,6
Memoization
– {A, C, G, T}
S1 = ACCGGTCGTGCGCGGAAGCCGGCCGAA
S2 = GTCGTTCGGAATGCCGTTGCTCTGTAAA
How similar are they?
Longest Common Subsequence
S1 = ACCGGTCGTGCGCGGAAGCCGGCCGAA
S2 = GTCGTTCGGAATGCCGTTGCTCTGTAAA
If i = 0 or j = 0 then ci,j = 0
Else
If xi =/ yj then ci,j = max(ci-1,j, ci,j-1)
If xi = yj then ci,j = ci-1,j-1 + 1
Longest Common Subsequence