Как Кнут узнал А?


9

При интерпретации ключей как натуральных чисел мы можем использовать следующую формулу.

h(k)=m(kAmod1)

Что мне трудно понять, так это то, как мы выбираем значение A, где:

0<A<1

Согласно Кнуту оптимальное значение:

A(51)/2=0.6180339887...

Итак, мой вопрос: как Кнут пришел к этому и как я мог рассчитать оптимальное значение для моих конкретных данных?


3
Мне просто интересно, что A=1+ϕ... и поиск в Google, который фактически привел ссылку на «Кнут утверждает, что повторное умножение на золотое сечение минимизирует разрывы в хэш-пространстве, и, таким образом, это хороший выбор для объединения нескольких ключей в один».
Ахмед Масуд

1
Если я правильно помню, это объяснялось в одном из упражнений, в каком смысле хорошо распределены в единичном интервале. У меня сейчас нет книги, чтобы проверить. kAmod1
Раду GRIGore

1
@RaduGRIG. Это хорошо известная теорема о том что равномерно распределены по модулю для любого иррационального (теорема 6.3 «Нерациональных чисел» Нивена). Возможно, - лучший выбор в некотором смысле. A,2A,1AA=1+ϕ
didest

2
Нет такой вещи, как «более оптимальный»; это все равно что сказать "лучше". Либо это оптимальное значение, либо нет.
Джефф

2
Стоит отметить, что это значение также используется естественными процессами. В частности, золотой угол определяет расположение лепестков, цветочков и т. Д. На многих растениях. Поворот на этот угол может применяться несколько раз при размещении точек вокруг круга, и точки будут равномерно распределены (с постоянным коэффициентом).
Джеймс Кинг

Ответы:


19

См. Упражнение 9 раздела 6.4 «Искусство компьютерного программирования» .

Любой иррациональный будет работать, потому что разбивает наибольший разрыв (я использую обозначение для ).A{kA}{A},{2A},,{(k1)A}{x}xmod1

Но если или , у него есть специальное свойство: это единственные значения, для которых ни один из двух вновь созданных пробелов не более чем в два раза длиннее, чем Другой.A=ϕ1A=ϕ2


7
Кроме того, размер наименьшего зазора максимально велик.
Джеффс
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.