Pemeriksaan keanggotaan elemen pada himpunan dengan bloom filter

PEMERIKSAAN KEANGGOTAAN ELEMEN PADA
HIMPUNAN DENGAN BLOOM FILTER

ADI RISWANTO

DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2015

PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA

Dengan ini saya menyatakan bahwa skripsi berjudul Pemeriksaan
Keanggotaan Elemen pada Himpunan dengan Bloom Filter adalah benar karya saya
dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun
kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip dari
karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah disebutkan
dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir skripsi ini.
Dengan ini saya melimpahkan hak cipta dari karya ilmiah saya kepada Institut

Pertanian Bogor.
Bogor, Januari 2015
Adi Riswanto
NIM G54100062

ABSTRAK
ADI RISWANTO. Pemeriksaan Keanggotaan Elemen pada Himpunan dengan
Bloom Filter. Dibimbing oleh FAHREN BUKHARI dan ELIS KHATIZAH.
Pemeriksaan keanggotaan suatu elemen sering kali dilakukan pada beberapa
aplikasi. Waktu yang diharapkan untuk melakukan pemeriksaan tersebut adalah
waktu minimal dengan kesalahan pemeriksaan minimal. Sebagai contoh, pada web
browser Google Chrome yang membutuhkan waktu yang singkat untuk melakukan
pemeriksaan terhadap URL jahat. Algoritma yang umum digunakan untuk
melakukan pemeriksaan keanggotaan tersebut adalah algoritma Sequential Search
dan Binary Search. Namun kedua algoritma tersebut masih kurang efisien.
Algoritma yang ditawarkan menjadi solusi adalah Bloom Filter, yaitu suatu struktur
data yang mampu melakukan pemeriksaan keanggotaan dengan efisien, walaupun
menghasilkan kesalahan dalam hasil pemeriksaan tersebut. Kesalahan pemeriksaan
yang terjadi salah satunya adalah false positive; yakni kesalahan penentuan suatu
elemen yang bukan anggota suatu himpunan dianggap sebagai anggota himpunan.

Karya ilmiah ini bertujuan untuk menjelaskan cara kerja algoritma Bloom Filter
pada pemeriksaan keanggotaan elemen dalam himpunan, menghitung peluang
terjadinya false positive, dan meminimalkan peluang tersebut.
Kata kunci: algoritma, bloom filter, false positive, himpunan

ABSTRACT
ADI RISWANTO. Examination of Membership Elements in a Set using The Bloom
Filter Method. Supervised by FAHREN BUKHARI and ELIS KHATIZAH.
Examination of membership elements is often executed on several
applications. Expected time to perform such examination is a minimum time with
minimal errors. For example, the Google Chrome web browser takes a short time to
do an examination of malicious URLs. The common algorithms used to
perform examination of the membership are called the Sequential Search and
Binary Search. However, the algorithms are considered inefficient. The Bloom
Filter is considered offering the solution. It is a data structure which is able to do
examination of membership within short time, but producing errors. One of the
errors is assosiated with a false positive. A claim that an element to be part of the
set when it was not the member. This paper aims to explain the procedure of the
Bloom Filter algorithm on the membership examination of elements in a set. Also,
this work is intended calculate the probability of false positives, and to minimize

the probability.
Key words: algorithm, bloom filter, false positive, set

PEMERIKSAAN KEANGGOTAAN ELEMEN PADA
HIMPUNAN DENGAN BLOOM FILTER

ADI RISWANTO

Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Sains
pada
Departemen Matematika

DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2015


Judul Skripsi : Pemeriksaan Keanggotaan Elemen pada Himpunan dengan Bloom
Filter
Nama
: Adi Riswanto
NIM
: G54100062

Disetujui oleh

Dr Ir Fahren Bukhari, MSc
Pembimbing I

Elis Khatizah, MSi
Pembimbing II

Diketahui oleh

Dr Toni Bakhtiar, MSc
Ketua Departemen


Tanggal Lulus:

PRAKATA

Puji dan syukur penulis panjatkan kepada Allah SWT atas segala nikmat,
karunia, dan pertolongan-Nya sehingga penulisan karya ilmiah ini berhasil
diselesaikan. Shalawat dan salam semoga senantiasa tercurahkan kepada Nabi
Muhammad SAW. Judul dari karya ilmiah ini adalah Pemeriksaan Keanggotaan
Elemen pada Himpunan dengan Bloom Filter. Terima kasih penulis ucapkan
kepada:
1 Bapak Dr Ir Fahren Bukhari, MSc dan Ibu Elis Khatizah, MSi selaku
pembimbing pertama dan pembimbing kedua yang telah sabar membimbing
penulis dalam menyusun karya ilmiah ini,
2 Bapak Muhammad Ilyas, MSi MSc selaku dosen penguji yang telah banyak
memberi saran dalam penulisan karya ilmiah ini,
3 Bapak, ibu, kakak, adik, dan seluruh keluarga atas doa dan kasih sayangnya.
4 Delis, Lilis, Rendi, Dadan, Kamil, Eric, Fikri, Tri, Safiih, Imad, Irfan C, Eka,
Nyoman, Bella, Mira, Leny, dan semua teman-teman Matematika 47 atas
segala dukungan, bantuan, dan ketulusan hati yang telah diberikan,
5 Satelit Gumatika dan seluruh pengurus Gumatika,

