In computer science, we use dynamic programming for solving complex problems. A good example of dynamic programming is the longest common subsequence.
Dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler subproblems. It is applicable to problems exhibiting the properties of overlapping subproblems and optimal substructure. Sometimes the subproblems are not independent, that is when sub-problems share subsubproblems. The dynamic programming algorithm solves every sub-problem just once and then saves its answer in a table.
The longest common subsequence problem is a classic computer science problem, the basis of data comparison programs, and has applications in bioinformatics.
The longest common subsequence (LCS) problem is to find the longest sub-sequence common to all sequences in a set of sequences (often just two).
First we look into only finding the length of LCS. We can easily construct an exponential time recursive algorithm to compute the length of the LCS. But using Dynamic Programming (DP) to compute the solution bottom up the same job can be done in O(mn) time where m and n are the lengths of the sub-sequences. Here is a C code to do so.
LCS Output |
Post a Comment