Hash 散列相似性

Hash 散列相似性,hash,Hash,通常,散列的目标是将连续函数转换为离散函数:输入中的一个小变化应该会导致输出中的一个大变化。然而,是否有任何散列算法可以(非常)粗略地说,为相似的输入返回相似但(仍然不同)的散列 (使用这种方法的一个例子是通过检查两个文件的哈希值的相似性来检查它们是否“相似”。当然,某些失败总是可以接受的。)查看(LSH)。例如,这是一种在给定点附近快速找到一组点的概率方法。给定一个距离函数,告诉您对象有多相似或不同,您也可以使用距离排列: 或草图: 对于后一种方法的实施: 您真的不想看到类似的哈希。散列是为

通常,散列的目标是将连续函数转换为离散函数:输入中的一个小变化应该会导致输出中的一个大变化。然而,是否有任何散列算法可以(非常)粗略地说,为相似的输入返回相似但(仍然不同)的散列


(使用这种方法的一个例子是通过检查两个文件的哈希值的相似性来检查它们是否“相似”。当然,某些失败总是可以接受的。)

查看(LSH)。例如,这是一种在给定点附近快速找到一组点的概率方法。

给定一个距离函数,告诉您对象有多相似或不同,您也可以使用距离排列: 或草图:

对于后一种方法的实施:
您真的不想看到类似的哈希。散列是为了确保完整性,因此文件/应用程序/程序中的任何细微更改都会产生完全不同的散列。如果两个不同的字符串显示相同的散列,这称为冲突,散列算法现在受到影响。MD5有一些冲突,但今天仍在使用。

如何定义“相似”?两个长度大致相同、数据顺序大致相同的流将被视为相似。(请注意,我不需要说“这两个类似吗?”作为布尔值,而是作为某种数字评级系统。例如,[1,2,3,4]可能更类似于[1,2,3],而不是[4,3,2,1]…)散列函数的全部要点是确保输入的任何一位的更改都有可能更改输出的每一位。也许“散列”是一个用词不当的词。。。我想不出它的其他名字了\你回答得很好!我记得曾经研究过维护排序关系的哈希函数——这是一个挑战+1似乎正是我想要的。。。我不知道要搜索的术语;谢谢!:)除完整性检查外,哈希还用于其他用途。