联系hashgameCONTACT hashgame
地址:广东省广州市
手机:13988889999
电话:020-88889999
邮箱:admin@qq.com
查看更多
Rhashgamehashgame
你的位置: 首页 > hashgame

Hash函数的设计优化HASH GAME - Online Skill Game ET 300

发布时间:2025-08-21 16:13:11  点击量:

  HASH GAME - Online Skill Game GET 300

Hash函数的设计优化HASH GAME - Online Skill Game GET 300

  Hash 函数的设计优化 天津南开中学 李羽修 【摘要】 Hash 是一种在信息学竞赛中经常用到的数据结构。 一个好的 Hash 函数可以很大程度上提高程序的整体时间效率和空间效率。本文对面向各种不同标本(关键值)的 Hash 函数进行讨论,并对多种常用的 Hash 函数进行了分析和总结。 【关键字】 Hash 函数,字符串,整数,实数,排列组合 【正文】 对于一个 Hash 函数,评价其优劣的标准应为随机性表每一个单元(cell)之概率的平均程度概率的平均程度,因为这个概率越平均,数据在表中的分布就越平均,表的空间利用率就越高。由于在竞赛中,标本的性质是无法预知的,因此数学推理将...

  Hash 函数的设计优化 天津南开中学 李羽修 【摘要】 Hash 是一种在信息学竞赛中经常用到的数据结构。 一个好的 Hash 函数可以很大程度上提高程序的整体时间效率和空间效率。本文对面向各种不同标本(关键值)的 Hash 函数进行讨论,并对多种常用的 Hash 函数进行了分析和总结。 【关键字】 Hash 函数,字符串,整数,实数,排列组合 【正文】 对于一个 Hash 函数,评价其优劣的标准应为随机性表每一个单元(cell)之概率的平均程度概率的平均程度,因为这个概率越平均,数据在表中的分布就越平均,表的空间利用率就越高。由于在竞赛中,标本的性质是无法预知的,因此数学推理将受到很大限制。我们用实验的方法研究这个随机性。 随机性,即对任意一组标本,进入 Hash一、整数的一、整数的 Hash 函数函数 常用的方法有三种:直接取余法、乘积取整法、平方取中法。下面我们对这三种方法分别进行讨论。以下假定我们的关键字是k ,Hash 表的容量是M ,Hash 函数为  kh。 1.直接取余法.直接取余法 我们用关键字k 除以 M ,取余数作为在 Hash 表中的位置。函数表达式可以写成:  kMkhmod。 例如,表容量12M,关键值100k,那么  4kh。该方法的好处是实现容易且速度快,是很常用的一种方法。但是如果M 选择的不好而偏偏标本又很特殊,那么数据在 Hash中很容易扎堆而影响效率。 对于 M 的选择,在经验上,我们一般选择不太接近n2 的一个素数;如果关键字的值域较小, 我们一般在此值域 1.1~1.6 倍范围内选择。 例如k 的值域为600, 0, 那么701M即为一个不错的选择。竞赛的时候可以写一个素数生成器或干脆自己写一个“比较像素数”的数。 我用 4000 个数插入一个容量为 701 的 Hash 表,得到的结果是: 测试数据 随机数据 最小单元容量: 0 连续数据 5

【返回列表页】

顶部

地址:广东省广州市  电话:020-88889999 手机:13988889999
Copyright © 2018-2025 哈希游戏(hash game)官方网站 版权所有 非商用版本 ICP备案编: