
整理 | Carol
布隆过滤器是一种基于 Hash 的高效查找结构,能够快速判断某个元素是否在一个集合内。
首先回顾一下基于Hash的快速查找,由于Hash算法具有一一对应的特点,即一个内容对应一个Hash值,而Hash值最终是可以转化为二进制编码,这就天然的构成了一个 “ 内容 - 索引 ” 的一个结构。
假如给定一个内容和存储数组,通过构造Hash函数,使Hash值总量不超过数组的大小,就可以实现快速的基于内容的查找。如 “算法改变人生” 的 Hash 值如果是 “1000”,则存放到数组的第 1000 个单元上去。如果需要快速查找任意内容,如 “算法改变人生” 字符串是否在存储系统中,只需要计算 Hash 值,并用 Hash 值查看系统中对应元素即可。
布隆过滤器采用了多个 Hash 函数来提高空间利用率。对同一个给定输入来说,多个 Hash 函数计算出多个地址,分别在对应的这些地址上标记为 1。进行查找时,进行同样的计算过程,并查看对应元素,如果都为 1,则说明较大概率是存在该输入。
布隆过滤器相对单个 Hash 算法查找,大大提高了空间利用率,可以使用较少的空间来表示较大集合的存在关系。上面讲的Hash查找和布隆过滤器,基本思想都是基于内容的编址。

布隆过滤器示例图(仅供参考)