LCS Problem Statement: Given two sequences, find the length of longest subsequence present in both of them. A subsequence is a sequence that appears in the same relative order, but not necessarily contiguous. For example, “abc”, “abg”, “bdf”, “aeg”, ‘”acefg”, .. etc are subsequences of “abcdefg”. So a string of length n has 2^n different possible subsequences.
It is a classic computer science problem, the basis of diff (a file comparison program that outputs the differences between two files), and has applications in bioinformatics.
LCS for input Sequences “ABCDGH” and “AEDFHR” is “ADH” of length 3.
LCS for input Sequences “AGGTAB” and “GXTXAYB” is “GTAB” of length 4.
Let the input sequences be X[0..m-1] and Y[0..n-1] of lengths m and n respectively. And let L(X[0..m-1], Y[0..n-1]) be the length of LCS of the two sequences X and Y. Following is the recursive definition of L(X[0..m-1], Y[0..n-1]).
If last characters of both sequences match (or X[m-1] == Y[n-1]) then
L(X[0..m-1], Y[0..n-1]) = 1 + L(X[0..m-2], Y[0..n-2])
If last characters of both sequences do not match (or X[m-1] != Y[n-1]) then
L(X[0..m-1], Y[0..n-1]) = MAX ( L(X[0..m-2], Y[0..n-1]), L(X[0..m-1], Y[0..n-2])
Length of LCS is 4
Following is a tabulated implementation for the LCS problem.
Length of LCS is 4
Please refer complete article on Dynamic Programming | Set 4 (Longest Common Subsequence) for more details!
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- Longest Increasing Subsequence using Longest Common Subsequence Algorithm
- C++ Program for Longest Common Subsequence
- Java Program for Longest Common Subsequence
- Maximum length subsequence such that adjacent elements in the subsequence have a common factor
- Longest Common Subsequence | DP-4
- Printing Longest Common Subsequence
- Longest Common Increasing Subsequence (LCS + LIS)
- Printing Longest Common Subsequence | Set 2 (Printing All)
- LCS (Longest Common Subsequence) of three strings
- Longest Common Subsequence with at most k changes allowed
- Minimum cost to make Longest Common Subsequence of length k
- Longest Common Subsequence | DP using Memoization
- Length of longest common subsequence containing vowels
- Longest subsequence such that adjacent elements have at least one common digit
- Length of longest common prime subsequence from two given arrays
- Edit distance and LCS (Longest Common Subsequence)
- Longest common subsequence with permutations allowed
- Longest subsequence such that every element in the subsequence is formed by multiplying previous element with a prime
- Python program for Longest Increasing Subsequence
- Python Program for Longest Palindromic Subsequence | DP-12
Improved By : Akshay Ashok