Szukam funkcji skrótu nad zestawami H (.) I relacją R (.,.) Tak, że jeśli A jest zawarte w B, to R (H (A), H (B)). Oczywiście R (.,.) Musi być łatwe do zweryfikowania (czas stały), a H (A) należy obliczyć w czasie liniowym.
Jednym z przykładów H i R jest:
- , gdzie k to stała liczba całkowita, a h (x) funkcja skrótu nad liczbami całkowitymi.
- R (H (A), H (B)) = ((H (A) i H (B)) == H (A))
Czy są jakieś inne dobre przykłady? (dobro jest trudne do zdefiniowania, ale intuicyjnie, jeśli R (H (A), H (B)), to whp A jest uwzględnione w B).
Późniejsza edycja :
- Szukam rodziny funkcji skrótu. Mam wiele zestawów; 3 - 8 elementów w każdym zestawie; 90% z nich ma 3 lub 4 elementy. Przykładowa funkcja skrótu, którą podałem, nie jest zbyt dobrze rozłożona w tym przypadku.
- Liczba bitów H (.) (W moim przykładzie k), które powinny być małe (tj. H (.) Musi mieścić się w liczbie całkowitej lub długiej).
- Jedną fajną właściwością R jest to, że jeśli H (.) Ma k bitów, to R (.,.) Jest prawdziwe dla par (3 ^ k - 2 ^ k) / 4 ^ k, tj. dla bardzo niewielu par.
- Filtry Bloom są szczególnie dobre w przypadku dużych zestawów. Próbowałem użyć BF do tego problemu, ale optymalne wyniki były tylko z jedną funkcją.
(crosspost z stackoverflow , nie otrzymałem wystarczająco dobrej odpowiedzi)