Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of...
-
Upload
kaylee-cockrill -
Category
Documents
-
view
232 -
download
1
Transcript of Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of...
![Page 1: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/1.jpg)
Overview
• What is Dynamic Programming?
• A Sequence of 4 Steps
• Longest Common Subsequence
• Elements of Dynamic Programming
S-1
![Page 2: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/2.jpg)
What is Dynamic Programming?
• Dynamic programming solves optimization problems by combining solutions to sub-problems
• “Programming” refers to a tabular method with a series of choices, not “coding”
S-2
![Page 3: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/3.jpg)
What is Dynamic Programming? …contd
• A set of choices must be made to arrive at an optimal solution
• As choices are made, subproblems of the same form arise frequently
• The key is to store the solutions of subproblems to be reused in the future
S-3
![Page 4: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/4.jpg)
What is Dynamic Programming? …contd
• Recall the divide-and-conquer approach– Partition the problem into independent
subproblems– Solve the subproblems recursively– Combine solutions of subproblems
• This contrasts with the dynamic programming approach
S-4
![Page 5: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/5.jpg)
What is Dynamic Programming? …contd
• Dynamic programming is applicable when subproblems are not independent
– i.e., subproblems share subsubproblems– Solve every subsubproblem only once and
store the answer for use when it reappears
• A divide-and-conquer approach will do more work than necessary
S-5
![Page 6: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/6.jpg)
A Sequence of 4 Steps
• A dynamic programming approach consists of a sequence of 4 steps
1. Characterize the structure of an optimal solution
2. Recursively define the value of an optimal solution
3. Compute the value of an optimal solution in a bottom-up fashion
4. Construct an optimal solution from computed information
S-6
![Page 7: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/7.jpg)
Longest Common Subsequence (LCS)
Application: comparison of two DNA stringsEx: X= {A B C B D A B }, Y= {B D C A B A}
Longest Common Subsequence:
X = A B C B D A B
Y = B D C A B A
Brute force algorithm would compare each subsequence of X with the symbols in Y
S-7
![Page 8: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/8.jpg)
LCS Algorithm• if |X| = m, |Y| = n, then there are 2m
subsequences of x; we must compare each with Y (n comparisons)
• So the running time of the brute-force algorithm is O(n 2m)
• Notice that the LCS problem has optimal substructure: solutions of subproblems are parts of the final solution.
• Subproblems: “find LCS of pairs of prefixes of X and Y”
S-8
![Page 9: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/9.jpg)
LCS Algorithm• First we’ll find the length of LCS. Later we’ll
modify the algorithm to find LCS itself.
• Define Xi, Yj to be the prefixes of X and Y of length i and j respectively
• Define c[i,j] to be the length of LCS of Xi and Yj
• Then the length of LCS of X and Y will be c[m,n]
otherwise]),1[],1,[max(
],[][ if1]1,1[],[
jicjic
jyixjicjic
S-9
![Page 10: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/10.jpg)
LCS recursive solution
• We start with i = j = 0 (empty substrings of x
and y)
• Since X0 and Y0 are empty strings, their LCS
is always empty (i.e. c[0,0] = 0)
• LCS of empty string and any other string is
empty, so for every i and j: c[0, j] = c[i,0] = 0
otherwise]),1[],1,[max(
],[][ if1]1,1[],[
jicjic
jyixjicjic
S-10
![Page 11: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/11.jpg)
LCS recursive solution
• When we calculate c[i,j], we consider two
cases:
• First case: x[i]=y[j]: one more symbol in
strings X and Y matches, so the length of LCS
Xi and Yj equals to the length of LCS of
smaller strings Xi-1 and Yi-1 , plus 1
otherwise]),1[],1,[max(
],[][ if1]1,1[],[
jicjic
jyixjicjic
S-11
![Page 12: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/12.jpg)
LCS recursive solution
• Second case: x[i] != y[j]
• As symbols don’t match, our solution is not
improved, and the length of LCS(Xi , Yj) is the
same as before (i.e. maximum of LCS(Xi, Yj-1)
and LCS(Xi-1,Yj)
otherwise]),1[],1,[max(
],[][ if1]1,1[],[
jicjic
jyixjicjic
S-12
![Page 13: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/13.jpg)
LCS Length AlgorithmLCS-Length(X, Y)1. m = length(X) 2. n = length(Y)
3. for i = 1 to m c[i,0] = 0 // special case: Y0
4. for j = 1 to n c[0,j] = 0 // special case: X0
5. for i = 1 to m // for all Xi
6. for j = 1 to n // for all Yj
7. if ( Xi == Yj )8. c[i,j] = c[i-1,j-1] + 19. else c[i,j] = max( c[i-1,j], c[i,j-1] )10. return c S-13
![Page 14: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/14.jpg)
LCS ExampleWe’ll see how LCS algorithm works on the
following example:
• X = ABCB
• Y = BDCAB
LCS(X, Y) = BCBX = A B C BY = B D C A B
What is the Longest Common Subsequence of X and Y?
S-14
![Page 15: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/15.jpg)
LCS Example (0)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
X = ABCB; m = |X| = 4Y = BDCAB; n = |Y| = 5Allocate array c[4,5]
ABCBBDCAB
S-15
![Page 16: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/16.jpg)
LCS Example (1)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
for i = 1 to m c[i,0] = 0 for j = 1 to n c[0,j] = 0
ABCBBDCAB
S-16
![Page 17: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/17.jpg)
LCS Example (2)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
0
ABCBBDCAB
S-17
![Page 18: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/18.jpg)
LCS Example (3)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
0 0 0
ABCBBDCAB
S-18
![Page 19: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/19.jpg)
LCS Example (4)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
0 0 0 1
ABCBBDCAB
S-19
![Page 20: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/20.jpg)
LCS Example (5)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
000 1 1
ABCBBDCAB
S-20
![Page 21: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/21.jpg)
LCS Example (6)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
0 0 10 1
1
ABCBBDCAB
S-21
![Page 22: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/22.jpg)
LCS Example (7)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 1 11
ABCBBDCAB
S-22
![Page 23: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/23.jpg)
LCS Example (8)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 1 1 1 2
ABCBBDCAB
S-23
![Page 24: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/24.jpg)
LCS Example (10)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj )c[i,j] = c[i-1,j-1] + 1
else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
21 1 11
1 1
ABCBBDCAB
S-24
![Page 25: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/25.jpg)
LCS Example (11)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 21 11
1 1 2
ABCBBDCAB
S-25
![Page 26: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/26.jpg)
LCS Example (12)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj )c[i,j] = c[i-1,j-1] + 1
else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 21 1
1 1 2
1
22
ABCBBDCAB
S-26
![Page 27: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/27.jpg)
LCS Example (13)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 21 1
1 1 2
1
22
1
ABCBBDCAB
S-27
![Page 28: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/28.jpg)
LCS Example (14)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj )c[i,j] = c[i-1,j-1] + 1
else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 21 1
1 1 2
1
22
1 1 2 2
ABCBBDCAB
S-28
![Page 29: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/29.jpg)
LCS Example (15)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
B
Yj BB ACD
0
0
00000
0
0
0
if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] )
1000 1
1 21 1
1 1 2
1
22
1 1 2 2 3
ABCBBDCAB
S-29
![Page 30: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/30.jpg)
LCS Algorithm Running Time
• LCS algorithm calculates the values of each entry of the array c[m,n]
• So what is the running time?
O(m*n)
since each c[i,j] is calculated in constant time, and there are m*n elements in the array
S-30
![Page 31: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/31.jpg)
How to find actual LCS• So far, we have just found the length of LCS,
but not LCS itself.
• We want to modify this algorithm to make it output Longest Common Subsequence of X and Y
Each c[i,j] depends on c[i-1,j] and c[i,j-1]
or c[i-1, j-1]
For each c[i,j] we can say how it was acquired:
2
2 3
2 For example, here c[i,j] = c[i-1,j-1] +1 = 2+1=3
S-31
![Page 32: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/32.jpg)
How to find actual LCS - continued
• Remember that
otherwise]),1[],1,[max(
],[][ if1]1,1[],[
jicjic
jyixjicjic
So we can start from c[m,n] and go backwards
Whenever c[i,j] = c[i-1, j-1]+1, remember x[i] (because x[i] is a part of LCS)
When i=0 or j=0 (i.e. we reached the beginning), output remembered letters in reverse order S-32
![Page 33: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/33.jpg)
Finding LCSj 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
Yj BB ACD
0
0
00000
0
0
0
1000 1
1 21 1
1 1 2
1
22
1 1 2 2 3B
S-33
![Page 34: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/34.jpg)
Finding LCS (2)j 0 1 2 3 4 5
0
1
2
3
4
i
Xi
A
B
C
Yj BB ACD
0
0
00000
0
0
0
1000 1
1 21 1
1 1 2
1
22
1 1 2 2 3B
B C BLCS (reversed order):
LCS (straight order): B C B
S-34
![Page 35: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/35.jpg)
Elements of Dynamic Programming
• For dynamic programming to be applicable, an optimization problem must have:
1. Optimal substructure– An optimal solution to the problem contains within it
optimal solution to subproblems
2. Overlapping subproblems– The space of subproblems must be small; i.e., the
same subproblems are encountered over and over
S-35
![Page 36: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/36.jpg)
Review: Dynamic programming
• DP is a method for solving certain kind of problems
• DP can be applied when the solution of a problem includes solutions to subproblems
• We need to find a recursive formula for the solution
• We can recursively solve subproblems, starting from the trivial case, and save their solutions in memory
• In the end we’ll get the solution of the whole problem
S-36
![Page 37: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/37.jpg)
Properties of a problem that can be solved with dynamic
programming• Simple Subproblems
– We should be able to break the original problem to smaller subproblems that have the same structure
• Optimal Substructure of the problems– The solution to the problem must be a
composition of subproblem solutions
• Subproblem Overlap– Optimal subproblems to unrelated problems can
contain subproblems in common
S-37
![Page 38: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/38.jpg)
Review: Longest Common Subsequence (LCS)
• Problem: how to find the longest pattern of characters that is common to two text strings X and Y
• Dynamic programming algorithm: solve subproblems until we get the final solution
• Subproblem: first find the LCS of prefixes of X and Y.
• this problem has optimal substructure: LCS of two prefixes is always a part of LCS of bigger strings
S-38
![Page 39: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/39.jpg)
Review: Longest Common Subsequence (LCS)
continued• Define Xi, Yj to be prefixes of X and Y of
length i and j; m = |X|, n = |Y| • We store the length of LCS(Xi, Yj) in c[i,j]
• Trivial cases: LCS(X0 , Yj ) and LCS(Xi, Y0) is empty (so c[0,j] = c[i,0] = 0 )
• Recursive formula for c[i,j]:
otherwise]),1[],1,[max(
],[][ if1]1,1[],[
jicjic
jyixjicjic
c[m,n] is the final solutionS-39
![Page 40: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/40.jpg)
Review: Longest Common Subsequence (LCS)
• After we have filled the array c[ ], we can use this data to find the characters that constitute the Longest Common Subsequence
• Algorithm runs in O(m*n), which is much better than the brute-force algorithm: O(n 2m)
S-40
![Page 41: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/41.jpg)
Conclusion• Dynamic programming is a useful
technique of solving certain kind of problems
• When the solution can be recursively described in terms of partial solutions, we can store these partial solutions and re-use them as necessary
• Running time (Dynamic Programming algorithm vs. brute-force algorithm):– LCS: O(m*n) vs. O(n * 2m)
S-41
![Page 42: Overview What is Dynamic Programming? A Sequence of 4 Steps Longest Common Subsequence Elements of Dynamic Programming S-1.](https://reader036.fdocuments.net/reader036/viewer/2022062515/56649cae5503460f9497109e/html5/thumbnails/42.jpg)
The End
S-42