6 Vallian, Ade, Desi M, Fitri, Antik, Rodua, Utet, Manova, dan keluarga
mahasiswa Pangandaran yang lain atas doa dan dukungannya,
7 H. Kariman dan H. Rosyid beserta keluarga atas rasa kekeluargaan yang telah
diberikan,
8 Semua dosen dan staf Departemen Matematika serta pihak lain yang telah
secara langsung atau tidak langsung membantu dalam penulisan karya ilmiah
ini.
Penulis menyadari bahwa dalam penulisan skripsi ini masih jauh dari
kesempurnaan. Kritik, saran, dan masukan yang bersifat membangun sangat penulis
harapkan demi penyempurnaan di masa mendatang.
Semoga karya ilmiah ini bermanfaat.

Bogor, Januari 2015
Adi Riswanto

DAFTAR ISI

DAFTAR GAMBAR

vi


PENDAHULUAN

1

Latar Belakang

1

Tujuan

2

TINJAUAN PUSTAKA

2

Hashing

2


Fungsi Hash

2

Sequential Search

4

Binary Search

5

BLOOM FILTER

5

Standard Bloom Filter

5


False Positive

8

Peminimalan Peluang False Positive

9

Counting Bloom Filter

11

Counter untuk Counting Bloom Filter

12

SIMPULAN DAN SARAN

13


Simpulan

13

Saran

14

DAFTAR PUSTAKA

14

RIWAYAT HIDUP

15

DAFTAR GAMBAR

1 Contoh perfect hashing


3

2 Ilustrasi tabel array

7

3 Ilustrasi penyisipan elemen pada Bloom Filter

7

4 Item false positive

8

5 Nilai peluang false positive

11

1

PENDAHULUAN
Latar Belakang

Suatu algoritma pada aplikasi dituntut untuk tetap bersifat skalabilitas, artinya
algoritma tersebut tetap memiliki performa/kinerja yang tinggi walau jumlah data
ditambah. Namun pada kenyataannya jika banyaknya data ditambah maka kinerja
suatu algoritma akan menurun. Hal ini dapat terjadi karena operasi-operasi yang
terjadi dalam algoritma tersebut, seperti operasi penambahan data atau operasi
pemeriksaan data. Operasi pemeriksaan data dapat menghabiskan waktu yang lama
jika jumlah data sangat banyak. Bagi aplikasi seperti web browser Google Chrome
yang perlu waktu singkat untuk melakukan pemeriksaan URL jahat, pencocokan
secara cepat dalam pemeriksaan keanggotaan pada sebuah data merupakan
kebutuhan yang penting.
Struktur data yang umum digunakan adalah Binary Search (pohon pencarian
biner). Namun struktur data tersebut memerlukan waktu yang cukup lama untuk
menambahkan elemen maupun untuk memeriksa apakah suatu elemen berada
dalam himpunannya atau tidak (Guo et al 2010). Meski demikian, pohon pencarian
biner masih lebih efisien dibandingkan dengan algoritma Sequential Search
(pencarian berurut) yang perlu melakukakan pemeriksaan pada setiap elemen tabel
array. Algoritma pohon pencarian biner ini bekerja dengan prinsip divide and
conquer, yaitu sebuah masalah atau tujuan diselesaikan dengan cara mempartisi
masalah menjadi bagian yang lebih kecil. Algoritma ini membagi sebuah tabel
array menjadi dua dan memroses satu bagian dari tabel itu saja.
Solusi yang ditawarkan untuk menangani masalah waktu penambahan
elemen dan pengujian elemen dalam himpunan adalah dengan algoritma Bloom
Filter. Bloom Filter adalah sebuah ruang efisien probabilistik data yang
dikemukakan oleh Burton Howard Bloom pada tahun 1970 yang digunakan untuk
memeriksa apakah suatu elemen berada di dalam himpunan atau tidak. Bloom Filter
memanfaatkan hashing untuk membuat setiap elemen menjadi unik. Meski
memiliki banyak kelebihan, dalam Bloom Filter terdapat suatu kelemahan yaitu
terjadinya tabrakan hash (collision) yang dapat menyebabkan kesalahan dalam hasil
pemeriksaan. False positive adalah kesalahan yang terjadi jika suatu elemen bukan
merupakan anggota dari himpunan namun pemeriksaan pada Bloom Filter
menghasilkan bahwa elemen tersebut merupakan anggota dari himpunan, misal
pada web browser Google Chrome suatu URL yang tidak jahat namun dianggap
sebagai URL jahat.
Pada karya ilmiah ini akan dibahas algoritma Bloom Filter, perhitungan
peluang kesalahan false positive, dan peminimalan terjadinya false positive
tersebut.

