输入长度和散列分布之间是否存在任何关系



我用坎特伯雷语料库基准集测试了这个站点的一些哈希函数。

在测试中,我的程序读取基准文件

对于每个1字节,连续3或4字节将作为哈希函数



的输入

示例)基准文件包含"ABCDEFGHI"

当输入长度为3时,'ABC'是第一个输入,并生成一些哈希值

接下来,'BCD'是第二个输入并生成另一个哈希值,依此类推

当输入长度为4时,输入将是'ABCD',然后是'BCDE'



哈希输出是32位长,我的程序提取最后12位,这12位用作哈希表

的地址

我测试了旋转哈希,一次哈希,伯恩斯坦哈希,FNV哈希。

在每个测试用例中,当输入长度为4时,哈希利用率总是优于输入长度为3时。



输入长度和哈希分布之间有关系吗?哈希有什么理论或特征吗?

还是只是巧合?

是。有一个底层数组,每当哈希表变得太"满"时,它就会调整大小。通常,底层数组的大小是从质数列表中选取的,每个质数的大小大约是前一个大小的两倍。有很多方法可以做到这一点,但关键是对于给定的调整大小方案,如果您只是逐个添加元素,利用率将上下变化,但可能在调整大小后立即下降。

相关内容

最新更新