我正在学习Double Hash,我很难理解它是如何工作的。我做了一个例子,但我不知道这是对还是错。如果有人可以帮助我会很棒。 这是输入:
m = 13
k = {5,14,29,25,17,21,18,32,20,9,15,27}
h1(k)= k mod 13
h2(k)= 1 +(k mod 11)
答案 0 :(得分:3)
只要m
为素数就行。
否则h2(x)
可以评估为m
m = 36
,这可能会导致算法失败,因为还有更多项目的空间。
例如:
h1(x) = 1
h2(x) = 30
table[1]
table[31]
,table[19]
,table[13]
,table[7]
,table[1]
全部使用;然后,将要检查的下一个广告位再次为h2(x)
。如果m
是m
的相对素数,则循环将始终访问所有时段,然后返回起始点。如果{{1}}是素数,则所有数字都是相对素数。