Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 通过折叠然后除以素数来散列密钥?_Algorithm_Hash_Hashcode_Hash Function - Fatal编程技术网

Algorithm 通过折叠然后除以素数来散列密钥?

Algorithm 通过折叠然后除以素数来散列密钥?,algorithm,hash,hashcode,hash-function,Algorithm,Hash,Hashcode,Hash Function,我想使用一个简单的散列函数对以下键“LOWELL”进行散列,该散列函数使用了3个步骤: 步骤1:将关键点转换为数字 LOWELL = | L | O | W | E | L | L | | | | | | | ASCII code: 76 79 87 69 76 76 32 32 32 32 32 32 我在这里的问题是,为什么它添加了6个带有固定ASCII码32的空位置 第二步:折叠并添加(切掉数字并添加) (把他们放在一起) 第三步:取一个素数的mod 33820 mod 19937=13

我想使用一个简单的散列函数对以下键“LOWELL”进行散列,该散列函数使用了3个步骤:

步骤1:将关键点转换为数字

LOWELL = | L | O | W | E | L | L | | | | | | |
ASCII code: 76 79 87 69 76 76 32 32 32 32 32 32
我在这里的问题是,为什么它添加了6个带有固定ASCII码32的空位置

第二步:折叠并添加(切掉数字并添加) (把他们放在一起)

第三步:取一个素数的mod

33820 mod 19937=13883

这里还有一个问题,为什么我会用素数除法呢 答:当存在序列的时候,除以一个数字是好的 连续的数字。如果有许多中间序列 连续数,除以有许多小因子的数 可能会导致大量碰撞。质数是更好的选择。但我没有明白

步骤4:除以地址空间的大小(最好是素数)。13883模101=46

最后,为什么要划分地址空间

您可以找到详细的步骤(幻灯片350)
非常感谢您的帮助

,因为您的地址空间只包含
101
插槽,所以您不能将记录放在地址超过此限制的位置

因此,您需要提醒将哈希函数的输出(
13883
)除以地址空间,以确保记录的位置位于允许的地址空间中

因此
h(s)%address\u space
将始终在您的地址空间中提供允许的位置

关于您的第一个问题,为什么我们在哈希中使用质数,此线程将帮助您:

注意:
Welloll
将给出完全相同的值。。。和
woell
。。。而且。。。
7679|8769|7676|3232|3232|3232|
7679+8769+7676+3232+3232+3232 = 33,820