14

(乗法)ハッシュ関数で使用する乗数を選択する際のアドバイス/ルールはありますか。関数は文字列のハッシュ値を計算しています。

4

3 に答える 3

3

セットのサイズに対して互いに素なものを使用したい。そうすれば、ループするときに、試したのと同じ番号になってしまうことはありません。

于 2008-08-19T20:36:07.493 に答える
2

最近、同僚とハッシュ関数について興味深い議論をしました。結論は次のとおりです。

標準言語で利用可能なデフォルトの実装よりも衝突を最小限に抑える優れたハッシュ関数を本当に作成する必要がある場合は、数学の高度な学位が必要です。

カスタムハッシュ関数がアプリケーションのパフォーマンスを著しく向上させるアプリケーションを作成している場合、あなたはGoogleであり、その作業を行うための数学博士号をたくさん持っています。

質問に直接答えないことをお詫びしますが、肝心なのは、String用に独自のハッシュ関数を作成する必要は実際にはないということです。使用している言語は何ですか?「十分に良い」ハッシュコードを計算する簡単な方法があると思います。

于 2008-08-19T20:37:40.703 に答える
1

歴史的に 33 は一般的な選択のようで、かなりうまく機能する傾向があります。その理由は誰にもわかりません。詳しくはこちら

于 2008-08-19T20:33:11.040 に答える