我有一个大小为w * h的散列表T,每个条目有一个存储桶,用于存储映射到同一散列的值。
现在我要插入一组值G. G中的每个值包含位置元组(x,y)和某个有效载荷p。
哈希函数使用值的位置元组作为参数:H(x,y)。 G本质上是一个网格,每个位置存储有效载荷p。
要在不同步的情况下将G中的所有值并行插入T,H应该保证G中所有值的不同散列。
G的宽度小于w,其高度小于h,所以
H(x,y) = mod y * w + mod x
会合适。
但是,这个简单的模数散列函数仅适用于uniformly distributed data。
在literature中,建议更适合(至少对我的应用程序而言)散列函数:
H(x,y) = (x*p xor y*q) mod(w*h)
其中p和q是大素数。 但我不确定如何检查网格的所有值是否会映射到不同的哈希值。
有谁知道如何证明(如果是这种情况)或者是否有人知道适合的哈希函数?
非常感谢!