Wikipedia nói:Có bao nhiêu hàm băm mà bộ lọc nở của tôi cần?
Một bộ lọc Bloom rỗng là một mảng bit của m bit, tất cả các thiết lập để 0. Ngoài ra còn phải k hàm băm khác nhau xác định, mỗi trong số đó bản đồ hoặc băm một số yếu tố thiết lập để một trong những các vị trí mảng m với phân bố ngẫu nhiên đồng đều.
Tôi đã đọc bài viết, nhưng điều tôi không hiểu là cách xác định k. Nó có phải là một chức năng của kích thước bảng?
Ngoài ra, trong bảng băm tôi đã viết, tôi đã sử dụng một thuật toán đơn giản nhưng hiệu quả để tự động tăng kích thước của băm. Về cơ bản, nếu bao giờ hơn 50% các thùng trong bảng đã được lấp đầy, tôi sẽ tăng gấp đôi kích thước của bảng. Tôi nghi ngờ bạn vẫn có thể muốn làm điều này với một bộ lọc nở để giảm dương tính giả. Chính xác?
hoàn hảo. Cảm ơn bạn –
Lưu ý rằng do làm tròn/cắt ngắn sự khác biệt và/hoặc độ chính xác của hàm logarit, bạn có thể không nhận được cùng một số chính xác cho ví dụ nếu bạn chạy các phương trình đó thông qua ngôn ngữ bạn chọn. Đối với tôi, 'm = 2075674' và' k = 6.64'. Dù bằng cách nào, làm tròn cả hai giá trị thành số nguyên gần nhất và tỷ lệ dương tính giả của bạn sẽ đủ gần. Sẽ rất thú vị khi có phương trình tính lại giá trị * thực tế * của 'p', sử dụng các giá trị' m' và 'k' đã tính/làm tròn của bạn. Một lần nữa, mặc dù không cần phải lo lắng về việc có các giá trị chính xác; ballpark là đủ tốt. –
Tìm phương trình tính giá trị thực của 'p' được tính cho' m' và 'k' - được so sánh để xem cách làm tròn có thể ảnh hưởng đến tỷ lệ dương tính giả chấp nhận được của bạn. 'e' là hằng số toán học, không phải là giá trị động. 'p = e^(- (m/n) * (ln (2)^2))' - nhờ http://stackoverflow.com/a/24071581/2609094 –