1 汉明距离
在信息论中,两个等长字符串之间的汉明距离是两个字符串对应位置的不同字符的个数。例如,1011101 与 1001001 之间的汉明距离是 2。
汉明距离是以理查德·卫斯里·汉明的名字命名的,汉明在误差检测与校正码的基础性论文中首次引入这个概念。在通信中累计定长二进制字中发生翻转的错误数据位,所以它也被称为信号距离。汉明重量分析在包括信息论、编码理论、密码学等领域都有应用。它是用来衡量2个二进制码字之间的相似程度的。
2 编辑距离
编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如,kitten与sitting之间的编辑距离为3。
应用: DNA分析、拼字检查、语音辨识、抄袭侦测。
3 个人理解
3.1 理论分析
汉明距离更多的是强调向量,即每一位的值都有相应的实际意义。而编辑距离强调更多的是一个字符串转化为另外一个的最快速度,没有考虑不同位的含义。
比如说,有两个对象A=”909”,B=”090”。A与B的汉明距离H(A, B) = 3,编辑距离ED(A, B) =2。
若附加对象A,B的描述为其空间位置信息,H(A, B) = 3表示在三个维度上均不相同;ED(A,B) = 2表示操作两个维度便可完全相同。显然在这种情况下用汉明距离比编辑距离更具有合理性。而在误差检测和校正码时,多数情况向量维度是相同的,并且每一位都对应着特定的描述信息,也即这些时候多数是用汉明距离。
若附加对象的A,B的描述文字信息(即拼字检查),显然用编辑距离表示更能反映A,B之间的相似程度。总之,在一些与序列相关但每一位又没有特定的含义的应用适合用编辑距离。
3.2 已知论文
一些与文本相似度相关的论文都用编辑距离来表示两个文本描述信息的相关程度,甚至一些图的相似程度也用图的编辑距离来表示其相近程度。至今只看到一篇文章是用汉明距离来表示文本相关程度的,即Spatio-Textual Similarity Joins。这无疑与上述理解存在一定的误差。
今儿上午讨论了论文HmSearch: An Efficient Hamming Distance Query Processing Algorithm,该论文提到在模式匹配、信息检索等领域扮演者重要的角色。以往的方法都是针对汉明距离的计算特性,将n为向量平均分成k’份,同时也完成了对每部分汉明距离的最大值给出限定。若两个对象的汉明距离满足要求,则超高该限定值的部分至多为m个(计算公式,详见论文)。作者提出了更为紧确的过滤方案和一个过滤-识别技术,其中位运算的应用更是出神入化。关于该论文的总结稍后奉上。
欢迎大家随时指正错误或补充信息。