189 8069 5689

全域哈希和完全哈希-创新互联

1、直接映射表

创新互联公司长期为上千客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为玉屏企业提供专业的网站制作、成都网站设计,玉屏网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。

 查找数据时,直接定位,时间复杂度为:O(1);

 局限性:浪费大量的内存空间;

2、哈希表

 (1)、用一个哈希函数Hash()来随机映射那些键;

抽象模型

全域哈希和完全哈希

 (2)、哈希冲突时:

 i、链地址法,时间复杂度最坏:O(n);

 简单均匀哈希的时间复杂度:O(1+a);a:装载因子

 哈希函数的选取:除留余数法;

 ii、开放寻址法,没有链表;

 利用多次哈希函数,探测空的位置,直到找到一个可以存放元素的位置即可;探查序列很重要!!!

 插入、查询就根据探查序列比较简单,删除比较难做;

 探测序列:a、线性探测:一个挨一个位置的探测,往下扫描;

 探测序列:b、二次哈希:2个哈希函数的和扫描;

 哈希表越满,其探查效率越低;

3、哈希表溢出,动态哈希怎么实现?

 i、首先申请一个原哈希表2倍大的空间;

 ii、在将旧有元素移到新的哈希表空间中;

 iii、在释放原有空间;

平摊分析的思想:

 一个插入的平均代价时间复杂度:O(1);

 n个元素的插入时间复杂度是:O(n);

4、哈希函数的所有键映射同一个槽,此时查询效率极为低下。

 (1)、问题关键:选择哈希函数,要随机选择,与输入的哈希运算的键保存独立,程序员本身也不能确定在实际运行时会用到哪一个哈希函数,无法预测随机数的输出;----->全域哈希

 (2)、全域哈希解决的问题:所有键都相同,此时随机选择哈希函数将会使其映射到不同的槽中;

 哈希函数集H中随机地选择函数h,均匀的分布在哈希表中;

 (3)、全域哈希的构造:

 i、槽的总数为m = 质数时成立,k = 把任意的键分解为r+1位,可以把k看成k_0,k_1......k_r(k_i >= 0 && k_i <= m-1),k用"m进制"来表示;k不断除m,取余在除(进制转换法)

 ii、构造一个a = ,随机地从(0,1,2,....m-1)中选取元素分配到a集合中;

 哈希函数集:k x a,k中的每一项和a中的每一项相乘,再把乘积全部加起来,在对m取余,就得到分配的槽数;哈希函数集的大小:m^(r+1);

 (4)、全域哈希是用随机函数的思想,但是有很小很小的概率还是会冲突的,解决方案:完全哈希;

5、完全哈希

 使用二级结构,在每一级都会用全域哈希,第一级可能会有冲突,但是第二级就没有了;

 (1)、算法模型

全域哈希和完全哈希

 (2)、算法分析:

 时间复杂度:O(1);

 所需的存储空间为:O(n);

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:全域哈希和完全哈希-创新互联
链接地址:http://cdxtjz.cn/article/ceoseg.html

其他资讯