1

次の要件を悪用するハッシュ関数を探しています。

  • N個の異なる整数値がハッシュテーブルに保存されます
  • 任意の時点で、ハッシュテーブルに存在する値が M 個を超えることはありません
  • ハッシュテーブルはいくつかのクエリに対して静的なままです (つまり、ある時点でハッシュテーブル全体が初期化され、次の呼び出しはハッシュテーブルからのみ読み取られます)
  • 可能な最大のキー値 K は、ハッシュテーブルの初期化時に既知です (K >> N)
  • クエリされたすべてのキーと値のペアがハッシュテーブルに存在する

これまでのところ、次のようなハッシュ関数を使用しています: h(k) = 7 * k % M with M = PRIME_CLOSE_TO(7*N)

7はやや恣意的です。

これを改善する方法について何か提案はありますか?

4

1 に答える 1

1

これは出発点です: http://en.wikipedia.org/wiki/Perfect_hash_function

実際には、通常のハッシュ関数で問題ありません。しかし、何らかの理由で最小の完全ハッシュが必要な場合は、次のような完全ハッシュを行うライブラリを調べることができます: CMPH - C 最小完全ハッシュ ライブラリ

于 2013-10-26T05:37:50.120 に答える