2
Tujuan
Tujuan penyusunan karya ilmiah ini adalah:
1 Menjabarkan cara kerja algoritma Bloom Filter pada pemeriksaan
keanggotaan suatu elemen dalam himpunan.
2 Menghitung peluang false positive.
3 Meminimalkan peluang terjadinya false positive.
4 Menjabarkan cara kerja algoritma Counting Bloom Filter.
5 Memilih ukuran counter yang sesuai untuk Counting Bloom Filter.

TINJAUAN PUSTAKA
Hashing
Fungsi hash adalah fungsi yang menerima masukan dengan panjang
sembarang dan menransformasikannya menjadi keluaran dengan panjang tetap
yang disebut nilai hash. Ide dasar fungsi hash adalah suatu nilai hash berlaku
sebagai representasi yang sederhana dari suatu input dan dapat digunakan hanya
jika nilai hash tersebut dapat diidentifikasi secara unik dengan input tersebut.
Fungsi hash banyak digunakan untuk mempercepat pencarian data dalam tabel data
atau pembandingan data seperti di dalam basis data. Fungsi ini juga digunakan
untuk mencari duplikasi atau kesamaan (rekaman) dalam arsip komputer yang
besar, menemukan goresan-goresan yang sama dalam sebuah DNA, dan
sebagainya.
Hashing digunakan sebagai alat untuk mengasosiasikan satu himpunan atau
data dengan identifier. Hash table adalah sebuah struktur data yang terdiri atas
sebuah tabel dan fungsi yang bertujuan untuk memetakan nilai kunci yang unik
untuk setiap input menjadi nilai hash yang kemudian dilokasikan dalam sebuah
tabel. Pemetaan fungsi hash yang digunakan bukanlah pemetaan satu-satu sehingga
antara dua input yang tidak sama dapat dibangkitkan nilai hash yang sama. Hal ini
menyebabkan terjadinya tabrakan (collision) dalam penempatan suatu input.

Fungsi Hash
Fungsi Modulo
Fungsi modulo merupakan jenis fungsi hash yang nilai hash-nya didapat
dengan cara mencari sisa bagi hasil nilai kunci dengan suatu nilai tertentu
=
. Nilai
dapat berupa dua kemungkinan, yaitu banyaknya ruang
alamat yang tersedia atau bilangan prima terdekat yang berada di atas nilai banyaknya
data. Banyaknya ruang alamat disesuaikan dengan .
Fungsi Pemotongan
Fungsi pemotongan merupakan jenis fungsi hash yang nilai hash-nya didapat
dengan memotong nilai kunci ke jumlah digit tertentu yang lebih pendek.

3

Fungsi Pelipatan
Fungsi pelipatan adalah fungsi hash yang nilai hash-nya didapat dengan
melakukan pelipatan terhadap record kunci dengan bagian yang sama panjang, lalu
setiap bagian tersebut dijumlahkan.
Fungsi Pengkuadratan
Fungsi pengkuadratan adalah fungsi hash yang nilai hash-nya didapat dengan
mengkuadratkan setiap digit pembentuk kunci, lalu semua hasilnya dijumlahkan.
Fungsi Penambahan Kode ASCII
Jika kunci bukan merupakan kode numerik, nilai hash dicari dengan
menjumlahkan kode ASCII dari setiap huruf pembentuk kunci.
Perfect Hashing
Perfect Hashing adalah hashing pada Bloom Filter yang digunakan jika
himpunan telah diketahui sebelumnya dan himpunan tersebut merupakan himpunan
yang statis. Hashing ini dapat digunakan untuk menyimpan satu set statis �
menggunakan fungsi hash yang sempurna. Sebuah fungsi hash yang sempurna
adalah bijeksi dari himpunan � ke array � dengan banyaknya kemungkinan nilai
hash adalah |�| = . Array berukuran dapat digunakan untuk menyimpan setiap
elemen
�.
Hashing ini tidak berlaku untuk himpunan yang dinamis karena fungsi hash
yang sempurna perlu menghitung ulang ketika terjadi perubahan pada himpunan �.
Hal ini bergantung pada Bloom Filter untuk mengubah hashing tak sempurna dari
menjadi hashing sempurna. Hashing ini memberikan sisa waktu dan ruang memori
pada pengerjaannya. Hashing ini juga membutuhkan set statis � tetapi dapat
menangani sejumlah besar elemen.
Element 1

Fingerprint(4)

Element 2

Fingerprint(5)

Element 3

Fingerprint(2)

Element 4

Fingerprint(1)

Element 5

Fingerprint(3)

Gambar 1 Contoh perfect hashing
Double Hashing
Double hashing adalah hashing yang mampu membangun buah nilai hash
dengan berdasar pada dua fungsi hash sebagai pembangun dasar (seed hash).
Praktisnya, Bloom Filter dapat dibangun dengan dua operasi hashing tanpa harus
mengurangi kinerja. Kirsch dan Mitzenmacher (2008) telah menunjukkan bahwa
untuk
dan ℎ
Bloom Filter hanya memerlukan dua fungsi independen ℎ
membangun tambahan (pseudo) hash yang didefinisikan sebagai:

4


=ℎ

+

∗ ℎ

