0

32bit unsigned int(0~4294967295) を 10bit unsigned int(0~1023) にハッシュする方法は? 衝突が少なく、高速であることが重要です。都合がよければ C/C++ でサンプルを記述してください。

すみません、いい意味で質問しませんでした。これは私の宿題ではありません。質問の背景が役立つかもしれません。私はサーバーを書いています。このサーバーは、すべてのクライアントから 1024 未満の接続を処理する必要があります。すべてのクライアントは、32 ビットの unsigned int として保存された独立した IP アドレスを持っています。それが質問の始まりです。

4

1 に答える 1

2

特定の条件下 (最大で 2^10 の既知のアイテムをハッシュする必要があるなど) では、衝突が発生しない可能性があります。速度を上げるには、少しの衝突を許容すると役立つ場合があります。詳細はこちら http://en.wikipedia.org/wiki/Perfect_hash_function

GNU 完全ハッシュ関数ジェネレーターhttp://www.gnu.org/software/gperf/

安価でサイズの小さいキー ハッシュは、Pearson Hashing http://en.wikipedia.org/wiki/Pearson_hashingです。

于 2011-03-25T09:14:31.570 に答える