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

Lcs

The document discusses the longest common subsequence (LCS) problem and its solution using dynamic programming. It defines LCS as the longest subsequence that is common to two given sequences in the same relative order. The key aspects are: 1) Dynamic programming is used to find all possible solutions and pick the best one, following the principle of optimality. 2) The recursive formula to calculate LCS length is: if the last characters match, the LCS length is 1 plus the LCS of the shortened strings; otherwise it is the maximum of the LCS lengths after removing a character from one string. 3) The algorithm fills a 2D table using the recursive formula to find the LCS

Uploaded by

Waleed Khan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
151 views

Lcs

The document discusses the longest common subsequence (LCS) problem and its solution using dynamic programming. It defines LCS as the longest subsequence that is common to two given sequences in the same relative order. The key aspects are: 1) Dynamic programming is used to find all possible solutions and pick the best one, following the principle of optimality. 2) The recursive formula to calculate LCS length is: if the last characters match, the LCS length is 1 plus the LCS of the shortened strings; otherwise it is the maximum of the LCS lengths after removing a character from one string. 3) The algorithm fills a 2D table using the recursive formula to find the LCS

Uploaded by

Waleed Khan
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 13

LONGEST COMMON SUBSEQUENCE

ANALYSIS OF
ALGORITHMS

Prepared By:
Jahanzaib Rauf
Waleed Ahmed Khan
Arslan Tariq
Iqra Afzal
Difference between Greedy method and
Dynamic Programming
Greedy method:
• We try to find predefined procedures to get the optimal result
• We follow that procedure to get the best result
• E.g Dijkstra Algorithms
• Decision is taken one time

Dynamic programming:
• We try to find all possible solutions then pick the best solution
• It follows principle of optimality
it states that a problem can be solved by sequence of statements
• E.g Longest Common Sequence (LCS)
LONGEST COMMON SUBSEQUENCE
A subsequence is a sequence that appears in the same relative
order, but not necessarily contiguous.
In LSC , we have to find Longest common Subsequence that is in
same relative order.
String of length n has 2^n different possible subsequences.
E.g.--
Subsequences of “ABCDEFG”.
“ABC”, “ABG”, “BDF”, “AEG”, ‘”ACEFG”, …
EXAMPLE

LCS for input Sequences “ABCDGH” and “AEDFHR” is “ADH” of


length 3.

LCS for input Sequences “AGGTAB” and “GXTXAYB” is “GTAB” of


length 4.
LONGEST COMMON SUBSEQUENCE
Let the input sequences be X[0..m-1] and Y[0..n-1] of lengths m and n
respectively.
let L(X[0..m-1], Y[0..n-1]) be the length of LCS of the two sequences X
and Y.
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])
LONGEST COMMON SUBSEQUENCE

Consider the input strings “ABCDGH” and “AEDFHR”.


Last characters do not match for the strings. So length of LCS
can be written as:
L(“ABCDGH”, “AEDFHR”) = MAX ( L(“ABCDG”, “AEDFHR”),
L(“ABCDGH”, “AEDFH”) )
EXAMPLE
Following is a partial recursion tree for input strings “AXYT” and
“AYZX”
EXAMPLE
X=M,Z,J,A,W,X,U
Y=X,M,J,Y,A,U,Z
And Longest Common Subsequence is,
LCS(X,Y)=M,J,A,U

Now we will see table from which we can find LCS of Above
sequences.
CONDITIONS FOR ARROWS
Algorithm
LGS(X,Y,m,n)
for(i=0;i<=m;i++)
for(j=0;j<=n;j++)
if(i==0||j==0)
L[i][j]=0;
else if (X[i-1] == Y[j-1])
L[i][j] = L[i-1][j-1] + 1;
else
L[i][j] = max(L[i-1][j], L[i][j-1]);

return L[m][n];
CONSTRUCTING AN LCS
COMPLEXITY
Complexity of Longest Common Subsequence is O(mn).
Where m and n are lengths of the two Strings.

You might also like