【发布时间】:2015-08-16 04:40:16
【问题描述】:
我在 this site 中使用 Canterbury 语料库基准集测试了一些哈希函数。
在测试中,我的程序读取基准文件
对于每一个字节,连续的3或4个字节将作为散列函数的输入
示例)基准文件包含“ABCDEFGHI”
当输入长度为 3 时,'ABC' 是第一个输入并生成一些哈希值
接下来,'BCD' 是第二个输入并生成另一个哈希值,依此类推
当输入长度为 4 时,输入将是 'ABCD' 和下一个,'BCDE'
hash输出是32bit长,我的程序提取最后12bit,这12bit作为hash表的地址
我测试了 Rotation hash、one-at-a-time hash、Bernstein's hash、FNV hash。
当输入长度为 4 时,在每个测试用例中,哈希利用率总是比输入长度为 3 时更好。
输入长度和哈希分布之间有什么关系吗? 哈希的任何理论或特征?
还是巧合?
【问题讨论】:
-
“哈希利用率”是指“空间利用率”、“负载因子”还是其他?你到底在计算什么,你得到了什么数字?
-
你散列了多少个不同的 3-gram?有多少种不同的 4 克?我同意@JohnFeminella:你究竟在测量什么?
-
我计算(写入的哈希条目的数量)/(哈希条目的总数),输入长度 4 显示更高的值。
-
hmm..我没有检查n-gram信息。
-
您应该发布您的代码、输入和输出,因为您的问题中有 许多 模棱两可,关于您所做的事情以及不值得的结果说话……
标签: hash hashtable probability