AがBに含まれている場合、R(H(A)、H(B))になるようなセットH(。)および関係R(。、。)のハッシュ関数を探しています。もちろん、R(。、。)は検証が容易(一定時間)でなければならず、H(A)は線形時間で計算する必要があります。
HとRの一例は次のとおりです。
- 、ここでkは固定整数、h(x)は整数に対するハッシュ関数です。
- R(H(A)、H(B))=((H(A)&H(B))== H(A))
他に良い例はありますか?(良い定義は難しいですが、R(H(A)、H(B))であれば直感的に、whp AがBに含まれます)。
後で編集:
- ハッシュ関数のファミリーを探しています。私はたくさんのセットを持っています。各セットに3〜8個の要素。それらの90%は3つまたは4つの要素を持っています。私が挙げたハッシュ関数の例は、このケースではあまりよく分散されていません。
- H(。)(この例ではk)のビット数は小さくなければなりません(つまり、H(。)は整数または長さに収まる必要があります)。
- Rの1つの優れた特性は、H(。)にkビットがある場合、R(。、。)が(3 ^ k-2 ^ k)/ 4 ^ kペアに対して真であることです。非常に少数のペア。
- ブルームフィルターは、大規模なセットに特に適しています。この問題にBFを使用してみましたが、最適な結果は1つの関数のみでした。
(stackoverflowからのクロスポスト、十分な回答が得られませんでした)