布隆过滤器
布隆过滤器可以用于检索一个元素是否在一个集合中。 它的优点是空间效率和查询时间都远远超过一般的算法, 缺点是有一定的误识别率(即Bloom Filter报告某一元素存在于某集合中,但是实际上该元素并不在集合中)和删除困难, 但是没有识别错误的情形(如果某个元素确实没有在该集合中,那么Bloom Filter 是不会报告该元素存在于集合中的)。
优点 相比于其它的数据结构,布隆过滤器在空间和时间方面都有巨大的优势。布隆过滤器存储空间和插入/查询时间都是常数。 另外, Hash 函数相互之间没有关系,方便由硬件并行实现。 布隆过滤器不需要存储元素本身,在某些对保密要求非常严格的场合有优势。 布隆过滤器可以表示全集,其它任何数据结构都不能;
缺点 布隆过滤器的缺点和优点一样明显。误算率(False Positive)是其中之一。随着存入的元素数量增加,误算率随之增加。 如果元素数量太少,则使用散列表足矣。 另外,一般情况下不能从布隆过滤器中删除元素。