Perfect hashing(完美哈希)指一种哈希方法:在给定的一组固定不变的键(static set)上构造哈希函数,使得这些键在哈希表中不发生冲突(collision)。常见目标是实现查找的高效性(通常可做到接近或达到常数时间),并在一些方案中避免查找时的额外探测/链表开销。该术语在算法与数据结构(尤其是静态字典/集合查找)中常见。
/ˈpɜːrfɪkt ˈhæʃɪŋ/
Perfect hashing lets us build a lookup table with no collisions for a fixed list of keys.
完美哈希可以让我们为一组固定的键构建一个没有冲突的查找表。
In a compiler, perfect hashing can speed up keyword recognition because the set of keywords is static.
在编译器中,完美哈希可以加速关键字识别,因为关键字集合是静态不变的。
perfect来自拉丁语 perfectus(“完成的、完善的”),在这里强调“理想状态”:对指定键集合而言冲突为零。
hashing源自 hash(原义与“切碎、混杂”相关),在计算机科学中指把数据通过哈希函数映射到表中位置的过程;perfect hashing就是“把映射做得足够好,以至于对这组键不会相互‘混到一起’(冲突)”。