Прав ли я с этим двойным хэшированием?

Я изучаю 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 простое, все числа будут относительно простыми.

Другие вопросы по тегам