局部敏感哈希实现?

时间:2011-04-24 10:10:14

标签: c# java c hash locality-sensitive-hash

在C / C ++ / Java / C#中是否有任何相对简单易懂(并且易于实现)的局部敏感哈希示例?

我想更多地了解这个概念,所以想尝试一些文本文件只是为了看看它是如何工作的,所以我不需要任何高性能或任何东西......只是一个例子一个哈希函数,返回类似输入的类似哈希值。之后我可以通过实例了解更多信息。 :)

4 个答案:

答案 0 :(得分:9)

对于字符串,您可以使用近似匹配算法。

如果字符串与参考字符串等距,则很可能它们彼此相似。你可以在那里找到字符串的局部敏感哈希实现。

您可以为一系列距离创建不同的散列桶。

编辑:您可以尝试其他字符串距离的变化。一个更简单的算法就是返回no。两个字符串之间的共同字符。

答案 1 :(得分:6)

在MSDN博客上有一篇很棒的文章:http://blogs.msdn.com/b/spt/archive/2008/06/11/locality-sensitive-hashing-lsh-and-min-hash.aspx

此外,至少有一次C ++库,你可以检查这里的源代码:http://sourceforge.net/projects/lshkit/

答案 2 :(得分:2)

Hadoop上还有一个Java实现。它在文件上做得很好。

它被称为LikeLike

  

目前Likelike仅支持   Min-Wise独立排列。   Min-Wise独立排列是   适用于。的推荐   谷歌新闻

答案 3 :(得分:2)

我意识到你明确要求提供C / C ++ / C#,但是a Python portnilsimsa hash可能比其他更大的库更容易理解。