在刘璟的《计算机算法引论——设计与分析》一书中介绍了几种完备哈希(PHF)构造技术,里面提到了Fredman构造法。这本书是零几年写的比较早,光看书中介绍不太容易理解这一构造法的具体流程,搜了一下网上居然极少有这一方法的介绍,看了很多数据结构与算法的书也很少有。在这里先介绍原理与构造方法,再拿一个例子过一遍操作。
原理:
Fredman通过构造法证明了:对任意的关键字集合S⊆U,|S|=n,至多取m=3n(即m≤3n,α=n/m>0.33),一定可以在形如
h(x)=((kx) mod N) mod n (N=|U|)
的Hash函数中找到S的PHF。相关的论文应该是这一篇