1 / 13

Longest Common Subsequence

Longest Common Subsequence. By Richard Simpson. Subsequence of a string. A subsequence of a sequence(or string) X is and sequence obtained from X by removing 0 or more of the characters of X. The remaining characters are kept in the same order. Example X=“ ab f rdf dv redff g fd ”

trent
Download Presentation

Longest Common Subsequence

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Longest Common Subsequence By Richard Simpson

  2. Subsequence of a string • A subsequenceof a sequence(or string) X is and sequence obtained from X by removing 0 or more of the characters of X. The remaining characters are kept in the same order. • Example X=“abfrdfdvredffgfd” Removing the red characters gives us “abrdfredfffd” which is a subsequence of X.

  3. Common Subsequence • A common subsequence of sequences X and Y is a just a string that is a subsequence of both X and Y. • There may be many subsequences of X and Y. A subsequence of this set that has maximal length is called the longest common subsequence. • There may be several of these maximal subsequences.

  4. How many subsequences are there for a subseq of length n? • This is related to the number of subsets of a set. How many are there? • 2 to the n • Why? • Every time you add a new character you double the number of subsets. Do it by hand and check it out. • SO! Brute force is out!!!

  5. ith Prefix • Let X be a sequence • Then Xi is defined as the first i characters of the sequence X.d • For example let X= “asdcfrfgtr” thenX4 is the sequence “asdc” • We will use these prefix's to build the LCS

  6. Optimal Substructure of an LCS Let C = x1x2x3…xm and Y = y1y2y3…yn and let Z= z1z2z3…zk be any LCS of X and Y. • If xm=yn then zk=xm=yn and Zk-1 is and LCS of Xm-1 and Yn-1 • If xm≠ynthen zk ≠ xm implies that Z is an LCS of Xm-1 and Y • If xm≠ynthen zk ≠ ymimplies that Z is an LCS of X and Yn-1

  7. Meaning? • If xm=yn then zk=xm=yn and Zk-1 is and LCS of Xm-1 and Yn-1 X = acdggdcagagccda Y = acdgadcggagdada Z = acdgdcgagda This is similar for the 3rd case

  8. Meaning? • If xm≠ynthen zk ≠ xmimplies that Z is an LCS of Xm-1 and Y X = acdggdcagagccdc Y = acdgadcggagdada Z = acdgdcgagda

  9. Recursive View Let c[i,j] be the length of the LCS of prefixes Xi and Yjthe the optimal substructure of the LCS problem gives us

  10. The Algorithm # Initialize the arrays m=length[X]; n=length[Y] For i=1 to n do c[i,0]=0 For j=1 to n do c[0,j]=0

  11. Continued For i=1 to m do for j=1 to n do if xi=yj then c[i,j] = c[i-1,j-1]+1 b[i,j] = “↖” else if c[i-1,j]>=c[i,j-1] then c[i,j]=c[i-1,j] b[i,j]=“↑” else c[i,j]= c[I,j-1] b[i,j]=“←” Return c and b

  12. The Table

  13. Print it Print-LCS(b,X,i,j) if i=0 or j=0 return if b[I,j]=“↖” then Pirnt-LCS(b,X,i-1,j-1) print xi elseif b[i,j]=“↑” then Print-LCS(b,X,i-1,j) else Print-LCS(b,X,i,j-1)

More Related