哈希思想的简介、实现与深入

 

一、定义

    一个哈希组是满足下列条件的四元组(x,y,k,h):

        1) x是所有可能的消息的集合;

        2)y是由可能的消息摘要或认证标签构成的优先级,摘要即压缩后的数据;

        3)K 是密钥空间,是所有可能的密钥构成的有限集;

        4)对每个k ∈K, 存在一个哈希函数h: x->y;

 ͼK,存在一个hash函数hk ͼ H,hk:

x→yͼ

二、简介

     哈希的主要工作是将高维数据变为低维紧凑的二值码,即将复杂类型的数据用二进制串作为存储密码存储在计算机中,因此哈希表针对图像、视频或者文本数据库进行存储,实质是对原始数据的有损压缩。

     分类: 无监督哈希和有监督哈希;

     过程:key -> hash值 -> 桶号code ->存储<code,value>;

     目的:让hash值均匀分布在桶中,使查找的消耗降到O(1);

     优点:数据存储和查询消耗的时间大大降低;

     缺点:消耗比较多的内存;

三、常见哈希函数

     直接定址法

    1、除留余数法

         设哈希桶大小为m,取一个接近m的数p, hash(key) = key % p;

     随机数法

     折叠法

    数学分析法

    平方取中法

    2、乘法散列法

                                            hash(key) = floor( m * ((key *A) mod 1))

        设w为计算机字长,0<A<1,

               取 s = A * 2w, key *s 为2w位数,前w位为整数部分,后w位为小数部分;

               再看上述散列,哈希函数的运算为取s的后w位的前几位为散列值。

    3、全域散列法

解释:

       为防范恶意存储数据到相同槽,哈希函数被设置为从哈希函数集中随机选取。

                                                 Data   ==>  {  hash_f1,hash_f2,hash_f3,…}  ===>  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值