Saya mencari fungsi hash atas set H (.) Dan relasi R (.,.) Sehingga jika A dimasukkan dalam B maka R (H (A), H (B)). Tentu saja, R (.,.) Harus mudah diverifikasi (waktu konstan), dan H (A) harus dihitung dalam waktu linier.
Salah satu contoh H dan R adalah:
- , di mana k adalah integer tetap dan h (x) fungsi hash atas integer.
- R (H (A), H (B)) = ((H (A) & H (B)) == H (A))
Apakah ada contoh bagus lainnya? (Baik sulit untuk didefinisikan tetapi secara intuitif jika R (H (A), H (B)) maka whp A termasuk dalam B).
Sunting nanti :
- Saya mencari keluarga fungsi hash. Saya punya banyak set; 3 - 8 elemen di setiap set; 90% dari mereka memiliki 3 atau 4 elemen. Contoh fungsi hash yang saya berikan tidak terdistribusi dengan baik untuk kasus ini.
- Jumlah bit H (.) (Dalam contoh saya, k) yang harus kecil (mis. H (.) Harus sesuai dengan bilangan bulat atau panjang).
- Satu sifat bagus dari R adalah bahwa jika H (.) Memiliki k bit maka R (.,.) Berlaku untuk (3 ^ k - 2 ^ k) / 4 ^ k pasangan, yaitu. untuk pasangan yang sangat sedikit.
- Filter Bloom sangat baik untuk set besar. Saya mencoba menggunakan BF untuk masalah ini, tetapi hasil optimal hanya dengan satu fungsi.
(crosspost dari stackoverflow , saya tidak menerima jawaban yang cukup bagus)