При интерпретации ключей как натуральных чисел мы можем использовать следующую формулу.
Что мне трудно понять, так это то, как мы выбираем значение A, где:
Согласно Кнуту оптимальное значение:
Итак, мой вопрос: как Кнут пришел к этому и как я мог рассчитать оптимальное значение для моих конкретных данных?
hash-function
ChaosPandion
источник
источник
Ответы:
См. Упражнение 9 раздела 6.4 «Искусство компьютерного программирования» .
Любой иррациональный будет работать, потому что разбивает наибольший разрыв (я использую обозначение для ).A {kA} {A},{2A},…,{(k−1)A} {x} xmod1
Но если или , у него есть специальное свойство: это единственные значения, для которых ни один из двух вновь созданных пробелов не более чем в два раза длиннее, чем Другой.A=ϕ−1 A=ϕ−2
источник