#!/usr/bin/env python __author__ = "bt3" ''' computes the edit distance between two strings ''' def find_edit_distance(str1, str2): ''' >>> s = 'sunday' >>> t = 'saturday' >>> find_edit_distance(s, t) 3 ''' m = len(str1) n = len(str2) diff = lambda c1, c2: 0 if c1 == c2 else 1 E = [[0] * (n + 1) for i in range(m + 1)] for i in range(m + 1): E[i][0] = i for j in range(1, n + 1): E[0][j] = j for i in range(1, m + 1): for j in range(1, n + 1): E[i][j] = min(E[i-1][j] + 1, E[i][j-1] + 1, E[i-1][j-1] + diff(str1[i-1], str2[j-1])) return E[m][n] if __name__ == '__main__': import doctest doctest.testmod()