Como Knuth obteve A?

9

Ao interpretar teclas como números naturais, podemos usar a seguinte fórmula.

h(k)=m(kAmod1)

O que estou tendo problemas para entender é como escolhemos o valor de A onde:

0<A<1

De acordo com Knuth, um valor ideal é:

A(51)/2=0.6180339887...

Portanto, minha pergunta é como Knuth chegou a isso e como calcular um valor ideal para meus dados específicos?

ChaosPandion
fonte
3
Apenas acho interessante que ... e Google que realmente trouxeram uma referência a "Knuth argumenta que a multiplicação repetida pela proporção áurea minimizará as lacunas no espaço de hash e, portanto, é uma boa opção para combinar várias chaves para formar uma ". A=1+ϕ
Ahmed Masud
11
Se bem me lembro, é explicado em um dos exercícios em que sentido está bem distribuído no intervalo da unidade. Eu não tenho o livro agora para verificar, no entanto. kAmod1
Radu Grigore
11
@RaduGRIGore, é um teorema bem conhecido que é um módulo uniformemente distribuído para qualquer irracional (teorema 6.3 dos "Números irracionais" de Niven). Talvez seja a melhor escolha em algum sentido. A,2A,1AA=1+ϕ
didest
2
Não existe algo como "mais ideal"; é como dizer "mais melhor". Ou é o valor ideal ou não é.
Jeffε
2
Vale ressaltar que esse valor também é usado por processos naturais. Especificamente, o ângulo de ouro governa a colocação de pétalas, florzinhas etc. em muitas plantas. Uma rotação por esse ângulo pode ser aplicada repetidamente ao colocar pontos em torno de um círculo e os pontos serão espaçados uniformemente (dentro de um fator constante).
James King

Respostas:

19

Veja o exercício 9 da seção 6.4 de A arte da programação de computadores .

Qualquer irracional funcionaria porque rompe a maior lacuna de (eu uso a notação para ).A{kA}{A},{2A},,{(k1)A}{x}xmod1

Mas se ou , ela possui uma propriedade especial: esses são os únicos valores para os quais nenhuma das duas lacunas recém-criadas é mais do que o dobro do tempo. de outros.A=ϕ1A=ϕ2

didest
fonte
7
Além disso, o tamanho do menor espaço é o maior possível.
Jeffε