布隆过滤器可以在占用内存极小的情况下,低误判率地判断某数据是否存在。
布隆过滤器使用一个bit数组,每一位只有1或0。
当一个数据添加的时候,会通过n个哈希函数获得n个值,将数组对应位置的值修改为1。
因此,判断一个数据是否存在的时候,只需要通过n个哈希函数获得n个值,判断每个位置是否都为1,有一个不为0则可以确定该数据不存在,如果全都为1,说明可能存在(可能别的数据的哈希结果会和该数据的哈希结果有重叠部分)。
bit数组的长度和哈希函数的个数决定了布隆过滤器的误判概率。合理的设置下,误判率可低至万分之一,效率非常高。
原文:https://www.cnblogs.com/kunwu/p/13658913.html