私はこの人のインタビューについて「有名な検索会社で」読んでいました。ハッシュ関数の出力をバケットの数よりも少なく制限する必要がありますか?
http://asserttrue.blogspot.com/2009/05/one-of-toughest-job-interview-questions.html
彼は、ハッシュテーブルを実装する彼に導いた質問をしました。彼は次のように言った:
HASH = INITIAL_VALUE;
FOR EACH (CHAR IN WORD) {
HASH *= MAGIC_NUMBER
HASH ^= CHAR
HASH %= BOUNDS
}
RETURN HASH
私は、ハッシュテーブルの配列 長が素数であるべきであり、BOUNDS 数は、テーブルの長さと、テーブル長未満 が、互いに素であると説明しました。
なぜ、バウンド数はバケット数よりも小さくする必要がありますか?テーブルの長さには何がありますか?束縛と相性がないのではないですか?
入力していただきありがとうございます。私は彼が間違っていると感じましたが、私はStackOverflowに、知識が不足しているのは自分自身ではないことを確かめるように頼まなければなりませんでした。 – Unknown
"BOUNDSはバケットの数でなければならず、最後のいくつかのバケットは十分に活用されていません"と、ハッシュテーブルのサイズを変更する必要があるとき、これは特別なトリックかもしれないと思いますか? – Unknown
私は%BOUNDSが完全に不調であることに完全に同意します。与えられた入力のハッシュは、そのハッシュが使われているものの* independent *でなければなりません。あなたはテーブルにキーとしてそれを使用することができます、あなたは弓の中にそれを結ぶことができます、あなたは\ dev \ nullにパイプすることができます。ハッシュ関数は、無益な無知でなければなりません。 – leoger