Bir Bloom filtresi , işleme sırasında çeşitli değerlerle karşılaşılmış olup olmadığını etkin bir şekilde takip etmeyi sağlar. Çok sayıda veri öğesi olduğunda, bir Bloom filtresi bir karma tablo üzerinde önemli bir hafıza tasarrufuna neden olabilir. Bir hash tablosuyla paylaştığı bir Bloom filtresinin temel özelliği, bir öğe yeni değilse her zaman "yeni değil" demesidir, ancak bir öğenin yeni değil "olarak işaretleneceği sıfır olmayan bir olasılık vardır. "Yeni olsa bile.
Karşıt davranışı olan bir "Bloom karşıtı filtre" var mı?
Başka bir deyişle: eğer bir öğe yeniyse "yeni" diyen, ancak yeni olmayan bazı öğeler için "yeni" diyebilecek etkili bir veri yapısı var mı?
Önceden görülen tüm öğelerin (örneğin, sıralanmış bir listede) tutulması ilk gereksinimi karşılar ancak çok fazla bellek kullanabilir. Ben rahat ikinci şartı verilen de, gereksiz olduğunu umuyorum.
Daha resmi tedavi yazma tercih edenler için Bloom filtresi düşünürse yenidir, , aksi takdirde ve yazma ise gerçekten yeni ve aksi takdirde.
Sonra ; ; ; , bazı .
I soran: yapan bir fonksiyonu uygulamak etkili bir veri yapısı vardır, bazı , bu şekilde ; ; ; ?
Düzenleme: Bu soru daha önce /programming/635728 ve /cstheory/6596 adresinden /programming/635728 ve /cstheory/6596 olarak soruluyor gibi görünüyor . "ile" yapılabilir, " " değerlerini tersine çevirerek "yapmak" önemsizdir . Bana "doğru" cevabın ne olduğu henüz belli değil. Ne olduğunu net (Ilmari Karonen önerdiği bir gibi) oldukça iyi çalışıyor çeşit bir LRU önbelleğe alma düzeni, uygulanması kolay olmasıdır, ve benim kod çalıştırmasına için geçen sürede% 50'lik bir azalma ile sonuçlandı.