53

对于我正在研究的问题,找到两个序列之间的距离以确定它们的相似性,序列顺序非常重要。但是,我拥有的序列的长度并不完全相同,因此我用空点填充任何有缺陷的字符串,以便两个序列的长度相同,以满足汉明距离要求。我这样做有什么大问题吗,因为我只关心换位的数量(而不是像 Levenshtein 那样的插入或删除)?

我发现汉明距离比 Levenshtein 快得多,作为更长长度序列的距离度量。什么时候应该使用 Levenshtein 距离(或 Levenshtein 距离的衍生物)而不是便宜得多的汉明距离?汉明距离可以被认为是两个序列之间可能的 Levenshtein 距离的上限,所以如果我比较两个序列的顺序偏差相似性度量,而不是匹配序列的绝对最小移动次数,则没有明显的我选择 Levenshtein 而不是 Hamming 作为指标的原因,有吗?

4

2 回答 2

46

这个问题实际上取决于您匹配的序列类型以及您想要的结果。

如果“1234567890”和“0123456789”被认为完全不同不是问题,那么汉明距离确实很好。

于 2011-01-03T21:40:51.960 回答
6

除了正确的 Johan 答案外,填充也可能有问题。

例如,当您比较它时,如果您在字符串的末尾或字符串的开头填充,则会有所不同123。with123456的相似度为0,而with的相似度为3。___123123456123___123456

于 2019-02-21T16:27:44.280 回答