CSCE 411 Lecture 13

From Notes
Jump to navigation Jump to search
Lecture Slides

« previous | Monday, September 24, 2012 | next »


Longest Common Subsequence

Suppose you have a sequence of elements over a finite set .

A sequence over is called a subsequence of iff it can be obtained from by deleting elements.

Put differently, there exist indices such that for all

For example, is a subsequence of


Suppose is also a sequence over .

We call a common subsequence of and iff it is a subsequence of and a subsequence of

For example, is a common subsequence of and .

Given two sequences and over a set , what is the longest common subsequence between them?


Naïve Solution: Brute Force

There are subsequences of . We could check every one of them, filtering them by whether they are subsequences of (this would take time), and then determine the longest one. Overall, this takes time.

Dynamic Approach

If is a sequence, let be the th prefix of such that .


Let be the longest common subsequence between and .

Let and . Let .

  1. If , then certainly and is in .
  2. If , then implies that is in .
  3. If , then implies that is in .

(2) and (3) indicate overlapping subproblems of choosing the larger common subsequence of each of the two cases.

Recursive Solution

Let be the length of an element in .

Dynamic Programming Solution

Start our table by initializing the first row and column to 0 since the length of a common subsequence of [sequences of length 0] is 0.

Calculate for .

Calculate for . (etc.)

Return .

The complexity of computing this solution has been reduced to .

In computing , this particular solution depends on the cells directly above, to the right, and diagonally from it.

Whenever we satisfy case (1), choosing the diagonal solution, we know that we have grabbed the th element from the end of .

Keep track of the direction toward the optimal solution chosen (up, left, or diagonal)

To reconstruct the solution, start in and follow arrows, taking whenever has a "diagonal pointer".

Example

For sequences

  B D C A
0 0 0 0 0
A 0 ↑ 0 ↑ 0 ↑ 0 ↖ 1
B 0 ↖ 1 ← 1 ← 1 ↑ 1
C 0 ↑ 1 ↑ 1 ↖ 2 ← 2
B 0 ↑ 1 ↑ 1 ↑ 2 ↑ 2

To construct the soluion, follow arrows and obtain "BC"