为双散列哈希表大小选择的最佳素数是多少?
旁边信息
我的想法:
谢谢,还有任何其他问题
答案 0 :(得分:2)
选择高的twin prime个数字,i。即当p
和p - 2
为素数时,选择p
作为双哈希容量,因为hash_code % (size - 2)
是双哈希算法的良好辅助步骤函数,模数素数更多一些“强大”而不是模数组合数(如果size - 2
是复合的)。
对于小尺寸(大约1000左右)选择所有素数,除了低对子之外,因为双数对在自然数的开头是太少了规模,以获得良好的尺寸可预测性。
添加5和11的大小(虽然它们在双素数中很低),以更好地处理非常小的表格大小。
排除在乘法散列函数中经常使用的数字,在Java中它是31
散列函数中使用的String
,我不知道Python。
以上所有内容都在这个Java runnable中仔细编码,有很多预先生成的表格大小(试图在相邻表格大小之间保持0.005最大差异):
P上。 S.我个人认为,双重散列从来不是最佳的开放式寻址风格,因为模数操作在现代CPU中不成比例地昂贵。考虑使用QHash。
答案 1 :(得分:1)
不确定我是否完全理解你的问题,但这里是possible solution from the java world。我理解为什么你一般需要素数,如果你必须从头开始写一个哈希函数,但不确定你是否需要研究它们,如果一个好的"使用这样的哈希函数。
希望这有帮助!