Прав ли я с этим двойным хэшированием?
Я изучаю Double Hash, и мне трудно понять, как это работает. Я сделал пример, но я не знаю, правильно это или неправильно. Было бы здорово, если бы кто-то мог мне помочь. Это вход:
м = 13
k = {5, 14, 29, 25, 17, 21, 18, 32, 20, 9, 15, 27}
h1 (k) = k мод 13
h2 (k) = 1 + (k mod 11)
1 ответ
Это будет работать до тех пор, пока 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
простое, все числа будут относительно простыми.