概率数据结构是一类主要基于不同散列技术的数据结构的统称。与常规的(或确定性的)数据结构不同的是,概率数据结构总是提供近似的答案,但也提供了可靠的方法来估计可能产生的误差。幸运的是,这些潜在的损失和误差可以通过极低的内存需求、恒定的查询时间和可扩展性得到充分的补偿,而这些因素在大数据应用中十分重要。
本书不可能涵盖所有现有的出色解决方法,而是重点介绍它们的共同思想和重要的应用领域,包括成员查询、计数、流数据挖掘和相似度估计。
阅读本书,你将:
学会解决海量数据处理的实际问题
掌握概率数据结构的理论知识
为特定问题确定正确的数据结构
本书的目的是向包括软件架构师、开发人员以及技术决策者在内的技术从业者介绍概率数据结构与算法。通过阅读本书,你将对概率数据结构有理论和实践层面的理解,同时了解它们的常见用途。
译者序
前言
第1章 散列1
1.1 加密散列函数2
1.2 非加密散列函数5
1.3 散列表7
1.4 总结13
本章参考文献13
第2章 成员查询15
2.1 布隆过滤器16
2.2 计数布隆过滤器24
2.3 商数过滤器27
2.4 布谷过滤器38
2.5 总结46
本章参考文献46
第3章 基数49
3.1 线性计数51
3.2 概率计数55
3.3 LogLog和HyperLogLog63
3.4 总结74
本章参考文献74
第4章 频数77
4.1 多数投票算法80
4.2 频繁算法82
4.3 Count Sketch86
4.4 CountMin Sketch96
4.5 总结105
本章参考文献105
第5章 排序107
5.1 随机采样109
5.2 q-摘要116
5.3 t-摘要125
5.4 总结135
本章参考文献136
第6章 相似性139
6.1 局部敏感散列149
6.2 MinHash153
6.3 SimHash165
6.4 总结174
本章参考文献174