d-Left Counting Bloom Filter (1)
来源:互联网 发布:ubuntu最新版 编辑:程序博客网 时间:2024/04/30 14:11
哈希函数的输出值(hash value)通常有两种用途:一种用作地址,比如在哈希表中要存储一个元素,首先要针对这个元素生成一个随机地址;另一种用作fingerprint(或者叫digital summary),比如将密码字符串hash成一个fingerprint,验证时进行核对。今天我要介绍的这种存储信息的方式将以上两种用途结合了起来:一个hash value分作两部分,一部分用作存储地址,另一部分用作fingerprint。
你也许会问,这样有什么好处吗?当然有。上篇文章中提到了一种基于perfect hashing的方法,它用了两步存储每个元素的fingerprint。第一步用了一个(perfect)哈希函数生成了这个元素的存储地址,第二步用了另一个哈希函数生成这个元素的fingerprint,然后将fingerprint存储到第一步生成的地址中。由此可见,如果一个hash value能够完成两步工作,就省去了一半的工作量。
另外,我们要存储的其实是集合中每个元素的fingerprint,一个哈希函数生成很大的一个hash value会让碰撞的几率很小,从而让false positive的概率变小。通过将这个很大的hash value中的一部分信息用作地址,其实相当于把fingerprint压缩了:信息一点没少,存储位置本身就包含了一部分信息。
现在我们使用一个哈希函数,将它的hash value分作两部分,高位部分用作随机地址,低位部分留作fingerprint。如果我们用这一个哈希函数存储一个集合,会有什么问题?在基于perfect hashing的方法中,第一步用的哈希函数是perfect hash function,也就是说一个集合的n个元素会映射到n个bucket中,没有碰撞。由于perfect hash function不能应对变动的集合,并且对大多数应用来说开销太大,所以上述所说的一个哈希函数并不是perfect hash function。由此可知碰撞会产生,并且各个bucket的负载并不均衡,实际上单个哈希函数hash value的分布服从泊松(Poisson)分布。
说到这里,文章还没有提到d-Left Counting Bloom Filter,其实上面描述的也就是它的构造过程。我们从一个hash value同时用作地址和fingerprint出发,试图构造一个简洁的存储方式来存储一个集合的fingerprints,现在遇到了一个问题,就是负载不均衡。d-Left Counting Bloom Filter中的d-Left指的是d-Left hashing,解决的就是负载均衡问题。
- d-Left Counting Bloom Filter (1)
- d-Left Counting Bloom Filter (2)
- d-Left Counting Bloom Filter (3)
- d-Left Counting Bloom Filter (4)
- d-Left Counting Bloom Filter (5)
- 评价d-Left Counting Bloom Filter
- Counting Bloom Filter
- Counting Bloom Filter
- Counting Bloom Filter
- Counting Bloom Filter
- Counting Bloom Filter
- Counting Bloom Filter
- Counting Bloom Filter
- Bloom Filter and Counting Bloom Filter
- Bloom Filter 系列改进之Counting Bloom Filter
- Bit-map (2) Bloom Filter 和 Counting Bloom Filter
- Bloom Filter 算法简介 (增加 Counting Bloom Filter 内容)
- Bloom Filter, Counting Bloom Filter和Dynamic Count Filter源码下载
- Static 一二三
- 常用的五个快捷组合键
- Red Hat Linux 企业版 服务安装目录
- 小谈应聘.NET程序员失败的几点硬伤
- Red Hat Package Manager(RPM的介绍和应用)
- d-Left Counting Bloom Filter (1)
- 导出网页中的table到excel
- [数据库]桌面轻量级数据库的选择:Access、SQLite、自己编写?
- "好东西"一定要和好朋友一起分享
- 新世纪音乐顶尖作品(15首)
- 如何让iframe自动适应内容高度
- 专访Adobe掌门:与微软共舞 Web将改变软件
- C#学习:构造、析构函数
- XML傳送與接收