longest common subsequence

19
Longest Common Subsequence Krishma Parekh 5th -C.E. 140210107039

Upload: krishma-parekh

Post on 15-Apr-2017

101 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Longest Common Subsequence

Longest Common Subsequence

Krishma Parekh5th -C.E.

140210107039

Page 2: Longest Common Subsequence

What is Subsequences ?

Page 3: Longest Common Subsequence

Subsequences★ Suppose you have a sequence

■ X = < x1,x2,…,xm>of elements over a finite set S.

★ A sequence Z = < z1,z2,…,zk> over S is called a subsequence of X if and only if it can be obtained from X by deleting elements.

★ Put differently, there exist indices i1<i2 <…<ik such that■ za = xia

➔ For all a in the range 1<= a <= k.

Page 4: Longest Common Subsequence

What is Common Subsequences ?

Page 5: Longest Common Subsequence

Common Subsequences➔ Suppose that X and Y are two sequences over a set

S.◆ We say that Z is a common subsequence of X

and Y if and only if -●Z is a subsequence of X●Z is a subsequence of Y

Page 6: Longest Common Subsequence

What is Longest Common Subsequences ?

Page 7: Longest Common Subsequence

Longest Common Subsequences

Given two sequences X and Y over a set S, the longest common subsequence problem asks to find a common subsequence of X and Y that is of maximal length.

Page 8: Longest Common Subsequence

Naive Solution !!!

Page 9: Longest Common Subsequence

★ Let X be a sequence of length m, & Y a sequence of

length n.★ Check for every subsequence of X whether it is a

subsequence of Y, and return the longest common subsequence found.

★There are 2m subsequences of X. Testing a sequences whether or not it is a subsequence of Y takes O(n) time. Thus, the naïve algorithm would take O(n2m) time.

Page 10: Longest Common Subsequence

Optimal Substructure

Page 11: Longest Common Subsequence

➔Let X = < x1,x2,…,xm> & Y = < y1,y2,…,yn> be two sequences.

➔Let Z = < z1,z2,…,zk> is any LCS of X & Y.

★ If xm = yn then certainly xm = yn = zk & Zk-1 is in LCS(Xm-1 , Yn-1)

★ If xm <> yn then xm <> zk implies that Z is in LCS(Xm-1 , Y)

★ If xm <> yn then yn <> zk implies that Z is in LCS(X, Yn-1)

Page 12: Longest Common Subsequence

Recursive Solution

c[i,j] =

Page 13: Longest Common Subsequence

Dynamic Programming Solution

Page 14: Longest Common Subsequence

➔ To compute length of an element in LCS(X,Y) with X of length m & Y of length n , we do the following:

1. Initialize first row and first column of the array c with 0.

2. Calculate c[1,j] for 1 <= j <= n,c[2,j] for 1 <= j <= n...

3. Return c[m,n]4. Complexity O(mn)

Page 15: Longest Common Subsequence

Example

Page 16: Longest Common Subsequence

X = { A,B,C,D,A }

Y = { A,C,B,D,E,A }

Page 17: Longest Common Subsequence

Algorithm

Page 18: Longest Common Subsequence

m length[X]n length[Y]for i 1 to m do c[i,0] 0for j 1 to n do c[0,j] 0

for i 1 to m do for j 1 to n do

if xi = yj

c[i, j] c[i-1,j-1]+1 b[i, j] “D”

else if c[i-1, j] >= c[i, j-1] c[i, j] c[i-1, j] b[i, j] “U” else c[i, j] c[i, j-1] b[i, j] “L”

return c and b

LCS(X,Y)

Page 19: Longest Common Subsequence