Cormen の各レベルでユニバーサル ハッシュを使用して、完璧なハッシュ手法を実装しようとしています。具体的には、圧縮方法を使用します(少なくとも、ここに問題があると思います)。
私は文字列に取り組んでおり、短い文字列 (8 から 150 の間) だと思います。そのために、64 ビット キーを使用して、Murmur3/2、xxhash、FNV1、Cityhash、および Spookyhash を使用した一連のハッシュ関数があります (これらのspookyhash のようなハッシュ関数では下位 64 ビットを取得しています)、問題は、9 つのバケットに 3 つの一意の文字列 (10 文字のうちの 2 つと 11 文字のうちの 1 つ) しかない衝突が存在することです。
そのためにコーメンのハッシュ圧縮方法を使用しています。
h_ab(k) = ((ak+b)mod p) mod m
a = 3、p = 4294967291 (最大の32 ビット素数)、b = 5およびm = 9 (m_j は n_j の 2 乗であるため) を使用します。「k」として、ハッシュ関数によって返されたハッシュ値を使用しています(つぶやきなど)。
たとえば、murmur2 (64 ビット バージョン) のようなハッシュ関数を使用している場合、p番号は最大の 64 素数である必要がありますか? そのようにして、つぶやきが返す可能性のあるすべてのハッシュをカバーしていますね。
他にどのハッシュ圧縮手法 (除算以外) が存在し、推奨しますか?
参考文献、ヒント、本、論文、ヘルプは大歓迎です。ばかげた質問で申し訳ありませんが、私はハッシュ関数とハッシュテーブルの初心者です。
前もって感謝します。