web-dev-qa-db-ja.com

ハミング距離とレーベンシュタイン距離

私が取り組んでいる問題、2つのシーケンス間の距離を見つけてそれらの類似性を判断するには、シーケンスの順序が非常に重要です。ただし、私が持っているシーケンスはすべて同じ長さではないため、ハミング距離要件を満たすために、両方のシーケンスが同じ長さになるように、不足している文字列に空のポイントを埋め込みます。私が気にするのは転置の数だけなので、これを行うのに大きな問題はありますか(Levenshteinのような挿入や削除ではありません)?

より長い長さのシーケンスの距離メトリックとして、ハミング距離はレヴェンシュタインよりもはるかに速いことがわかりました。より安価なハミング距離の代わりに、レーベンシュタイン距離(またはレーベンシュタイン距離の導関数)をいつ使用すべきですか?ハミング距離は、2つのシーケンス間の可能なレーベンシュタイン距離の上限と見なすことができるので、2つのシーケンスを比較する場合、シーケンスを一致させるための絶対最小移動数ではなく、順序バイアスの類似度メトリックについて、明白なものはありませんメトリックとしてハミングよりレーベンシュタインを選択する理由はありますか?

48
don

この質問は、照合するシーケンスのタイプと、どのような結果が必要かによって異なります。

「1234567890」と「0123456789」がまったく異なると見なされることが問題ではない場合、実際にはハミング距離は問題ありません。

39
Johan Kotlinski

正しいヨハンの回答に加えて、パディングが問題になる可能性があります。

たとえば、123123456を比較する場合、文字列の末尾または文字列の先頭でパディングするかどうかは異なります。 ___123123456の類似度は0ですが、123___123456の類似度は3です。

1
David Weinberg