使用模块化哈希函数比较数字?

时间:2017-10-09 00:31:52

标签: algorithm sorting hash hashmap

我想使用哈希表比较每个b位数的b base-b数,以确定哪些是相同的。如果我使用模块化哈希函数,我应该使用h(a)= a mod(b)还是h(a)= mod(b-1)?我不知道如何确定这些是否合适。

1 个答案:

答案 0 :(得分:0)

因此,b ... 0范围内有b^b - 1个数字(例如10范围内的0个数字... {{1 }})。

如果您想保证散列函数是无冲突的,则不能使用9999999999。如果您使用例如mod,然后a mod 1031都会获得1的哈希并发生冲突,这种情况会发生在56465421以下的每个模式中。

因此,您只能降低哈希冲突的概率。并且有机会避免碰撞的最小mod值是10000000000(但很可能,你会遇到碰撞)。如果没有进行适当的概率计算,我会选择类似b的内容,有效地获取两个尾随数字。