กรองบลูมทำให้มันเป็นไปได้อย่างมีประสิทธิภาพติดตามว่าค่าต่างๆได้รับการได้พบระหว่างการประมวลผล เมื่อมีรายการข้อมูลจำนวนมากตัวกรอง Bloom จะส่งผลให้มีการบันทึกหน่วยความจำที่สำคัญบนตารางแฮช คุณสมบัติหลักของตัวกรอง Bloom ซึ่งใช้ร่วมกับตารางแฮชคือมันมักจะพูดว่า "ไม่ใหม่" หากรายการนั้นไม่ใหม่ แต่มีความน่าจะเป็นที่ไม่เป็นศูนย์ที่รายการจะถูกตั้งค่าสถานะเป็น "ไม่ใหม่ "แม้ว่ามันจะเป็นของใหม่
มี "ฟิลเตอร์ต่อต้านบลูม" ซึ่งมีพฤติกรรมตรงกันข้ามหรือไม่?
กล่าวอีกนัยหนึ่ง: มีโครงสร้างข้อมูลที่มีประสิทธิภาพซึ่งระบุว่า "ใหม่" หากรายการนั้นเป็นของใหม่ แต่อาจจะพูดว่า "ใหม่" สำหรับบางรายการที่ไม่ใช่ของใหม่
การเก็บรายการที่เห็นก่อนหน้านี้ทั้งหมด (ตัวอย่างเช่นในรายการลิงก์ที่เรียงลำดับ) เป็นไปตามข้อกำหนดแรก แต่อาจใช้หน่วยความจำมาก ฉันหวังว่ามันจะไม่จำเป็นเช่นกันเนื่องจากข้อกำหนดที่สองที่ผ่อนคลาย
สำหรับผู้ที่ต้องการการรักษาที่เป็นทางการมากขึ้นให้เขียนถ้าตัวกรอง Bloom คิดว่าเป็นของใหม่,มิฉะนั้นและเขียนถ้าเป็นจริงและมิฉะนั้นx b ( x ) = 0 n ( x ) = 1 x n ( x ) = 0
จากนั้น ; ; ; สำหรับบาง<1P r [ b ( x ) = 0 | n ( x ) = 1 ] = α P r [ b ( x ) = 1 | n ( x ) = 0 ] = 0 P r [ b0 < α < 1
ฉันถามว่า: มีโครงสร้างข้อมูลที่มีประสิทธิภาพหรือไม่โดยใช้ฟังก์ชั่นกับเช่น ; ; ; ? 0 < β < 1 P r [ b ′ ( x ) = 0 | n ( x ) = 0 ] = β P r [ b ′ ( x ) = 0 | n ( x ) = 1 ] = 0 P r [ b ′ ( x ) = 1 | n ( xP r [ b ′ ( x ) = 1 | n ( x ) = 1 ] = 1
แก้ไข:ดูเหมือนว่าคำถามนี้ถูกถามมาก่อนใน StackExchange เช่น/programming/635728และ/cstheory/6596พร้อมคำตอบที่หลากหลายจาก "ไม่สามารถเป็นได้ ทำ "ถึง" สามารถทำได้ในราคา "เป็น" มันเป็นเรื่องเล็กน้อยที่จะทำโดยการกลับค่าของ " ยังไม่ชัดเจนสำหรับฉันคำตอบที่ถูกต้องคืออะไร สิ่งที่เป็นที่ชัดเจนว่าโครงการอาร์แคชของบางประเภท (เช่นหนึ่งที่แนะนำโดย Ilmari Karonen) ทำงานค่อนข้างดีเป็นเรื่องง่ายที่จะใช้และผลในการลด 50% ในเวลาที่จะเรียกใช้รหัสของฉัน