什么是完美散列(perfecthashing)?
一、完美散列

简介
对集合S的完美散列函数 是一个将S的每个元素映射到一系列无冲突的整数的 哈希函数。一个完美散列函数的应用与其他哈希函数的应用基本一致,但不需要任何冲突解决方案。在数学术语中,这是一个完全单射函数。
特性及使用
对于特定集合S的完美散列函数能在常数时间中被计算出,其映射值在一个相对小的范围内,能被一个随机化算法发现,该算法的操作次数与S的大小成正比。任何适合在哈希表中使用的完美散列函数需要至少与S的大小成正比的位数。
一个值的位数被限定范围的完美散列函数能应用于高效查找操作中:假定查找键(key)与集合S(或与集合S关联的值)对应,然后将完美散列函数应用于查找键,得到哈希值(一个整数),然后在查找表中取出该整数对应的值。在集合S极少更新且查询频率非常多的情况下,使用完美hash函数是非常有效的。对集合S更新频率的限定是由于对任何集合S的修改,都将导致该完美散列函数退化为非完美散列函数。每次集合S被修改后自动更新hash函数的解决方案被称为dynamic perfect hashing,但这类方法非常复杂,难以实现。一个简单的允许动态更新集合S的完美散列函数的替代品叫cuckoo hashing。
延伸阅读:
二、完美哈希
从性能角度可以这样定义:当关键字的集合是一个不变的静态集合时,哈希技术还可以用来获取出色的最坏情况性能。如果某一种哈希技术在进行查找时,其最坏情况的内存访问次数为O(1)时,则称其为完美哈希(Perfect Hashing)。
完美哈希函数是静态的,就意味着事前必须知道需要哈希哪些数据。同时生成的算法比较复杂,需要很长的时间来建立索引。没有办法实时添加更新。给他的应用范围提了个极大的限制。
相关推荐HOT
更多>>
汇编语言是一种什么程序设计语言?
一、汇编语言介绍汇编语言是一种能反映指令功能的助记符表达的程序设计语言,它是符号化的机器语言。用汇编语言写出的程序是汇编语言源程序,机...详情>>
2023-10-13 23:16:07
软件开发成本分配方法有哪些?
一、软件开发成本分配方法1. 经验法经验法也叫专家法,是由行业内经验丰富的专家背靠前一起依据自己的行业经验对软件项目进行整体的估算。前期...详情>>
2023-10-13 22:41:41
大数据具有哪些特点?
一、大数据的概念与内涵“大数据”的概念早已有之,1980年知名未来学家阿尔文•托夫勒便在《第三次浪潮》一书中,将大数据热情地赞颂为“第三次...详情>>
2023-10-11 21:54:13
JAVA里面表达式,关系式,条件表达式,逻辑表达式,四者有什么区别?
一、JAVA里面表达式,关系式,条件表达式,逻辑表达式,四者的区别区别是格式和优先级不同。关系表达式(左结合)优先级次于算述表达式(1)、=...详情>>
2023-10-11 21:29:45
京公网安备 11010802030320号