欢迎您访问广东某某机械环保科有限公司网站,公司主营某某机械、某某设备、某某模具等产品!
全国咨询热线: 400-123-4567

新闻资讯

哈希游戏| 哈希游戏平台| 哈希游戏APP

HAXIYOUXI-HAXIYOUXIPINGTAI-HAXIYOUXIAPP

哈希游戏- 哈希游戏平台- 官方网站字符串函数docx

作者:小编2025-03-15 16:03:22

  哈希游戏- 哈希游戏平台- 哈希游戏官方网站

哈希游戏- 哈希游戏平台- 哈希游戏官方网站字符串哈希函数docx

  字符串哈希函数.docx字符串哈希函数哈希函数h是一个能够将n个键值xj的集合映射到一个整数集合的函数h(xi),其值域范围是0h(xj)m-lz允许重复。哈希是一个具有查找表功能并且提供平均情况下快速访问的标准方法。例如,当数据包含n个整数键值。某常用哈希函数采用h(x)=xmodm;其中m是一个较小的值,且满足mn/aoa是装载因子,表示记录数和可用地址数的比例关系。m—般选择一个素数”因此如果要求提供一个对1000个整数键值进行哈希的函数,_个程序员可能会建议写出如下函数形式:,h(x)=xmod1399O并且提供一个装载因子为。a=,该表声明能够存放1399个地址。a越小,两个不同键值在相同哈希值相互冲突的可能性就越小,然而冲突总是不可避免。第1次考虑这个问题时,事实可能让人吃惊,最好的例子莫过于著名的生日悖论(birthdayparadox)。假走一年有365天,那么要组合多少个人,?换句线个哈希槽(hashslot)。?当首次面对这样一个问题时,一般的反应肯定是认为需要很多人才行。事实上,答案是只需区区23人。找到一个能够满足现实大小要求且无冲突的哈希函数的几率/」倒几乎可以忽略25。例如,一个1000个键值和1399个随机选择的槽,-217(概率的计算诱导公式将在下一节中给岀,=1399和n=1000得到),如何才能最好地处理这些不可避免冲突?这一话题将在本节中以大段篇幅展开,这里我们正是要找到其中万里挑一的能够避免所有冲突的哈希函数。如果在一般的哈希函数中再增加一条额外的性质,即对于任意的xi和xj,当且仅当i=j时才有h(xi)=h(xj),这就是完美哈希函数(perfecthashfunction)0这里,当对一个键值集合L进行哈希时,不可能出现任何冲突。如果哈希函数不仅是完美的,并映射到的值域范围为m=nzn个键值中的任意一个都——映射到唯一整数(该整数是介于1〜n的某个整数)z这时表的装载因子是a=,因此该函数称为最小完美哈希函数〃(minimalperfecthashfunction),或者简记为〃MPHF〃。一个MPHF保证了任何一个键值只需逬行一次探测(one・probe)访问,并且表中不包含无用槽。最后,如果哈希函数还具有这样的性质,即若xixj,则有h(xi)h(xj),这称为保序性(orderpreserving)o给定一个保序的最小完美哈希函数(简写为〃OPMPHF〃,读作〃oomph!),那么键值可以在常量时间内找到,而不需要田可空间开销。并且如果需要的话,还可以按序访问。一个OPMPHF能够直接且简单地返回一个键值的序号。当煞,一个MPHF或者OPMPHF对某一个键值集合L有效,但可能对另_个集合就不〃完美〃了,因此这里不过是对一个单一静态集合预先计算(precalculated)了查找函数