我已经发现大量的双哈希示例所有示例都告诉我,当你第二次哈希时你必须使用%5。
我的问题是为什么5?这是一个你总是使用5的协议,或者它是如何工作的?
一个例子:https://www.cs.washington.edu/education/courses/326/00wi/handouts/lecture16/sld025.htm
答案 0 :(得分:2)
没有。第二个散列函数可以是你想要的任何东西。理想情况下,它应该有相同的机会到达散列数组的每个单元格。
我的猜测是你没有查找来自不同来源的双重哈希的任何示例。您使用的来源决定多次使用% 5
以简化。
答案 1 :(得分:2)
在具有N个位置的哈希表中,想法是使用两个独立的哈希函数h1(key)和h2(key)然后使用探测序列
h1%N,(h1 + h2)%N,(h1 + 2 * h2)%N,(h1 + 3 * h2)%N,......
你想确保h2和N的最大公约数是1,否则你不能到达表中的所有位置。
有几种方案可以实现,例如:
答案 2 :(得分:1)
你并不总是使用5,你甚至也不总是使用%。
在你的例子中。 %7和%5是您的散列函数。然而,实际上,它们可能是完全不同的功能。
此示例使用%5,因为它对于示例来说足够简单。唯一真正的要求是这两个函数是独立的。