クヌースはどのようにしてAを導き出したのですか?


9

キーを自然数として解釈する場合、次の式を使用できます。

h(k)=m(kAmod1)

私が理解できないのは、Aの値をどのように選択するかです。

0<A<1

Knuthによると、最適値は次のとおりです。

A(51)/2=0.6180339887...

だから私の質問は、どのようにしてKnuthがこれに到達し、どのようにして特定のデータの最適値を計算できるのかということです。


3
私は、A=1+ϕ ...と、実際に "Knuthが黄金比による乗算を繰り返すと、ハッシュ空間のギャップが最小になると主張しているため、一緒に組み合わせるための良い選択だと主張しています1つを形成する複数のキー。」
Ahmed Masud

1
私が正しく思い出せば、演習の1つでどのような意味で説明されていますかkAmod1は単位間隔でうまく分散されています。今はチェックする本がありません。
Radu GRIGore、2012年

1
@RaduGRIGoreこれは、が任意の非合理的なに対してを法として一様に分布するというよく知られた定理です(Nivenの "Irrational Numbers"の定理6.3)。おそらくはある意味で最良の選択です。A,2A,1AA=1+ϕ
2012年

2
「より最適」というものはありません。「もっと最高」と言っているようなものです。最適値かそうでないかのどちらかです。
Jeffε

2
この値は自然のプロセスでも使用されることを指摘する価値があります。具体的には、ゴールデンアングルは、多くの植物における花びら、小花などの配置を決定します。円の周りに点を配置すると、この角度による回転が繰り返し適用され、点は(一定の係数内で)等間隔になります。
James King

回答:


19

Art of Computer Programmingのセクション6.4の演習9を参照してください。

が最大ギャップを分割するため、非合理的なは機能します(表記は場合は)。A{kA}{A},{2A},,{(k1)A}{x}xmod1

ただし、または場合は、特別なプロパティがあります。これらの値は、新しく作成された2つのギャップのどちらも、その他。A=ϕ1A=ϕ2


7
また、最小ギャップのサイズは可能な限り大きくなります。
Jeffε
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.