Advertisement
DMG

Longest Common Subsequence (dynamic)

DMG
Jun 4th, 2014
198
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. __author__ = 'DMG'
  2.  
  3. def LongestCommonSubsequence(first, second):
  4.  
  5.     dynMatrix = [[0 for x in range(len(second) + 1)] for x in range(len(first) + 1)]
  6.  
  7.     for i in xrange(1, len(first) + 1):
  8.         for j in xrange(1, len(second) + 1):
  9.             if first[i - 1] == second[j - 1]:
  10.                 dynMatrix[i][j] = min(dynMatrix[i][j - 1], dynMatrix[i - 1][j - 1]) + 1
  11.             else:
  12.                 dynMatrix[i][j] = max(dynMatrix[i][j - 1], dynMatrix[i - 1][j])
  13.  
  14.     """
  15.    for i in range(len(first) + 1):
  16.        for j in range(len(second) + 1):
  17.            print " " + str(dynMatrix[i][j]),
  18.        print
  19.    """
  20.  
  21.     lista = []
  22.  
  23.     i = j = 0
  24.     while j < len(second) + 1:
  25.         while i < len(first):
  26.             if dynMatrix[i + 1][j + 1] != dynMatrix [i][j]:
  27.                 lista.append(i)
  28.                 print first[i] + " " + second[i] + " " + first[j] + " " + second[j]
  29.                 #print lista
  30.                 j = j + 1
  31.                 currentI = i + 1
  32.  
  33.             i = i + 1
  34.  
  35.             if i == len(first):
  36.                 j = j + 1
  37.                 i = currentI
  38.  
  39.     print lista
  40.  
  41.  
  42. LongestCommonSubsequence("GTTCCTAATA", "CGATAATTGAGA")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement