必威体育Betway必威体育官网
当前位置:首页 > IT技术

BloomFilter用途原理及应用策略

时间:2019-08-28 22:12:08来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

bloomfilter

bloomfilter原理简介

将数值m用k个不同的hash函数散列到k个位,这个k个位数值置位1就表示数值m。

很明显,就是将数字转换成多个bit位存储的数据结构。当有数字集合的时候,可以减少数字在内存空间占用(一堆数值转换为了一个大bit数组)。如果需要判断一个数字是否包含在一个集合中,只需要运算k个hash函数看对应的位是否为1。

简单来说就是将一组数值转换为一个bit数组,根据一个数值的多个hash值对应的位是否为1判断它是否在这个集合中。

应用场景

BloomFilter常用于判断某个值是否在一个集合当中

优点

  1. 空间消耗和时间消耗比较小,多个hash函数并无关联,可以并行加速
  2. 时间效率为O(n/k)

缺点

  1. 只能粗略判断得到结论可能存在,因为hash有可能存在冲突
  2. 已经加入的元素无法删除。还是由于hash的冲突性,m散列到的值可能和n散列的值相同,如果把m对应散列的位删了那n可就查不到了。

应用策略

将数据集合初始化到bit数组的时候,设定的数组大小和hash函数的个数会对判断结果有很大的影响。这里照搬一下外链的结论,后续使用可参考。

假设BloomFilter中元素总bit数量为m,插入的元素个数为n,hash函数的个数为k,false positive probability(误判率)记做p,它们之间有如下关系(具体推导过程请参考维基百科):

1. 如果需要最小化false positive probability,则k的取值如下

k = m * ln2 / n; 公式一

2. 而p的取值,和m,n又有如下关系

m = - n * lnp / (ln2) ^ 2 公式二

3.把公式一代入公式二,得出给定n和p,k的取值应该为

k = -lnp / ln2

最后,也同样可以计算出m。

参考

https://zh.wikipedia.org/zh-hans/%E5%B8%83%E9%9A%86%E8%BF%87%E6%BB%A4%E5%99%A8

http://osERROR.com/backend/bloomfilter/

相关阅读

如何在人工智能机器人领域应用大数据?

为了多来点干货,我写的思路会有点特别:不直接讲大数据是怎么做的,我会跳出来讲,在人工智能机器人这个方向,把握好哪三个点,能够更好的应

应用宝澄清被下架:报道失实,配合相关部门下架违规应用

A5创业网(公众号:iadmin5)11月16日消息,近日有媒体报道相关部门检测并通知下架了90个恶意App,其中应用宝被检测为恶意App并下架。据

360自研分布式存储系统Bada的架构设计和应用

这篇文章干货满满,1. 既有调研对比 bigtable,cassandra 2.又有自身设计的说明. 对可靠性,可用性都说的很明白. 扩容等. 360自研

这7款手机应用含恶意广告插件,小心下载后手机中病毒

除了日常的社交需求外,用户对记录健康、拍照功能的软件也格外青睐。近日,国家计算机病毒应急处理中心通过互联网监测发现,“天

beanstalkd消息队列在生产环境的应用

Beanstalkd 是一个高性能的消息队列中间件,本博文宅鸟将介绍一下这个东东的使用。一、先通过概念让大家了解Beanstalkd的特性和工

分享到:

栏目导航

推荐阅读

热门阅读