Hash 差分bloom过滤器和FM草图

Hash 差分bloom过滤器和FM草图,hash,set,duplicates,counting,bloom-filter,Hash,Set,Duplicates,Counting,Bloom Filter,bloom过滤器和散列草图(也是FM草图)之间有什么区别?它们的用途是什么?散列草图/Flajolet Martin草图 Flajolet,p./Martin,G.(1985):数据库应用的概率计数算法,载于:《计算机与系统科学杂志》,第31卷,第2期(1985年9月),第182-209页 杜兰德,M./Flajolet,p.(2003):大基数的对数计数,摘自:Springer LNCS 2832,算法ESA 2003,第605-617页 散列草图用于计算集合中不同元素的数量 鉴于: 长度为

bloom过滤器和散列草图(也是FM草图)之间有什么区别?它们的用途是什么?

散列草图/Flajolet Martin草图 Flajolet,p./Martin,G.(1985):数据库应用的概率计数算法,载于:《计算机与系统科学杂志》,第31卷,第2期(1985年9月),第182-209页

杜兰德,M./Flajolet,p.(2003):大基数的对数计数,摘自:Springer LNCS 2832,算法ESA 2003,第605-617页

散列草图用于计算集合中不同元素的数量

鉴于:

  • 长度为l的位数组B[]
  • 映射到[0,1,…2^l]的(单个)散列函数h()
  • 一个函数r(),给出输入二进制表示中最低有效位的位置(例如000101返回1001000返回4)
插入元素x:

  • pn:=h(x)返回一个伪随机数
  • 应用r(pn)将位数组的位置设置为1 由于h()的输出是伪随机的,所以每一位i被设置为1~n/(2^(i+1))次
集合中不同元素的数量:

  • 查找位数组中最右边0的位置p
  • p=log2(n),求n得到集合中不同元素的个数; 结果可能高达1.83个震级
用法:

  • 在数据挖掘、P2P/分布式应用、文档频率估计等方面

布隆过滤器 Bloom,H.(1970):允许错误的哈希编码中的空间/时间权衡,载于:《ACM通信》,第13卷,第7期(1970年7月),第422-426页

Bloom过滤器用于测试元素是否为集合的成员

鉴于:

  • 长度为m的位数组B[]
  • k个不同的散列函数h_k(),映射到[0,…,m-1],即m位数组的一个位置
插入元素x:

  • 将h_k应用于x(h_k(x)),对于所有k,即得到k值
  • 将数组B中的结果位设置为1(如果已设置为1,则不做任何更改)
检查y是否已在集合中:

  • 使用所有散列函数h_k(h_k(y))获取要检查的位置p_k,即,对于每个函数h_k,您将获得一个位置p_k
  • 如果数组B中的一个位置p_k设置为0,则元素y肯定不在该集中
  • 如果p_k给出的所有位置都是1,那么元素y可能(!)在集合中
  • 假阳性率约为(1-e^(-kn/m))^k,不可能出现假阴性
  • 通过增加散列函数的数量,可以降低误报率;但是,同时bloom过滤器会变慢;k的最佳值是k=(m/n)ln(2)
用法:

  • 一开始,它被用作数据库中的廉价过滤器,以过滤掉与查询不匹配的元素
  • 今天的各种应用程序,例如在Google BigTable中,以及用于IP查找的网络中,等等

Bloom Filter是一种用于成员查找的数据结构,而FM Sketch主要用于元素计数。这两种数据结构提供了各自的解决方案,优化了执行查找/计算所需的空间,权衡的是结果的准确性