Parallel processing 为并行插入一组值选择哪个哈希函数?
我有一个大小为w*h的哈希表T,每个条目有一个存储桶,用于存储映射到同一哈希的值 现在我想插入一组值G。 G中的每个值都包含一个位置元组(x,y)和一个特定的有效载荷p 哈希函数使用值的位置元组作为参数:H(x,y)。 G本质上是一个网格,每个位置存储一个有效载荷p 为了在不同步的情况下并行地将G中的所有值插入T,H应该保证G中的所有值都有不同的哈希值 G的宽度小于w,高度小于h,因此Parallel processing 为并行插入一组值选择哪个哈希函数?,parallel-processing,hashmap,Parallel Processing,Hashmap,我有一个大小为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 这样比较合适 然而,这个简单的模散列函数仅适用于 在
H(x,y) = mod y * w + mod x
这样比较合适
然而,这个简单的模散列函数仅适用于
在中,提出了一种更适合(至少对于我的应用程序)的哈希函数:
H(x,y) = (x*p xor y*q) mod(w*h)
其中p和q是大素数。
但是我不确定如何检查网格的所有值是否映射到不同的哈希
是否有人知道如何证明这一点(如果是这样的话)或是否有人知道合适的哈希函数
非常感谢 请注意,您必须将哈希表预分配到最大大小。否则,在一个线程上调整大小而在另一个线程上添加将导致您的悲伤。谢谢您的评论,Jim。我的哈希表是固定大小的。调整大小确实是个问题。处理桶溢出也是一个可以使用其他冲突解决策略解决的问题,这些策略必须按顺序执行。