Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 A Linear Space Algorithm for Computing Maximal Common Subsequences Author: D.S. Hirschberg Publisher: Communications of the ACM 1975 Presenter: Han-Chen.

Similar presentations


Presentation on theme: "1 A Linear Space Algorithm for Computing Maximal Common Subsequences Author: D.S. Hirschberg Publisher: Communications of the ACM 1975 Presenter: Han-Chen."— Presentation transcript:

1 1 A Linear Space Algorithm for Computing Maximal Common Subsequences Author: D.S. Hirschberg Publisher: Communications of the ACM 1975 Presenter: Han-Chen Chen Date:2010/04/07

2 2 Outline Introduction Algorithm A Algorithm B Algorithm C

3 3 Introduction LCS (Longest Common Subsequence) of two strings has been solved in quadratic time and space. We present an algorithm which will solve this problem in quadratic time and in linear space.

4 4 Algorithm A Input string A 1m and B 1n output matrix L

5 5 Analysis of Algorithm A Time Complexity : execute m*n times → O(mn) Space Complexity : input arrays m + n output array (m+1)*(n+1) space require → O(mn)

6 6 Algorithm B (I) Space require : O(m+n) It can output the max common length but cannot record the max common subsequence.

7 7 Algorithm B (II) Input string A 1m and B 1n output matrix LL

8 8 Analysis of Algorithm B Time Complexity : execute m*n times → O(mn) Space Complexity : input arrays m + n output array n+1 space require → O(m+n)

9 9 Algorithm C Divide and conquer i=m/2 String B String A Find j 1 1 n m ALG B A 1i B 1j B j+1,n A i+1,m

10 10 Algorithm C L(i,j) j=0 … n the maximum lengths of common subsequence A 1i and B 1j L*(i,j) j=0 … n the maximum lengths of common subsequence A m,i+1 and B n,j+1 Define M(i) = max{ L(i,j) + L*(i,j) } 0 ≦ j ≦ n Theorem M(i) = L(m,n) Proof: for all L(i,j) + L*(i,j) ≦ L(m,n) S(i,j) : any maximal common subsequence of A 1i and B 1j S*(i,j) : any maximal common subsequence of A i+1,m and B j+1,n Then C= S(i,j) || S*(i,j) is a common subsequence of A 1m and B 1n of length M(i). Thus L(m,n) ≧ L(i,j) + L*(i,j)

11 11 Algorithm C exist some L(i,j) + L*(i,j) ≧ L(m,n) S(m,n) : any maximal common subsequence of A 1m and B 1n S(m,n) is a subsequence of A 1m so S(m,n) = S 1 || S 2 that S 1 is a subsequence of A 1i, S 2 is a subsequence of A i+1,m Also S(m,n) is a subsequence of B 1n so there exists j such that S 1 is a subsequence of B 1j and S 2 is a subsequence of B j+1,n By definition of L and L*, |S 1 | ≦ L(i,j) and |S 2 | ≦ L*(i,j) Thus L(m,n) = |S(m,n)| = |S 1 | + |S 2 | ≦ L(i,j) + L*(i,j) So M(i) = max{ L(i,j) + L*(i,j) } = L(m,n)

12 12 Algorithm C m,i+1

13 13 Algorithm C

14 14 Algorithm C i=m/2 0123456789 … 0123456789 … L2 L1

15 15 Analysis of Algorithm C (I) Time analysis: O(mn) + O(1/2mn) + O(1/4mn) + … = O(mn(1+1/2+1/4+…)) = O(mn)

16 16 Analysis of Algorithm C (II) Space analysis: we calls ALG B use temporary storage which is m and n. Exclusive of recursive calls to ALG C, ALG C uses a constant amount of memory space. There are 2m-1 calls to ALG C, so ALG C require memory space O(m+n).

17 17 Proof 2m-1 calls to ALG C Let m ≦ 2 r m=1 there are 2*1 – 1 = 1 call to ALG C Assume m ≦ 2 r = M there are 2m-1 calls to ALG C For m’ = 2 r+1 = 2M. First call ALG C to partition 2 part, each calls call 2m-1 times ALG C. So there are 1 + (2m-1) + (2m-1) = 4m - 1 = 2m’ – 1 calls.


Download ppt "1 A Linear Space Algorithm for Computing Maximal Common Subsequences Author: D.S. Hirschberg Publisher: Communications of the ACM 1975 Presenter: Han-Chen."

Similar presentations


Ads by Google