为什么一般hashtable的桶数会取一个素数

设有一个哈希函数
H( c ) = c % N;
当N取一个合数时,最简单的例子是取2^n,比如说取2^3=8,这时候
H( 11100(二进制) ) = H( 28 ) = 4
H( 10100(二进制) ) = H( 20 )= 4
这时候c的二进制第4位(从右向左数)就”失效”了,也就是说,无论第c的4位取什么值,都会导致H( c )的值一样.这时候c的第四位就根本不参与H( c )的运算,这样H( c )就无法完整地反映c的特性,增大了导致冲突的几率.
取其他合数时,都会不同程度的导致c的某些位”失效”,从而在一些常见应用中导致冲突.
但是取质数,基本可以保证c的每一位都参与H( c )的运算,从而在常见应用中减小冲突几率..
(个人意见:有时候不取质数效率也不会太差..但是无疑取质数之比较保险的..)
以上就是我的理解
补充一点,这里是说在常见应用中,往往有些数据会比较相近,这时候用质数比较好,比如要存放的数据是压缩的状态,比如存储一个描述当前搜索状态的表,的这时候哈希不用质数冲突机率就比较大。
如果是随机分布的整数,那么哈希模数只要取到足够大,在概率上来说都是一样的,但是这显然脱离实际应用。
你说的情况 是比较特殊的,因为选取了比较小的一个质数,当选去大质数N时,就可以仅在N进制的某一位失效,结合计算机系统的特性,N进制位表示法往往是不关键的,而常用的2^N进制比较关键,所以可以避免冲突。
其实,偶用一些大数做过测试,用来存放一个压缩为二进制的邻接矩阵,当模数足够大时,即便是合数也能有很接近质数的效果,但在某些(几十个)合数上会造成效率严重下降,所以质数是比较保险的。
你不妨自己做实验,不要去选随机整数,而要考虑一些常见应用,用质数和合数进行测试,主要考察平均装载因子,你得到的结论可能和我一样:合数绝大多数时候效果也不错,但在一部分合数上效果差得出奇,而质数几乎全部都有很好的效果。
我个人认为更普遍意义的理解,如果不取素数的话是会有一定危险的,危险出现在当假设所选非素数m=x*y,如果需要hash的key正好跟这个约数x存在关系就惨了,最坏情况假设都为x的倍数,那么可以想象hash的结果为:1~y,而不是1~m。但是如果选桶的大小为素数是不会有这个问题。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# hashtable桶数
# hashtable桶数分析
# hashtable桶数素数
# 遍历Hashtable 的几种方法
# 浅析Java中Map与HashMap
# Hashtable
# HashSet的区别
# Java中HashMap和Hashtable及HashSet的区别
# java中Hashtable和HashMap的区别分析
# 全面解析java中的hashtable
# 深入PHP中的HashTable结构详解
# java hashtable实现代码
# java中vector与hashtable操作实例分享
# 合数
# 这时候
# 但在
# 不取
# 模数
# 都有
# 很好
# 会有
# 和我
# 你说
# 出现在
# 而在
# 这个问题
# 要去
# 有一定
# 希望能
# 能有
# 比较好
# 做过
# 是说
相关文章:
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
青岛网站建设如何选择本地服务器?
安徽网站建设与外贸建站服务专业定制方案
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
如何安全更换建站之星模板并保留数据?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
如何通过虚拟主机空间快速建站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
教学论文网站制作软件有哪些,写论文用什么软件
?
岳西云建站教程与模板下载_一站式快速建站系统操作指南
建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
制作企业网站建设方案,怎样建设一个公司网站?
,在苏州找工作,上哪个网站比较好?
存储型VPS适合搭建中小型网站吗?
已有域名能否直接搭建网站?
大同网页,大同瑞慈医院官网?
如何在阿里云购买域名并搭建网站?
济南网站建设制作公司,室内设计网站一般都有哪些功能?
做企业网站制作流程,企业网站制作基本流程有哪些?
济南专业网站制作公司,济南信息工程学校怎么样?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
如何用免费手机建站系统零基础打造专业网站?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
,石家庄四十八中学官网?
如何用虚拟主机快速搭建网站?详细步骤解析
如何在阿里云虚拟主机上快速搭建个人网站?
如何在阿里云域名上完成建站全流程?
网站制作服务平台,有什么网站可以发布本地服务信息?
linux top下的 minerd 木马清除方法
如何在服务器上配置二级域名建站?
C++中引用和指针有什么区别?(代码说明)
黑客入侵网站服务器的常见手法有哪些?
高性价比服务器租赁——企业级配置与24小时运维服务
如何在云指建站中生成FTP站点?
南平网站制作公司,2025年南平市事业单位报名时间?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
如何在Tomcat中配置并部署网站项目?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
建站之星后台管理如何实现高效配置?
如何在万网自助建站中设置域名及备案?
建站之星如何取消后台验证码生成?
制作门户网站的参考文献在哪,小说网站怎么建立?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
制作公司内部网站有哪些,内网如何建网站?
如何用PHP快速搭建高效网站?分步指南
宝塔面板如何快速创建新站点?
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
*请认真填写需求信息,我们会在24小时内与您取得联系。