BloomFilter——读数学之美札记
之前接触过bitmap,读吴军先生的数学之美,看到了一个更强大的数据结构,布隆过滤器(Bloomfilter),赶紧记下来吧,忘了怪可惜的。
bitmap的使用是很有局限性的,往往只能用于海量数值型数据查重,查漏。对于海量URL,字符串等等就显得无能为力了,这时候如果追求高效的时间复杂度O(k)(k一般是很小的常数,基本相当于O(1)),BloomFilter就有用武之地了。
先说BF的缺点吧:仨字儿,不精确。什么意思呢?就是它不保证给出的结果一定为真,只能说非常可能是真的,这是概率性的,而且这个概率我们可以根据情况通过不复杂的运算给出来。
BF的优点:1.时间复杂度低,速度快,仅次于hashmap,基本O(1)。2.空间复杂度低,一般要达到万分之一以下的错误率只需要hashmap的1/8甚至更少。3.有以上两点还不够吗?多少是多啊,要啥自行车啊。
关于BF的具体细节网上一搜一大堆,这里不再赘述,给个链接,自己看:
这里想试着写一下BloomFilter的谎报军情概率公式,网上的链接都是直接给公式,也不说怎么来的,这里试着推一下,字迹有点乱,身在星巴克,纸不多了,应该可以看清楚吧:

BloomFilter——读数学之美札记的更多相关文章
- 华为C/C++编码规范+《数学之美》感想
1.排版 1.1 程序块要采用缩进风格编写, 缩进的空格数为4个.(说明: 对于由开发工具自动生成的代码可以有不一致)1.2 相对独立的程序块之间.变量说明之后必须加空行.1.3 循环.判断等语句中若 ...
- 数学之美 zt
数学是美丽的,哪里有数哪里就有美. 数学的定义是研究数量关系和空间形式的一门科学.但有句名言说:数学比科学大得多,因为它是科学的语言.数学不仅用来写科学,而且可用来写人生.所以说数学是一切学科的基础, ...
- 1《数学之美》第1章 文字和语言 vs 数字和信息
1<数学之美>第1章 文字和语言 vs 数字和信息
- 代码规范 & 数学之美读后感
代码规范链接:https://zh-google-styleguide.readthedocs.io/en/latest/contents/ 数学之美读后感 一开始看名字我以为是一本讲数学是怎么发展的 ...
- java算法-数学之美一
巧用数学的思想来解决程序算法问题,这样的代码如诗般优美.通过数学思想来看问题,也能将程序简单化.“斐波那契数列”对于java程序员来说一定不陌生.当然这个问题的解决方案也有很多.用一个例子说明数学思想 ...
- Google黑板报: 数学之美系列(网上找的原链接)
转载地址:http://blog.sina.com.cn/s/blog_47cccb02010009u0.html 系列一 -- 统计语言模型 http://googlechinablog.com/2 ...
- 《数学之美》(吴军 著)读书笔记:第1章 文字和语言 vs 数字和信息
第1章有4个小节,以及前言. 前言 1.信息 2.文字和数字 3.文字和语言背后的数学 4.小结 下面我一一展开,让我们看看每一节都说了什么. 前言 语言和数字都是信息传播的载体,他们之间其实存在着天 ...
- 数学之美?编程之美?数学 + 编程= unbelievable 美!
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:Rusu 导语 相信大家跟我一样,偶尔会疑惑:曾经年少的时候学习过的那么多的复杂的数学函数,牛逼的化学方程式,各种物理原理.公式,到底有 ...
- 《数学之美》--第一章:文字和语言 vs 数字和信息
PDF下载 第一章 文字和语言 vs 数字和信息 数字.文字和自然语言一样,都是信息的载体,它们之间原本有着天然的联系.语言和数学的产生都是为了同一个目的-记录和传播信息.但是,直到半个多世纪前香农博 ...
随机推荐
- ORA-15063: ASM discovered an insufficient number of disks for diskgroup "ASM,KEL"
在启动ASM的时候报错,报错如下: SQL> startup ASM instance started Total System Global Area 130023424 bytes Fixe ...
- 使用python的logging模块
一.从一个使用场景开始 开发一个日志系统, 既要把日志输出到控制台, 还要写入日志文件 import logging # 创建一个logger logger = logging.getLogger(' ...
- bzoj4578: [Usaco2016 OPen]Splitting the Field
2365: Splitting the Field 题意:n个点,求用两个矩形面积覆盖完所有点和一个矩形覆盖完少多少面积 思路:枚举两个矩形的分割线,也就是把所有点分成两个部分,枚举分割点:先预处理每 ...
- Components of the Impala Server
Components of the Impala Server The Impala server is a distributed, massively parallel processing (M ...
- DATASNAP 自增长字段问题
mssql数据表中包含有自动增值字段khid,类型为identify(1,1),且为表的主关键字; 在程序中修改和删除都没有问题,但增行时,增行总是提示错误'key violation'! 如何取消这 ...
- php-fpm 启动不了 libiconv.so.2找不到
service php-fpm start Starting php-fpm /alidata/server/php/sbin/php-fpm: error while loading shared ...
- Unity3D之Mecanim动画系统学习笔记(八):Animator Layers(动画分层)
解决什么问题? 动画分层可以用来解决什么样的问题呢?试想一下如果你要开发一款第三人称的射击游戏,那么肯定是希望身体的动画分为上下两部分,上方根据瞄准的位置和是否射击进行动画播放,下方根据移动播放动画. ...
- windbg命令分类与概述
WinDBG的大多数功能是以命令方式工作的, 本系列将介绍WinDBG的三类命令, 标准命令, 元命令和扩展命令. =============== 标准命令 =============== 标准命令用 ...
- C++成员变量、构造函数的初始化顺序
一.C++成员变量初始化 1.普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值.考虑一下效率的可以再构造函数的初始化列表中进行 2.static 静态变量(本地化数据和代码范围): st ...
- opencv 手势识别
我使用OpenCV2.4.4的windows版本+Qt4.8.3+VS2010的编译器做了一个手势识别的小程序. 本程序主要使到了Opencv的特征训练库和最基本的图像处理的知识,包括肤色检测等等. ...