Diberikan filter mekar ukuran N-bit dan fungsi hash K, di mana M-bit (di mana M <= N) dari filter diatur.
Apakah mungkin untuk memperkirakan jumlah elemen yang dimasukkan ke filter bloom?
Contoh sederhana
Saya telah merenungkan contoh berikut, dengan asumsi BF 100-bit dan 5 fungsi hash di mana 10-bit diatur ...
Skenario kasus terbaik: Dengan asumsi fungsi hash benar-benar sempurna dan secara unik memetakan sedikit untuk beberapa nilai X, kemudian diberikan 10-bit yang telah ditetapkan kita dapat mengatakan bahwa hanya ada 2 elemen yang dimasukkan ke dalam BF
Skenario kasus terburuk: Dengan asumsi fungsi hash buruk dan konsisten memetakan ke bit yang sama (namun unik satu sama lain), maka kita dapat mengatakan 10 elemen telah dimasukkan ke dalam BF
Kisaran tampaknya [2,10] di mana sekitar dalam kisaran ini mungkin ditentukan oleh probabilitas positif-palsu dari filter - Saya terjebak pada titik ini.
sumber
Jawaban:
Iya. Dari Wikipedia :
Jika Anda telah memasukkan elemen ke dalam filter ukuran menggunakan fungsi hash , probabilitas bahwa bit tertentu masih 0 adalahn ksaya n k
Anda dapat mengukur probabilitas ini sebagai proporsi 0 bit dalam filter Anda. Memecahkan untuk berikansaya
Saya telah menggunakan ini dalam praktiknya, dan selama filter Anda tidak melebihi kapasitasnya, kesalahan umumnya kurang dari 0,1% untuk filter hingga jutaan bit. Ketika filter melebihi kapasitasnya, kesalahan tentu saja naik.
sumber
Jika Anda berasumsi bahwa untuk setiap fungsi hash untuk setiap objek, bit diatur secara seragam secara acak, dan Anda memiliki jumlah jumlah bit yang telah ditetapkan, Anda harus dapat mengikat probabilitas bahwa jumlah objek yang dimasukkan adalah dalam kisaran tertentu, mungkin menggunakan formulasi bola dan tempat sampah. Setiap bit adalah sebuah nampan, dan itu diatur jika memiliki setidaknya 1 bola di dalamnya, setiap objek yang dimasukkan melempar bola , di mana k adalah jumlah fungsi hash, dan n k adalah jumlah bola yang dilemparkan setelah n objek dimasukkan . Mengingat bahwa b bins memiliki setidaknya 1 bola di dalamnya, berapakah probabilitas bahwa setidaknya t bola dilemparkan? Saya pikir di sini Anda dapat menggunakan fakta bahwa:k k nk n b t
Tetapi masalah dengan rumusan itu adalah bahwa saya tidak melihat cara langsung untuk menghitung P ( t ) atau P ( b ) , tetapi menemukan nilai t yang memaksimalkan probabilitas itu seharusnya tidak terlalu sulit.
sumber
Pertanyaan yang menarik, mari kita lihat beberapa kasus tertentu.
Saya pikir kita bisa menggeneralisasi ini sekarang.
sumber
n choose k
Misalkan hash didistribusikan secara seragam.
Menulis ulang:
sumber
Ide kuncinya adalah memperkirakan perkiraan jumlah bit nol.
Maka harapan angka nol bit harus:
sumber
Probabilitas bahwa bit tertentu adalah 1 setelah n penyisipan adalah: P = 1 - (1 - 1 / m) ^ (kn)
Biarkan X_i menjadi variabel acak diskrit yaitu 1 jika bit pada posisi ke-1 adalah 1 dan 0 sebaliknya. Biarkan X = X_1 + X_2 + .... + X_m. Kemudian, E [X] = m * P.
Jika jumlah total set bit adalah S, maka: E [X] = S yang menyiratkan m * P = S. Ini bisa diselesaikan untuk n.
sumber