搜索汉明距离小于阈值的字符串

时间:2014-11-20 20:56:27

标签: algorithm search hamming-distance

目前我在一个应用程序上工作,我有大量的哈希值(字符串) 当给出查询哈希值(字符串)时,搜索过程将遍历这些字符串并返回查询字符串与结果字符串之间的Hamming Distance小于给定阈值的字符串。

  • 哈希值是不是二进制字符串。例如" 1000302014771944008"
  • 所有哈希值(字符串)具有相同的固定长度。
  • 阈值不小(通常为t>25)且可以变化。

我想使用有效的算法而不是使用蛮力方法来实现此搜索过程 我已经阅读了一些研究论文(如this& this),但它们用于二进制字符串或低阈值。我也试过Locality-sensitive hashing,但我发现的实现都集中在二进制字符串上。

是否有任何算法或数据结构可以解决这个问题? 任何建议也欢迎。提前谢谢。

其他信息

Hamming非二进制字符串之间的距离

string 1: 0014479902266110001131133
string 2: 0014409902226110001111133
          -------------------------
               1     1        1    = 3 <-- hamming distance

考虑蛮力方法

  1. 计算第一个哈希字符串与查询哈希字符串之间的汉明距离。
  2. 如果汉明距离小于阈值,则将哈希字符串添加到结果列表中。
  3. 对所有哈希字符串重复步骤1和2.

2 个答案:

答案 0 :(得分:1)

阅读论文的第7部分:

&#34; HmSearch:一种高效的汉明距离查询处理算法&#34;。

d-query问题的最新结果可以在以下网址找到:

&#34;字典匹配和索引错误而不关心&#34;,它使用空间O(n * log)解决时间O(m + log(nm)^ d + occ)中的d查询问题(nm)^ d),其中 occ是查询结果的数量。

如果阈值不小,则可以在HmSearch上找到二进制字符串的实用解决方案。

我认为可以在HmSearch上使用相同的实用解决方案来处理任意字符串,但我从未见过这些解决方案。

答案 1 :(得分:0)