hash算法 simhash算法


hash算法 simhash算法

文章插图
大家好,小跳来为大家解答以上的问题 。simhash算法,hash算法这个很多人还不知道,现在让我们一起来看看吧!
1、这个问题有点难度 , 不是很好说清楚 。
2、 我来做一个比喻吧 。
3、 我们有很多的小猪,每个的体重都不一样,假设体重分布比较平均(我们考虑到公斤级别) , 我们按照体重来分,划分成100个小猪圈 。
4、 然后把每个小猪,按照体重赶进各自的猪圈里,记录档案 。
5、 好了,如果我们要找某个小猪怎么办呢?我们需要每个猪圈 , 每个小猪的比对吗? 当然不需要了 。
6、 我们先看看要找的这个小猪的体重,然后就找到了对应的猪圈了 。
7、 在这个猪圈里的小猪的数量就相对很少了 。
8、 我们在这个猪圈里就可以相对快的找到我们要找到的那个小猪了 。
9、 对应于hash算法 。
10、 就是按照hashcode分配不同的猪圈,将hashcode相同的猪放到一个猪圈里 。
11、 查找的时候 , 先找到hashcode对应的猪圈,然后在逐个比较里面的小猪 。
12、 所以问题的关键就是建造多少个猪圈比较合适 。
13、 如果每个小猪的体重全部不同(考虑到毫克级别),每个都建一个猪圈,那么我们可以最快速度的找到这头猪 。
14、缺点就是 , 建造那么多猪圈的费用有点太高了 。
15、 如果我们按照10公斤级别进行划分,那么建造的猪圈只有几个吧 , 那么每个圈里的小猪就很多了 。
16、我们虽然可以很快的找到猪圈,但从这个猪圈里逐个确定那头小猪也是很累的 。
17、 所以,好的hashcode,可以根据实际情况,根据具体的需求,在时间成本(更多的猪圈,更快的速度)和空间本(更少的猪圈,更低的空间需求)之间平衡 。
【hash算法 simhash算法】本文到此分享完毕,希望对大家有所帮助 。