dengan adalah indeks nilai hash,
dapat berupa fungsi sebarang terhadap
(seperti ), dan adalah elemen yang di-hash (Tarkoma 2012). Dalam Bloom
Filter, double hashing ini mengurangi banyaknya operasi perhitungan hash dari
turun menjadi dua tanpa meningkatkan peluang terjadinya false positive.
Multiple Hashing
Multiple Hashing adalah hashing yang memanfaatkan gagasan bahwa
pengguna memiliki beberapa pilihan fungsi hash dan bebas untuk memilih fungsi
yang sesuai. Ketika diterapkan untuk konstruksi hash table, multiple hashing
menyediakan metode probabilistik untuk mengurangi dampak tabrakan (collision)
dengan mengalokasikan penyebaran elemen secara cukup merata.
Simple Hash Function
Sebuah asumsi umum untuk mempertimbangkan bahwa nilai-nilai keluaran
hash adalah acak, yaitu setiap elemen hash secara independen dipetakan ke nilai
hash secara seragam. Meskipun hal ini merupakan bantuan besar untuk analisis
teoritis, namun telah diketahui implementasi fungsi hash menunjukan reaksi yang
acak (Tarkoma 2012).
Mitzenmacher dan Vadhan (2007) secara resmi menjelaskan ketidaksesuaian
antara teori dan praktis hashing. Singkatnya, alasan mendasar bahwa fungsi hash
sederhana bekerja dapat dijelaskan secara alami dari kombinasi keacakan memilih
fungsi hash dan keacakan dalam data. Oleh karena itu, hanya sejumlah kecil dari
keacakan dalam data yang cukup untuk meniru fungsi hash yang acak dalam
praktik. Hasil ini berlaku untuk setiap teknik yang berbasis hash, dan sebagai
konsekuensi praktis, mereka menyarankan bahwa fungsi sederhana (nonkriptografi misalnya CRC32) sangat cocok untuk kinerja tinggi aplikasi Bloom
Filter.
Sequential Search
Metode pencarian data berurut atau Sequential Search adalah metode yang
paling sederhana pada algoritma pencarian data. Pencarian data dengan metode ini
dilakukan dengan membandingkan data satu per satu dari kumpulan data (array)
sampai data tersebut ditemukan (sesuai) atau tidak ditemukan (tidak sesuai). Jika
data sudah ditemukan maka pencarian dihentikan. Jika belum ditemukan maka
pencarian diteruskan hingga seluruh data dibandingkan. Kelebihan dari metode
Sequential Search adalah jika data yang dicari terletak di depan maka proses
pencarian akan berlangsung cepat. Namun jika data yang dicari terletak di belakang
atau paling akhir maka proses pencarian akan membutuhkan waktu yang lama
terlebih jika ukuran data cukup besar. Kompleksitas untuk algoritma ini adalah
� � , artinya jika banyaknya elemen � dinaikkan � kali maka waktu menjalankan
algoritma juga naik � kali.

5

Binary Search
Binary Search adalah algoritma pencarian yang lebih efisien dibandingkan
algorima Sequential Search karena algoritma ini tidak perlu memeriksa setiap
elemen dari tabel array. Pada intinya, algoritma ini menggunakan prinsip divide
and conquer, yaitu sebuah masalah atau tujuan diselesaikan dengan cara memartisi
masalah menjadi bagian yang lebih kecil. Algoritma ini membagi sebuah tabel
menjadi dua dan memroses satu bagian dari tabel itu saja.
Algoritma Binary Search ini bekerja dengan cara memilih record dengan
indeks tengah dari tabel dan membandingkannya dengan record yang hendak
dicari. Jika record tersebut lebih rendah atau lebih tinggi, maka tabel tersebut dibagi
dua dan bagian tabel yang bersesuaian akan diproses kembali secara rekursif.
Algoritma ini adalah hanya bisa digunakan pada tabel yang elemennya sudah
terurut secara menaik maupun menurun (Munir 2001). Kompleksitas untuk
algoritma ini adalah
, berarti perubahan waktu lebih kecil dari perubahan
masukan elemen .

BLOOM FILTER
Standard Bloom Filter
Bloom Filter adalah struktur data ruang efisien yang mendukung permintaan
keanggotaan himpunan. Bloom Filter pertama kali dikemukakan oleh Burton H.
Bloom pada tahun 1970 dan telah banyak digunakan dalam basis data seperti
aplikasi jaringan, web cache sharing, dan penjaluran jaringan overlay. Standard
Bloom Filter tidak mendukung adanya operasi penghapusan elemen, namun kini
telah ada pengembangan lebih lanjut dari Bloom Filter yang mendukung operasi
penghapusan (Tarkoma 2012). Agar lebih efektif, Bloom Filter telah ditingkatkan
dari beberapa aspek yang berbeda untuk berbagai aplikasi. Keakuratan Bloom Filter
tergantung pada ukuran filter, jumlah fungsi hash yang digunakan dalam filter, dan
jumlah elemen yang ditambahkan ke himpunan.
Satu himpunan � yang memiliki elemen sebanyak direpresentasikan oleh
Bloom Filter menggunakan sebuah vektor bit berukuran
yang nilai awalnya
adalah 0. Bloom Filter menggunakan fungsi hash yang bebas sebanyak yaitu
ℎ , ℎ , … , ℎ dengan kisaran nilai hash adalah berkisar dari 1 sampai . Ketika
menyisipkan elemen ke �, semua bit terkait dengan elemen dari alamat Bloom
yang terdiri dari alamat ℎ ( ) untuk
akan berubah
Filter yaitu
nilainya dari 0 menjadi 1. Untuk menanggapi setiap permintaan keanggotaan untuk
elemen , harus diperiksa apakah semua bit ( ) bernilai 1. Jika tidak semua bit
bernilai 1 maka Bloom Filter akan menyimpulkan bahwa bukan anggota dari �,
jika semua bit bernilai 1 maka Bloom Filter akan menyimpulkan bahwa anggota
� meskipun terdapat kemungkinan terjadinya kesalahan dalam beberapa kasus.
Oleh karena itu Bloom Filter dapat menghasilkan false positive.

