• Tidak ada hasil yang ditemukan

Pemeriksaan keanggotaan elemen pada himpunan dengan bloom filter

N/A
N/A
Protected

Academic year: 2017

Membagikan "Pemeriksaan keanggotaan elemen pada himpunan dengan bloom filter"

Copied!
25
0
0

Teks penuh

(1)

PEMERIKSAAN KEANGGOTAAN ELEMEN PADA

HIMPUNAN DENGAN BLOOM FILTER

ADI RISWANTO

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR

(2)
(3)

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

(4)

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 BloomFilter, 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.

(5)

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

(6)
(7)

Judul Skripsi : Pemeriksaan Keanggotaan Elemen pada Himpunan dengan Bloom Filter

Nama : Adi Riswanto NIM : G54100062

Disetujui oleh

Dr Ir Fahren Bukhari, MSc Elis Khatizah, MSi Pembimbing I Pembimbing II

Diketahui oleh

Dr Toni Bakhtiar, MSc Ketua Departemen

(8)

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

(9)

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

(10)

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

(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

(12)

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

(13)

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.

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

Bloom Filter hanya memerlukan dua fungsi independen ℎ dan ℎ untuk membangun tambahan (pseudo) hash yang didefinisikan sebagai:

Fingerprint(4) Fingerprint(5) Fingerprint(2) Fingerprint(1) Fingerprint(3)

(14)

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 (non-kriptografi 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

(15)

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 Filter yaitu yang terdiri dari alamat ℎ ( ) untuk akan berubah 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

(16)

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)

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 elemen-elemen yang lain. Jika elemen-elemen lain memiliki nilai hash yang sama dengan elemen-elemen 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

← ;

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.

(17)

7 elemennya 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

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 ℎ = , ℎ = , dan ℎ = . Sehingga nilai pada bit-bit 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Gambar 3 Ilustrasi penyisipan elemen pada Bloom Filter

(18)

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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

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 himpunan �. Misal untuk ℎ = bertabrakan dengan ℎ dan ℎ sehingga bit berindeks 15 sudah bernilai 1. Begitu pun yang terjadi dengan nilai

hashℎ dan ℎ .

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

− .

(19)

9

( − ) .

Setelah dilakukan penyisipan elemen sebanyak ke dalam Bloom Filter, peluang 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.

(20)

10

( − − )

(

( − − )+ ln ( −

)

)

.

Untuk meminimalkan , selanjutnya diberlakukan / = . Karena ( − −� ) ≠ , maka

(

( − − )+ ln ( −

)

)

=

⇔ ln ( − − ) = − −

( − − ).

Selesaikan persamaan (9) maka akan didapat optimal, yaitu

� = ln ≈ .

Hal ini menyebabkan peluang false positive menjadi

( ) ≈ . ⁄ .

Dengan menggunakan fungsi hash optimal , peluang false positive dapat dituliskan kembali dan dibatasi oleh

ln .

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 bituntuk banyaknya elemen dan tingkat false positive diberikan oleh

(21)

11

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.

(22)

12

Algoritma 3: Penyisipan pada Counting Bloom Filter

Data: x adalah elemen yang disisipkan. Function: insert(x)

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)

(2000) mengungkapkan bahwa 4 bitper 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

(23)

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 adalah ln . Asumsikan bahwa banyaknya fungsi hash kurang dari ln , misalkan kita batasi dengan

P max ( ln ) .

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

(24)

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 Wide-Area 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.

(25)

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.

Referensi

Dokumen terkait

Tiga kelompok pengeluaran mengalami penurunan indeks/deflasi yaitu kelompok transpor, komunikasi dan jasa keuangan 1,44 persen; kelompok bahan makanan 0,21 persen; dan

Bagian Virologi, Departemen Ilmu Penyakit Hewan dan Kesehatan Masyarakat Veteriner, Fakultas Kedokteran Hewan, Universitas Nusa

penyuluhan terhadap pengetahuan dan sikap Seharusnya untuk melihat keberhasilan program pasien tentang penyakit hipertensi di Desa Beton promosi kesehatan sebagai pencegahan

1) Jasa Akses Internet, maksudnya adalah penyedia jasa sebuah akses internet yang diberikan kepada masyarakat untuk digunakan dan diambil manfaatnya. 2) Alat

Sj_ = besar arus jenuh untuk kelompok jalur atau

Penyelesaian negosiasi masalah pembatasan domestic support on agriculture, India melakukan perannya sebagai NSB dengan mengakomodasi kepentingan NSB yang diupayakan

Penelitian ini bertujuan mendeteksi dan mengidentifikasi spesies Meloidogyne pada tanaman wortel asal Dataran Tinggi Malino, Kecamatan Tinggimoncong, Kabupaten

Di bidang agraria, orang asing hanya boleh mempunyai hak pakai atas tanah di Indonesia. Selain itu, Indonesia mempunyai pajak khusus, yaitu pajak bangsa asing. Latar belakang