自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jiaomeng

jiaomeng

  • 博客(14)
  • 收藏
  • 关注

原创 Dynamic Count Filter

Spectral bloom filter(SBF)在counting bloom filter(CBF)的基础上提出了元素出现频率查询的概念,将CBF的应用扩展到了multi-set的领域。但是,SBF为解决动态counter的存储问题,引入了复杂的索引结构,这让每个counter的访问变得复杂而耗时。有没有一种解决方案既支持元素出现频率查询,结构又相对比较简单呢?Dynamic count f

2007-03-28 11:18:00 10768

原创 Spectral Bloom Filter (4)

在membership query上,由于SBF和CBF都沿用bloom filter的基本结构,因此很难在membership query上提高查询效率。但在查询元素出现频率(大于1的情况)时,由于SBF采用counter中的最小值来近似表示元素的出现频率,使得各个counter的重要性有所差别,因此CBF将counter一视同仁的做法就有提高的空间。 先来看第一种优化算法Minimal

2007-03-25 07:24:00 7410 4

原创 Spectral Bloom Filter (3)

上一节中,我们介绍到SBF将所有counter排成一个位串,counter之间完全不留空隙,然后通过建立索引结构来访问counter。现在我们来扩展这个结构,使之能支持增加和删除操作。  删除操作相对来说比较好处理,因为它不会导致存储空间的增加。但是也不能坐视不管,因为大量的删除操作会导致本该释放的空间仍然被占用。SBF采取的策略是,单个删除操作只影响相关的counter,整个存储结构

2007-03-24 08:37:00 6673

原创 Spectral Bloom Filter (2)

上一节说到SBF对counter的存储。为实现counter的高效存储,我们先简化问题,来看最少需要多少位才能存储所有的counter。假设SBF要表示M个元素的集合(可能包含重复元素),counter数组的长度为m(对应着bloom filter的位数组),显然所有counter需要的最少位数N为 其中Ci表示counter数组中第i个counter的大小,即哈希函数映射到第i位

2007-03-23 12:11:00 8907

原创 Spectral Bloom Filter (1)

Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。Counting bloom filter(CBF)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。一旦位扩展成了counter,每一个counter就不仅能表示这一地址有无映射,还能表示映射的个数。这一扩展使得存储的数据包含了更多信息,然而遗憾的是,CBF

2007-03-19 22:11:00 12222

原创 Bloom Filter应用之Web Cache Sharing

从这篇文章开始,我会陆续介绍一些bloom filter的应用。Bloom filter于1970年由Burton Bloom在一篇名为Space/Time Tradeoffs in Hash Coding with Allowable Errors的论文中提出。这篇论文同时将bloom filter(论文中不叫这个,只说是一种哈希方法,Bloom还没有自负到直接将其命名为bloom filter

2007-03-16 16:14:00 10241 1

原创 评价d-Left Counting Bloom Filter

 Bloom Filter是一个简洁精致的数据结构,要对它进行本质上的提高并不容易。多少年来,针对Bloom Filter的变种很多,但实质性的突破并不多,无非Counting Bloom Filter、Compressed Bloom Filter等几种。很多变种都针对某一特定的应用领域,或是针对某一个方面的问题,离开特定的领域和问题,将它单独拿出来算不上有分量的突破。 较之Bloo

2007-03-14 16:58:00 9121 7

原创 d-Left Counting Bloom Filter (5)

 最后,我们将d-left counting bloom filter与标准的counting bloom filter作一比较。假设要表示的集合有m个元素,构造d-left counting bloom filter的各个参数如下:1.         d-left哈希表包含4个子表;2.         每个子表包含m/24个bucket,使得bucket的平均负载是6个元素;

2007-03-13 12:22:00 7335 1

原创 d-Left Counting Bloom Filter (4)

根据前面的描述,d-left counting bloom filter构造过程中的缺陷有三个条件:1. x和y的fingerprint相同;2. 位置选择有重合;3. x不选择重合位置,y选择重合位置。其中fingerprint相同我们无法避免,因为碰撞总会出现,cell中的counter也是为此而设置的。元素选不选择重合位置我们也无法控制,因为这要根据当时的负载情况而定。所以我们想要弥补这个缺

2007-03-11 09:35:00 7237 1

原创 d-Left Counting Bloom Filter (3)

   通过以上的介绍,d-left counting bloom filter的主要思路已经呈现出来了,那就是利用d-left hashing的方法存储fingerprint。下面我们就总结一下d-left counting bloom filter的构造过程。 首先我们使用一个d-left哈希表,表中每个bucket可以容纳若干个(固定数量的)cell,每个cell的位数固定,包括一

2007-03-10 17:30:00 7028 4

原创 d-Left Counting Bloom Filter (2)

关于d-left hashing,上一篇文章已经介绍过了,这里不再多讲。前面提到过,使用d-left hashing是为了解决哈希表的负载平衡问题。为了了解d-left hashing如何解决这个问题,我们先来看没有d-left hashing的情况。同一个hash value高位用作地址低位用作fingerprint,这就意味着同一个地址对应着多个fingerprint。一个地址对应一个buck

2007-03-09 10:25:00 7296 1

原创 d-Left Hashing

  下面介绍简单介绍一下d-left hashing。d-left hashing中的d是多个的意思,我们先简化这个问题,看一看2-left hashing。2-left hashing指的是将一个哈希表分成长度相等的两半,分别叫做T1和T2,给T1和T2分别配备一个哈希函数,h1和h2。在存储一个新的key时,同时用两个哈希函数进行计算,得出两个地址h1[key]和h2[key]。这时需要检

2007-03-08 10:38:00 14382 2

原创 d-Left Counting Bloom Filter (1)

哈希函数的输出值(hash value)通常有两种用途:一种用作地址,比如在哈希表中要存储一个元素,首先要针对这个元素生成一个随机地址;另一种用作fingerprint(或者叫digital summary),比如将密码字符串hash成一个fingerprint,验证时进行核对。今天我要介绍的这种存储信息的方式将以上两种用途结合了起来:一个hash value分作两部分,一部分用作存储地址,另

2007-03-07 12:19:00 9457 1

原创 Perfect Hashing VS. Bloom Filter

Perfect Hashing VS. Bloom Filter在Network Applications of Bloom Filters: A Survey一文中,作者提到了一种基于Perfect hashing的方法,它在维持同样错误率的情况下比Bloom Filter占用更少的空间。但是这种方法只能使用在静态集合上,一旦集合发生变化,就需要进行重新计算。 假设我们要表示的静态集

2007-03-02 16:17:00 9674

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除