6

Berikut adalah algoritma penyisipan elemen pada Bloom Filter:
Algoritma 1: Penyisipan pada Bloom Filter
Data: x adalah elemen yang disisipkan ke Bloom Filter.
Function: insert(x)
for ∶ … do
;
← ℎ
if
== then
← ;
end
end
Algoritma 1 menjelaskan bahwa ketika elemen disisipkan ke dalam suatu
himpunan yang telah direpresentasikan oleh Bloom Filter, maka elemen tersebut
pertama kali akan melalui tahap hashing dengan buah fungsi hash untuk
mendapatkan nilai hash yang berkisar dari 1 sampai . Nilai-nilai hash inilah yang
kemudian menjadi indeks dari bit yang akan diubah nilainya dari 0 menjadi 1.
Karena terdapat buah fungsi hash, maka akan ada buah bit dalam tabel yang
akan diubah nilainya menjadi 1. Begitu seterusnya untuk penyisipan elemenelemen yang lain. Jika elemen lain memiliki nilai hash yang sama dengan elemenelemen sebelumnya maka bit-bit terkait tetap bernilai 1 dan kejadian ini dinamakan
tabrakan hash (collision).
Algoritma 2: Pengujian elemen pada Bloom Filter
Data: x adalah item yang diuji keanggotannya.
Function: ismember(x) menghasilkan benar atau salah
← ;
← ;
while == �
do
;
← ℎ
if == then
← ;
end
← + ;
end
return m;
Algoritma 2 menjelaskan bahwa untuk menguji suatu elemen merupakan anggota
dari suatu himpunan atau bukan, akan diperiksa apakah bit-bit yang terkait dengan
elemen tersebut bernilai 1. Sama halnya dengan algoritma penyisipan, pada
algoritma pengujian pun elemen yang akan diuji harus dicari nilai hash-nya terlebih
dahulu untuk mengetahui indeks dari bitnya. Setelah didapat buah nilai hash
maka langkah berikutnya adalah memeriksa nilai bit pada indeks tersebut. Jika
semua bit bernilai 1 maka elemen tersebut adalah anggota dari himpunan.
Bloom Filter tak selalu menghasilkan kesimpulan yang tepat. Sebuah
permintaan keanggotaan berdasarkan Bloom Filter dapat menghasilkan salah satu
dari kemungkinan hasil berikut:

7
1) Hasil yang selalu benar, yaitu jika
� maka
≠ ∀
{ , , … , };
dan jika
� maka ∃
{ , , … , } sehingga
= .
2) Hasil false positive, yaitu jika
� maka
≠ ∀
{ , , … , }.
3) Hasil false negative, yaitu jika
� maka ∃
{ , , … , } sehingga
= .

Misal terdapat suatu himpunan statis � yang telah diketahui elemenelemennya yaitu � = {25, 67, 82}. Jika himpunan ini direpresentasikan oleh Bloom
Filter maka terdapat sebuah tabel array bit berukuran yang nilai awalnya adalah
0 dan buah fungsi hash. Misalkan ukuran vector bit
=
dan banyaknya
=
+
=
+ , ℎ
fungsi hash
= , dengan ℎ
=
+
+ .
+ , dan ℎ
Berikut ilustrasi tabel array berukuran 16 bit sebelum merepresentasikan
himpunan �.
0 0 0 0 0 0 0 0 0 0

0

0

0

0

0

0

1

11

12

13

14

15

16

2

3

4

5

6

7

8

9

10

Gambar 2 Ilustrasi tabel array
Untuk merepresentasikan himpunan � pada Bloom Filter maka Bloom Filter
harus menyisipkan setiap elemen pada � ke dalam filter menggunakan algoritma 1.
Untuk elemen 25 setelah dilakukan tahap hashing maka didapat nilai hash
= . Sehingga nilai pada bit-bit
= , dan ℎ
= , ℎ

berindeks 10, 11, dan 15 akan diubah nilainya menjadi 1 yaitu
= ,
= ,
dan
= . Untuk elemen 67 dan 82 dengan langkah yang sama didapat nilai hash
=
= , dan ℎ
= ,ℎ
= ,ℎ
= ,ℎ
= ,ℎ

. Nilai pada bit-bit berindeks 3, 4, 7, 9, 13, dan 15 akan diubah nilainya menjadi
1 yaitu
= , = , 7= , 9= ,
= , dan
= . Sehingga tabel
array pada Gambar 2 setelah diperbarui nilainya disajikan pada gambar 3.
25

67

82

0 0 1 1 0 0 1 0 1 1

1

0

1

0

1

0

1

11

12

13

14

15

16

2

3

4

5

6

7

8

9

10

Gambar 3 Ilustrasi penyisipan elemen pada Bloom Filter
Untuk melakukan pengujian keanggotaan elemen perlu dilakukan
pemeriksaan terhadap nilai-nilai dari vektor bit pada tabel array. Misal untuk
elemen 25, setelah dilakukan hashing maka akan didapat nilai hash 10, 11, dan 15.
Jika bit pada indeks 10, 11, dan 15 bernilai 1 maka dipastikan elemen 25 adalah
anggota dari himpunan �.

8

False Positive
Item False Positive
False positive adalah sebuah kesalahan hasil penentuan dalam Bloom Filter
yang menyatakan bahwa elemen yang merupakan anggota dari himpunan padahal
sebenarnya elemen tersebut tidak berada dalam himpunan. Pada beberapa aplikasi
elemen false positive ini dianggap tidak terlalu berbahaya.
Pada Gambar 3 diketahui bahwa Bloom Filter telah merepresentasikan
himpunan � = { , , }. Misal pada Bloom Filter dilakukan uji permintaan
untuk elemen 78 yang setelah dilakukan hashing didapat nilai-nilai hash yaitu
= . Maka hal yang perlu dilakukan dalam
= ,ℎ
= ,ℎ

pengujian keanggotaan adalah memeriksa apakah bit-bit pada indeks 15, 3, dan 11
bernilai 1 atau tidak. Jika bit-bit tersebut bernilai 1 maka akan dilaporkan sebagai
anggota dari himpunan � dan disebut sebagai elemen false positive karena
sebenarnya bukan anggota dari himpunan �.
25

67

82

78 ?

0 0 1 1 0 0 1 0 1 1

1

0

1

0

1

0

1

11

12

13

14

15

16

2

3

4

5

6

7

8

9

10

Gambar 4 Elemen false positive
Pada Gambar 4 terlihat bahwa bit-bit yang berhubungan dengan elemen 78
yaitu bit-bit berindeks 3, 11, dan 15 bernilai 1 karena bit-bit tersebut telah terisi
oleh elemen-elemen sebelumnya. Oleh karena itu, Bloom Filter akan melaporkan
bahwa 78 adalah anggota dari himpunan � meskipun sebenarnya 78 bukan anggota
dari himpunan �. Hal ini terjadi karena adanya tabrakan hash yang antara nilai-nilai
hash untuk elemen 78 dengan nilai-nilai hash dari elemen-elemen anggota
dan ℎ
=
bertabrakan dengan ℎ
himpunan �. Misal untuk ℎ
sehingga bit berindeks 15 sudah bernilai 1. Begitu pun yang terjadi dengan nilai
.
dan ℎ
hash ℎ
Peluang False Positive
Sebuah fungsi hash diasumsikan memiliki peluang yang sama untuk memilih
posisi array (bit). Banyaknya bit dalam Bloom Filter dinotasikan dengan . Ketika
melakukan penyisipan satu elemen ke dalam Bloom Filter, maka peluang bahwa
nilai bit terkait tidak diubah menjadi 1 adalah


.

Dalam Bloom Filter terdapat buah fungsi hash. Sehingga peluang bahwa nilai bitbit terkait tidak diubah ke 1 adalah

9
( −

) .

( −

)

ke dalam Bloom Filter, peluang

Setelah dilakukan penyisipan elemen sebanyak
bahwa bit-bit tersebut masih bernilai 0 adalah

dan peluang bahwa bit bernilai 1 adalah

−( −

,

)

.

Untuk pengujian keanggotaan sebuah elemen, jika semua posisi
array
dalam filter yang didapat dari fungsi hash bernilai 1, maka Bloom Filter
menyatakan bahwa elemen tersebut merupakan milik atau anggota dari himpunan.
Peluang bahwa hal ini terjadi ketika elemen tersebut sebenarnya bukan anggota
himpunan adalah
)

−( −

.

Suatu himpunan dapat memiliki elemen yang jumlahnya sangat besar, maka
dengan membuat bernilai sangat besar didapat hampiran
)

