1. 文本比较算法
文本比较的核心就是比较两个给定的文本(可以是字节流等)之间的差异。
1.1 LD算法
概念:LD算法(LevenshteinDistance)又成为编辑距离算法(Edit Distance)。他是以字符串A通过插入字符、删除字符、替换字符变成另一个字符串B,那么操作的过程的次数表示两个字符串的差异。
例如:字符串A:kitten如何变成字符串B:sitting。
第一步:kitten——》sitten。k替换成s
第二步:sitten——》sittin。e替换成i
第三步:sittin——》sitting。在末尾插入g
故kitten和sitting的编辑距离为3
性能:时间复杂度,空间复杂度为O(MN)。这个在两个字符串都比较短小的情况下,能获得不错的性能。不过,如果字符串比较长的情况下,就需要极大的空间存放矩阵。例如:两个字符串都是20000字符,则LD矩阵的大小为20000*20000*2=800000000Byte=800MB。故,在比较长字符串的时候,还有其他性能更好的算法。
原文:http://www.cnblogs.com/grenet/archive/2010/06/01/1748448.html