“哈希表主体只承诺字典语义与负载参数,冲突策略应分层阅读:通用哈希给对固定键集的碰撞期望,Perfect Hashing针对静态集合换最坏常数查询,开放定址把键直接放入数组并依探测链,Cuck…”
“数组提供桶,哈希函数提供定位,二者共同实现字典、映射与集合 ADT。面对预先固定的最坏键集,通用哈希把随机性放在选函数上;静态集合可进一步用完美哈希把碰撞消除。若只需节省空间的近似成员查询,…”
Bloom filter
用多个哈希位置共享位数组实现无假阴性的插入式近似成员查询,并允许可控假阳性。
Bloom Filter 维护初始全零的
在哈希近似独立均匀、插入
固定
Bloom Filter 不保存“哪个键占了哪个 bit”,而让所有键共享一张位图。一个零位是强证据:查询键若曾插入,该位必已被置一;全为一却无法判断这些 bit 是否来自同一个键。它用放弃精确肯定换取远小于显式哈希表的空间。
最适合的用法是过滤昂贵负查询:返回“不存在”即可停止,返回“可能存在”再访问权威存储。过滤器本身不提供值,也不能枚举成员。
缓存系统可先用 Bloom Filter 判断对象键是否可能在远端集合中。只要某个查询位置为零,就省去一次远端访问;若全部为一,仍必须查询真实字典确认。假阳性只增加一次无效后端访问,不会把不存在对象当作真实值返回。
普通 Bloom Filter 不能安全删除:把键
Bloom Filter 用于数据库查询过滤、网络缓存、存储系统 SSTable 索引和集合差异预筛。空间预算、预计元素数和容许假阳性率共同决定
它与完美哈希方向相反:完美哈希为已知静态集合消除查询冲突,Bloom Filter 则允许概率性误报以压缩成员表示。二者都依赖哈希,却解决不同正确性契约。