lim ( −
→∞

Sehingga didapat peluang false positive adalah



=

−( −

)

=



≈( −

.



)

.

Peminimalan Peluang False Positive
Nilai peluang false positive dapat dibuat seminimal mungkin dengan
menurunkan Persamaan (7) terhadap sehingga didapat nilai yang optimal.
Misalkan

= ( −





) , turunkan fungsi terhadap sehingga diperoleh

10

( −



)



( −

(



)

Karena ( −



) ≠ , maka




( −

(

⇔ ln ( −



)

+ ln ( −


) = −

( −

Selesaikan persamaan (9) maka akan didapat


=

ln



Hal ini menyebabkan peluang false positive menjadi


( ) ≈ .

Dengan menggunakan fungsi hash optimal
dituliskan kembali dan dibatasi oleh
ln

.

�,

.



) .
)

/

Untuk meminimalkan , selanjutnya diberlakukan




+ ln ( −

= .

)

)



)

=

.

optimal, yaitu
.

peluang false positive dapat

Ini berarti bahwa untuk menjaga peluang false positive bernilai tetap,
banyaknya bit dari Bloom Filter harus dinaikkan secara linear dengan banyaknya
elemen yang disisipkan ke dalam filter. Banyaknya bit untuk banyaknya elemen
dan tingkat false positive � diberikan oleh
=−

ln
ln



.

11
m=64
m=512
m=1024
m=2048

1.00

0.98

Peluang false positive (

�)

m=4096

0.96

0.94

0.92

20000

40000

60000

80000

100000

Banyaknya elemen yang disisipkan (n)

Gambar 5 Nilai peluang false positive
Gambar 5 menyajikan peluang false positive � sebagai fungsi dari
banyaknya elemen
dan ukuran filter . Nilai
dan
yang diambil telah
disesuaikan dengan banyaknya fungsi hash optimal yaitu
ln . Dari
� =
grafik tersebut dapat disimpulkan bahwa peluang terjadinya false positive akan
semakin tinggi bila jumlah elemen yang disisipkan semakin banyak, peluangnya
akan semakin kecil jika ukuran tabel array diperbesar.

Counting Bloom Filter
Seperti telah diungkapkan sebelumnya bahwa Bloom Filter standar yang
tidak mendukung operasi penghapusan di himpunan. Counting Bloom Filter yang
merupakan salah satu variasi dari Bloom Filter yang mendukung adanya operasi
penyisipan dan penghapusan sehingga dapat digunakan untuk himpunan yang
dinamis (Jin et al 2009). Fan et al pertama kali memperkenalkan ide Counting
Bloom Filter dalam keterkaitannya dengan web cache.
Pada Counting Bloom Filter, setiap entri dalam Bloom Filter diubah menjadi
sebuah counter kecil yang berasosiasi dengan bit standard Bloom Filter. Ketika
satu item disisipkan, counter yang sesuai akan bertambah. Selanjutnya, jika satu
item dihapus, counter yang sesuai akan berkurang.
Berikut adalah algoritma penyisipan elemen pada Counting Bloom Filter:

12
Algoritma 3: Penyisipan pada Counting Bloom Filter
Data: x adalah elemen yang disisipkan.
Function: insert(x)
for ∶ … do
;
← ℎ
← + ;
if
== then
← ;
end
end
Algoritma 3 menyajikan pseudocode operasi penyisipan untuk elemen . Operasi
akan menambahkan nilai counter pada setiap bit yang terkait dengan elemen .
Struktur Counting Bloom Filter mendukung penghapusan elemen menggunakan
operasi hapus yang disajikan dalam Algoritma 4 yang menjelaskan untuk
penghapusan elemen akan menurunkan nilai counter pada bit-bit terkait dan bit
tersebut akan diubah nilainya menjadi 0 jika nilai counter menjadi 0.
Algoritma 4: Penghapusan elemen pada Counting Bloom Filter
Data: x adalah elemen yang dhapus.
Function: delete(x)
for ∶ … do
;
← ℎ
← − ;
if
then
← ;
end
end.

Counter untuk Counting Bloom Filter
Untuk menghindari counter yang overflow, maka pengguna perlu memilih
ukuran counter yang cukup besar. Analisis yang telah dilakukan oleh Fan et al
(2000) mengungkapkan bahwa 4 bit per counter akan cukup untuk sebagian besar
aplikasi. Untuk menentukan ukuran counter yang baik, pengguna dapat
mempertimbangkan sebuah Counting Bloom Filter untuk satu himpunan dengan
buah elemen, buah fungsi hash, dan
counters. Misalkan
adalah jumlah
yang terkait dengan counter ke- . Peluang bahwa counter ke- meningkat kali
adalah sebuah variabel random binomial yang dapat ditulis sebagai
=

=(

)





.

Peluang bahwa setiap counter setidaknya sama dengan dibatasi dari atas oleh
= , yang dapat dihitung dengan menggunakan Persamaan (10).

13
Nilai counter meningkat beberapa kali setiap nilai bit terkait diubah menjadi
1, yang pada mulanya semua counter diberi nilai awal 0. Peluang bahwa setiap
counter lebih besar atau sama dengan adalah
P max

(

)

(

) .

Seperti yang telah disebutkan sebelumnya, nilai optimum dari
Asumsikan bahwa banyaknya fungsi hash kurang dari ln
dengan
ln
P max
(
) .

adalah

ln

.

, misalkan kita batasi

Dengan =16 kita mendapatkan
P max

.

×



×

.

Oleh karena itu, jika kita membuat 4 bit per counter, peluang terjadinya overflow
untuk nilai-nilai secara praktis dari selama penyisipan awal dalam filter sangatlah
kecil.
Counting Bloom Filter juga mampu menjaga perkiraan banyaknya elemen.
Sebagai contoh, sisipkan elemen sebanyak tiga kali maka nilai bit-bit terkait
berubah menjadi 1 dan nilai counter terkait bertambah 1 untuk setiap penyisipan.
Oleh karena itu, counter terkait setidaknya bertambah tiga kali, beberapa dari
counter tersebut mungkin bertambah lebih dari tiga kali jika ada tumpang tindih
dengan unsur lain yang disisipkan. Perkiraan counter dapat ditentukan dengan
mencari nilai minimum dari nilai counter di semua lokasi terkait dengan item
tersebut.

SIMPULAN DAN SARAN
Simpulan
Bloom Filter adalah struktur data ruang efisien yang efektif
merepresentasikan himpunan/data dan mendukung perkiraan permintaan
keanggotaan. Bloom Filter bekerja dengan berbasis tabel array memanfaatkan
teknik hashing untuk membuat setiap elemen menjadi unik sehingga dapat dengan
mudah menentukan keanggotaan suatu elemen. Algoritma ini dapat menghasilkan
kekeliruan dalam penentuan keanggotaan suatu elemen, yang salah satunya disebut
dengan false positive. Peluang munculnya false positive ini dapat dihitung dengan
rumus



=( −



) ≈( −





) . Untuk meminimalkan terjadinya

ln . Pada himpunan
false positive didapatkan fungsi hash optimal
� =
yang dinamis dapat digunakan Counting Bloom Filter, yaitu variasi dari Bloom
Filter yang mendukung operasi penambahan dan penghapusan elemen. Counting

14
Bloom Filter menggunakan counter yang berasosiasi dengan bit Standard Bloom
Filter. Untuk membuat peluang terjadinya overflow pada counter dapat dipilih
ukuran 4 bit per counter.

Saran
Pada karya ilmiah ini telah dibahas mengenai cara kerja algoritma Bloom
Filter dalam pengujian suatu elemen dan menghitung peluang terjadinya false
positive. Akan lebih baik apabila karya ilmiah ini dikembangkan dan
diaplikasikan/disimulasikan langsung pada suatu studi kasus agar lebih
tergambarkan mengenai cara kerja dari algoritma Bloom Filter dan peluang nyata
terjadinya false positive pada himpunan.

DAFTAR PUSTAKA
Fan L, Cao P, Almeida J, dan Broder AZ. 2000. Summary Cache: A Scalable WideArea Web Cache Sharing Protocol. IEEE Transactions on Networking. 8(3):
281-293. doi: 10.1109/90.851975
Guo D, Liu Y, Li X, dan Yang P. 2010. False Negative Problem of Counting Bloom
Filter. IEEE Transactions on Knowledge and Data Engineering. 22(5): 651-664.
doi: 10.1109/TKDE.2009.209
Jin Z, Jiangxing W, Julong L, dan Jianqiang L. 2009. Performance Evaluation And
Comparison of Three Counting Bloom Filter. Jurnal of Electronics (China).
26(3): 332-340. doi: 10.1007/s11767-008-0031-x
Kirsch A, Mitzenmacher M. 2008. Less Hashing, Same Performance: Building A
Better Bloom Filter. Random Structures & Algorithms Archive. 33(2): 187-218.
doi: 10.1002/rsa.20208
Munir R. 2001. Matematika Diskrit Vol 2. Bandung(ID): Penerbit Informatika
Bandung.
Tarkoma S, Rothenberg CE, dan Lagerspetz E. 2012. Theory and Practice of Bloom
Filter for Distributed System. IEEE Communication Survey & Tutorials. 14(1):
131-155. doi: 10.1109/SURV.2011.031611.00024

RIWAYAT HIDUP

Penulis dilahirkan di Ciamis pada tanggal 3 Juli 1992 dari ayah Enang
Sudarna dan ibu Rasinem. Penulis adalah putra kedua dari tiga bersaudara. Tahun
2004 penulis lulus dari SD Negeri 5 Pangandaran kemudian pada tahun 2007 lulus
dari SMP Negeri 1 Pangandaran. Tahun 2010 penulis lulus dari SMA Negeri 1
Pangandaran dan pada tahun yang sama penulis lulus seleksi masuk IPB melalui
jalur Undangan Seleksi Masuk IPB dan diterima di Departemen Matematika,
Fakultas Matematika dan Ilmu Pengetahuan Alam.
Selama mengikuti perkuliahan, penulis aktif sebagai staf Divisi Sosial dan
Lingkungan Gugus Mahasiswa Matematika (Gumatika) IPB 2011/2012 dan kepala
Departemen Sosial dan Lingkungan Gumatika IPB 2012/2013. Penulis juga pernah
mengajar mata kuliah Landasan Matematika, Pengantar Matematika, Kalkulus, dan
Kalkulus 2 di bimbingan belajar MAFIA Clubs. Penulis juga aktif mengikuti
kepanitiaan sebagai staf Divisi Sponsorship Matematika Ria Pesta Sains Nasional
2012, staf Divisi Dana Usaha dan Sponsorship Masa Perkenalan Fakultas GFORCE 48, dan staf Divisi Konsumsi Matematika Ria Pesta Sains Nasional 2013.