数据结构-完美哈希

来源:互联网 发布:snh48知乎娱乐圈地位 编辑:程序博客网 时间:2024/05/22 00:48

1.什么是完美哈希

哈希的基本缺陷,即使构造了全域哈希,还是不一定能解决不好的键集输入的问题,能不能找到一个完美的解决方案呢?能不能保证在任何情况下查找的复杂度都在Θ(1)呢?

完美哈希函数(Perfect Hash Function,简称PHF)就是没有冲突的哈希函数,也就是,函数H将N个KEY值映射到M个整数上,这里 M>=N ,而且,对于任而且,对于任意的 KEY1 ,KEY2 ,H( KEY1 ) != H( KEY2 ) ,并且,如果 M = = N ,则 H 是最小完美哈希函数(Minimal Perfect Hash Function,简称MPHF)。


2 完美hash的设计

完美哈希的思想就是采用两级的框架,每一级上都用全域哈希

完美哈希的结构如上图。具体来说,第一级和带链表的哈希非常的相似,只是第一级发生冲突后后面接

的不是链表,而是一个新的哈希表。后面那个哈希结构,我们可以看到前端存储了一些哈希表的基本

性质:m 哈希表槽数;a,b 全域哈希函数要确定的两个值(一般是随机选然后确定下来的),后面跟着

哈希表。

为了保证不冲突,每个二级哈希表的数量是第一级映射到这个槽中元素个数的平方,这样可以保证整个

哈希表非常的稀疏



原创粉丝点击