在C / C ++ / Java / C#中是否有任何相对简单易懂(并且易于实现)的局部敏感哈希示例?
我想更多地了解这个概念,所以想尝试一些文本文件只是为了看看它是如何工作的,所以我不需要任何高性能或任何东西......只是一个例子一个哈希函数,返回类似输入的类似哈希值。之后我可以通过实例了解更多信息。 :)
答案 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)
答案 3 :(得分:2)
我意识到你明确要求提供C / C ++ / C#,但是a Python port的nilsimsa hash可能比其他更大的库更容易理解。