目前我正在使用大量散列值(字符串)的应用程序。
当给出查询散列值(字符串)时,搜索过程将遍历这些字符串并返回查询字符串与结果字符串之间的Hamming Distance小于给定阈值的字符串。搜索汉明距离小于阈值的字符串
- 哈希值是而不是二进制字符串。例如“
1000302014771944008
” - 所有哈希值(字符串)具有相同的固定长度。
- 阈值不小(通常为
t>25
)并且可能会有所不同。
我想用一种有效的算法来实现这个搜索过程,而不是使用暴力方法。
我已阅读一些研究论文(如this & this),但它们适用于二进制字符串或低阈值。我也试过Locality-sensitive hashing,但我发现的实现主要集中在二进制字符串上。
是否有任何算法或数据结构来解决这个问题?
任何建议也欢迎。先谢谢你。
。
其他信息
海明非二进制字符串
string 1: 0014479902266110001131133
string 2: 0014409902226110001111133
-------------------------
1 1 1 = 3 <-- hamming distance
考虑蛮力方法之间的距离
- 首先计算哈希字符串和之间的海明距离查询哈希字符串。
- 如果汉明距离小于阈值,则将哈希串添加到结果列表中。
- 对所有散列字符串重复步骤1和2。
平均来说,查询返回的数据比例是多少?也就是说,相对来说,你的散列字符串有多长,你的门槛有多大? – 2014-11-20 21:24:49
这个问题缺失的是1)汉明距离应用于非二进制字符串的精确定义2)您已经考虑过的蛮力方法的描述或示例。 – user3386109 2014-11-20 21:34:26
@Timothy Shields查询结果的数量没有限制。粗略地说,哈希字符串的长度是250,并且阈值在25-75之间 – 2014-11-20 21:35:22