欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Bloom-Filter算法 简介

发布时间:2024/7/19 编程问答 49 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Bloom-Filter算法 简介 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Bloom-Filter算法 其实可以看作 bit-map 的一种扩展。

它把已存在的元素通过多个hash 函数映射到一个 bit 序列,对于每一个元素根据hash函数的结果把相应的 位置置一(这个bit序列通常很长,但是比起记住所有元素它占用的空间是小的)。

在判断一个元素时候已存在的时候,它会把这个元素的多个hash结果对应到bit序列中查看,如果已经全部置为一,那么说明该元素已经存在。


一个Bloom Filter有以下参数:


m bit数组的宽度(bit数)
n 加入其中的key的数量
k 使用的hash函数的个数
f False Positive的比率
(假阳性)

为了把错误率控制在 f,共有 n 个元素的集合作 bloom filter 其他参数可以由以下公式来定值:

m =nlg(1/f)*lge (其中 lg 表示以2为底的对数)

k = - ln(f) / ln(2)             


另外对于一个元素非常多的集合要进行 Bloom Filter 操作,必须构造一个返回值范围很大的 hash 函数。可以用 md5 算法生成十六进制的hash值,然后转成十进制:

import hashlibm=hashlib.md5() m.update('123123123123123123') print int(m.hexdigest(), base=16)

详见:http://blog.csdn.net/hguisu/article/details/7866173

转载于:https://www.cnblogs.com/rav009/p/5131107.html

总结

以上是生活随笔为你收集整理的Bloom-Filter算法 简介的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。