2016-11-03 13 views
7

.Bloom filtresi ters mi? mümkün? Bir röportajda soru itibaren

"bir sözcük saklı bir listede olup olmadığını belirleme liste belleğe uymuyor yok disk erişimi, bellek erişimi sadece Hiçbir yanlış pozitif izin sahte negatifler aramalar için, izin verdi.. tamam."

Çiçek filtreleri tam tersini yapar: Yanlış pozitif değerlere izin verilir, yanlış negatiflere izin verilmez.

Düşüncelerim: "Yanlış pozitif olmayan" gereklilikleri ihlal eden çarpışmalara sahip olabileceğimiz için karma işlev kullanamıyoruz. Bir sayma çiçek filtresi kullanılsa bile, bir çarpışma hala yanlış bir pozitifliğe neden olur. I.E. iki dizgiyle aynı karıncalar oluşur, bu yüzden birincisi "takılı" olduğunda, ve ikincisine bir arama yaparsak, o olmasa da, orada gösterecektir.

Yanlış pozitiflere sahip olamadığımız için cevap biraz dizidir. Bu doğru mu?

+0

açık zincirli hashing ne olacak? Bunu kullanabilmemiz gerektiğini düşünüyorum. – NeoR

+1

Tam olarak sorulan soruya göre, listenin bir kısmını sıralanmış bir dizide saklamak sadece gereksinimleri karşılar :) – twotwotwo

+3

Muhtemel kopyası [Yanlış negatifler veren ancak yanlış pozitif olmayan herhangi bir olasılık veri yapısı var mı?] (Http: // stackoverflow.com/questions/13263220/is-there-any-probabilistic-data-structure-that-gives-false-negatives-but-not-fal) – mrmcgreg

cevap

1

Bir LRU önbelleğinin yapacağını düşünüyorum. Listede bir kelime olup olmadığını sorduğumuzdan beri, ya "kesinlikle evet" ya da "büyük olasılıkla" istemiyoruz ya da başka türlü söylenmiyor, yanlış pozitiflere izin vermiyoruz, fakat yanlış negatifler tamam; o zaman onun (muhtemelen değil) hatta "muhtemelen listede değil" diyebilirim ve eğer kelime LRU önbelleğinde olsaydı, o zaman her zaman "kesinlikle evet" cevabını verir