哈希总结
来源:互联网 发布:java sendmail 发邮件 编辑:程序博客网 时间:2024/06/16 02:34
哈希总结
性质
所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果。但另一方面,散列函数的输入和输出不是一一对应的,如果两个散列值相同,两个输入值很可能是相同的,但并不能绝对肯定二者一定相等。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。
典型的散列函数都有无限定义域,比如任意长度的字节字符串,和有限的值域,比如固定长度的比特串。在某些情况下,散列函数可以设计成具有相同大小的定义域和值域间的一一对应。一一对应的散列函数也称为排列。可逆性可以通过使用一系列的对于输入值的可逆“混合”运算而得到。
常用HASH函数
·直接取余法:f(x):= x mod maxM ;maxM一般是不太接近 2^t 的一个质数。
·乘法取整法:f(x):=trunc((x/maxX)*maxlongit)mod maxM,主要用于实数。
·平方取中法:f(x):=(x*x div 1000) mod 1000000);平方后取中间的,每位包含信息比较多。
构造方法
散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位。
(详细构造方法可以参考hash函数中的【哈希表的构造方法】)
1.直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a·key + b,其中a和b为常数(这种散列函数叫做自身函数)
2.数字分析法
3.平方取中法
4.折叠法
5.随机数法
6.除留余数法:取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即H(key) = key MOD p,p<=m。不仅可以对关键字直接取模,也可在折叠、平方取中等运算之后取模。对p的选择很重要,一般取素数或m,若p选的不好,容易产生同义词。
- 哈希专题总结
- 哈希总结
- 部分哈希算法总结
- 字符串哈希题目总结
- 关于哈希的总结
- 总结一致性哈希(Consistent Hashing)
- 总结一致性哈希(Consistent Hashing)
- 面试总结之-哈希算法分析
- 【总结】一致性哈希算法(Memcached)
- memcache中一致性哈希算法总结
- 图像语义哈希方法总结
- C++ 哈希知识点总结详解
- 字符串模板总结(二):字符串哈希
- redis源码解读总结(redis一致性哈希实现)
- java基础学习总结——哈希编码
- java基础学习总结——哈希编码
- java基础学习总结——哈希编码
- 字符串“水”题(状压DP + map哈希总结)
- lua 函数
- python基础操作mongodb
- 应用进程与系统进程的通信(IActivityManager & IApplicationThread)
- Qt/QSS封装管理类,更好的管理你的QSS样式
- 使用ROP绕过DEP 64位
- 哈希总结
- Maven详解之聚合与继承
- QT程序在Windows下制作安装包发布程序的方法
- C++第6次作业
- Kotlin学习笔记(一)安装
- IMX6之Openwrt移植增加u-boot支持
- 两数之和
- 比较ArrayList、LinkedList、Vector
- [SDOI2016] BZOJ4602 齿轮-dfs-带权并查集-数论逆元-质因数分解