まず、2つの整数Nとを定義します。KここでN >= K、両方ともコンパイル時に認識されます。例:N = 8およびK = 3。
次に、整数のセットを定義し[0, N)(または[1, N]、それによって答えが簡単になる場合)、それを呼び出しますS。例えば:{0, 1, 2, 3, 4, 5, 6, 7}
SwithK要素のサブセットの数は式で与えられC(N, K)ます。例
私の問題はこれです:それらのサブセットのための完全な最小ハッシュを作成します。サンプルのハッシュテーブルのサイズはC(8, 3)またはになります56。
順序は気にせず、ハッシュテーブルに56個のエントリがあり、K整数のセットからハッシュをすばやく決定できることだけです。可逆性も気にしません。
ハッシュの例:hash({5, 2, 3}) = 42。(42という数字は重要ではありませんが、少なくともここでは重要ではありません)
Nおよびの任意の値で機能するこのための一般的なアルゴリズムはありKますか?私はグーグルを検索することによって、または私自身の素朴な努力によってそれを見つけることができませんでした。