事前定義されたキーが12か月である配列を検索するための完全なハッシュテーブルを作成したいとします。したがって、
hash("January")==0
hash("December")==11
月の名前をgperfで実行し、優れたハッシュ関数を取得しましたが、16個のバケット(または範囲は16個)を提供しているようです。
#define MIN_HASH_VALUE 3
#define MAX_HASH_VALUE 18
/* maximum key range = 16, duplicates = 0 */
生成されたgperfコードを見ると、そのハッシュ関数コードは、256サイズのテーブルからlenとcharの値のルックアップを単純に返します。どういうわけか、私の頭の中で私は派手な見た目の機能を想像しました... :)
正確に12個のバケットが必要な場合(つまり、未使用のバケットをスキップしたくない場合)はどうなりますか?このような小さなセットの場合、それは実際には問題ではありませんが、1000個の事前定義されたキーがあり、正確に1000個のバケットを続けて必要とする場合はどうでしょうか。
これを行うための決定論的な方法を見つけることができますか?