studi perbandingan implementasi algoritma naive method

31
Studi Perbandingan Implementasi Algoritma Naive Method, Knuth-Morris-Pratt, dan Boyer-Moore-Hoorspool pada Multi Record Database Artikel Ilmiah Diajukan kepada Fakultas Teknologi Informasi untuk memperoleh Gelar Sarjana Komputer Oleh : Yoseph Kurniawan Sunarto NIM : 672013720 Program Studi Teknik Informatika Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga Juni 2015

Upload: others

Post on 13-Nov-2021

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Studi Perbandingan Implementasi Algoritma Naive Method

Studi Perbandingan Implementasi

Algoritma Naive Method, Knuth-Morris-Pratt,

dan Boyer-Moore-Hoorspool

pada Multi Record Database

Artikel Ilmiah

Diajukan kepada

Fakultas Teknologi Informasi

untuk memperoleh Gelar Sarjana Komputer

Oleh :

Yoseph Kurniawan Sunarto

NIM : 672013720

Program Studi Teknik Informatika

Fakultas Teknologi Informasi

Universitas Kristen Satya Wacana

Salatiga

Juni 2015

Page 2: Studi Perbandingan Implementasi Algoritma Naive Method
Page 3: Studi Perbandingan Implementasi Algoritma Naive Method
Page 4: Studi Perbandingan Implementasi Algoritma Naive Method
Page 5: Studi Perbandingan Implementasi Algoritma Naive Method
Page 6: Studi Perbandingan Implementasi Algoritma Naive Method
Page 7: Studi Perbandingan Implementasi Algoritma Naive Method

Studi Perbandingan Implementasi

Algoritma Naive Method, Knuth-Morris-Pratt,

dan Boyer-Moore-Hoorspool

pada Multi Record Database

1)

Yoseph Kurniawan Sunarto, 2)

Sri Yulianto J.P

Program Studi Teknik Informatika

Fakultas Teknologi Informasi

Universitas Kristen Satya Wacana

Jl. Diponegoro 52-60 Salatiga

Email : 1)

[email protected] , 2)

[email protected]

ABSTRAK

Pencocokan string adalah sebuah hal yang kita lakukan setiap hari. Sebagai

contohnya, kita melakukan pencocokan string saat kita mencari sebuah data atau artikel di

internet. Kita memasukkan kata kunci, kemudian browser mengirimkan kata kunci tersebut

ke sebuah server. Server tersebut melakukan algoritma pencarian. Setelah beberapa saat,

artikel yang kita cari berdasarkan kata kunci kita telah ditemukan.

Banyak sekali algoritma yang sampai hari ini terus dikembangkan. Salah satunya

adalah "Boyer-Moore-Hoorspool". Algoritma ini adalah pengembangan dari algoritma

sebelumnya, yaitu algoritma "Boyer-Moore".

Secara umum, algoritma "Boyer-Moore-Hoorspool" adalah salah satu dari algoritma

- algoritma pencocokan string yang efektif. Dengan kita menerapkan algoritma tersebut ke

dalam sebuah aplikasi search engine, maka kita akan membuat pencarian kita lebih cepat, dan

efisien dalam penggunaan waktu. Setelah dilakukan percobaan dan pengamatan pada seribu

data pada empat buah basisdata, sebuah kesimpulan dapat ditarik. Algoritma Boyer-Moore-

Hoorspool dapat melakukan optimasi pencarian yang sangat baik. Di saat metode tradisional

atau NaiveMethod sangat lambat dalam melakukan pencarian kata kunci, algoritma Boyer-

Moore-Hoorspool dapat melakukan optimasi mencapai 76.9%. Ini adalah hasil yang sangat

baik, dibandingkan dengan hasil sebesar 27.2% yang dicapai oleh algoritma pencarian string

modern lainnya, algoritma Knuth-Morris-Pratt.

Kata kunci: String matching algorithm, Boyer-Moore-Hoorspool, Searching Engine

Page 8: Studi Perbandingan Implementasi Algoritma Naive Method

Studi Perbandingan Implementasi

Algoritma Naive Method, Knuth-Morris-Pratt,

dan Boyer-Moore-Hoorspool

pada Multi Record Database

1)

Yoseph Kurniawan Sunarto, 2)

Sri Yulianto J.P

Program Studi Teknik Informatika

Fakultas Teknologi Informasi

Universitas Kristen Satya Wacana

Jl. Diponegoro 52-60 Salatiga

Email : 1)

[email protected] , 2)

[email protected]

ABSTRACT

String matching is a common thing that we do every day. For example, we are

doing a string matching when we are looking for a data or an article on internet. We type the

keyword, then the browser send our keyword to a server. The server will do a searching

algorithm. After a few seconds, articles we are looking forbased on the keywordhas been

found.

There are many algorithmswhich have been developed these days. One of those

strings searching algorithm is the “Boyer-Moore-Hoorspool” algorithm. This algorithm is a

development from its former, the “Boyer-Moore” algorithm.

Generally, “Boyer-Moore-Hoorspool” algorithm is one of the most effective string

searching algorithms. By applying the algorithm into a search engine application, we will

perform a faster and more efficient searching. After a research and observation over a

thousand data on four databases, a conclusion can be drawn. The Boyer-Moore-Hoorspool

can do a very good improvement in string matching. While the traditional method or the

Naïve Method is very slow in string matching, the Boyer-Moore-Hoorspool can improve the

rate of string matching by 79.6%. This is a very good result compared to the result of 27.2%

performed by another modern string matching algorithm, the Knuth-Morris-Pratt.

Keyword : String matching algorithm, Boyer-Moore-Hoorspool, Searching Engine

Page 9: Studi Perbandingan Implementasi Algoritma Naive Method

1. Pendahuluan

Mesin pencari atau search engine bukanlah barang baru di Indonesia. Dengan

sangat cepat Google, Yahoo, dan banyak penyedia layanan ini berkembang. Hal ini

tentu tidak dicapai dengan instan, ada waktu dan pengembangan yang terus menerus

dari pihak penyedia layanan pencarian ini. Metode pencarian data adalah metode yang

selalu dipakai oleh masyarakat. Masyarakat selalu ingin mendapatkan atau mencari

sesuatu dengan efektif (Desi, 2005). Jika semua ruang pencarian dan objek pencarian

dicampur dalam sebuah ruang yang tidak terpisah, maka akan menghabiskan waktu.

Jadi yang dicari oleh masyarakat adalah kecepatan dan akurasi pencarian..

Berdasarkan survey terdahulu yang dilakukan terhadap 100 orang responden

di daerah kota Ungaran pada bulan Maret 2015, pembatalan pencarian sebuah

informasi dalam sebuah artikel di internet akan dilakukan jika halaman websitetidak

memberikan respon dalam waktu 10 - 15 detik.

Sebuah mesin pencari menjadi lambat dalam menanggapipermintaan

penggunatidak hanya semata-mata karena tidak akuratnya algoritma yang digunakan

dalam mesin pencari tersebut, tapi bisa juga karena faktor mungkin terlalu banyak

obyek yang harus di-muatdi dalam sebuah halaman situs web, lalu lintas data

elektronikyang padat, dan bisa juga pengaruh bandwidth yang tidak besar. Meski kita

tidak bisa mengubah faktor bandwidth yang tidak besar, jika kita bisa

mengoptimalkan akurasi dan kecepatan algoritma pencarian dalam sebuah mesin

pencari maka kita bisa meminimalkan pembatalan pencarian oleh pengguna (Priyanto,

2014).

Dalam perkembangannya, string searching algorithm atau algoritma pencarian

string tidak hanya ada algoritma Boyer-Moore-Hoorspool saja, masih ada banyak

metode yang lain, seperti Algoritma Knuth-Morris-Pratt yang mulai dikembangkan

pada tahun 1977. Kedua algoritma Knuth-Morris-Pratt (KMP) dan Boyer-Moore-

Hoorspool (BMH) memiliki kemiripan dalam jalannya proses penghitungan dan

logika, tapi memiliki perbedaan yang cukup signifikan di dalam metode penentuan

awal pencocokan string. Algoritma Knuth-Morris-Pratt memulai penghitungan dari

indeks pertamakata kunci. Sedangkan pada algoritma Boyer-Moore-Hoorspool,

pencocokan dimulai dari indeks terakhir kata kunci, dengan tujuan untuk memberikan

hasil pencarian yang lebih cepat (Aulia, 2008).

Meski pun secara umum algoritma Boyer-Moore-Hoorspool terbukti lebih

efisien dalam melakukan pergeseran, percobaan, pengujian dan analisa algoritma

pencarian stringakan membantu melihat atau menentukan algoritma mana yang paling

cocok dan efektif untuk dipakai di dalam sebuah sistem pencarian string. Dalam

penulisan karya ilmiah ini, penulis membandingkan dan menganalisa tiga buah

algoritma pencarian string, yaitu Naive Method, Knuth-Morris-Pratt, dan Boyer-

Moore-Hoorspool. Ketiga algoritma ini akan dibandingkan, dan di analisa, untuk

mengetahui algoritma manakah yan paling efektif dalam pencarian kata kunci di

dalam basisdata multirecord.

2. Kajian Pustaka

Mesin pencari web (web searching engine) adalah program komputer yang

dirancang untuk melakukan pencarian atas berkas-berkas yang tersimpan dalam

layanan www, atau FTP (File Transfer Protocol), dalam sebuah ataupun sejumlah

komputer peladen (server) dalam suatu jaringan. Hasil pencarian umumnya

ditampilkan dalam bentuk daftar yang seringkali diurutkan menurut tingkat akurasi

ataupun rasio pengunjung atas suatu berkas. Informasi yang menjadi target pencarian

Page 10: Studi Perbandingan Implementasi Algoritma Naive Method

bisa terdapat dalam berbagai macam jenis berkas seperti halaman situs web, gambar,

ataupun jenis-jenis berkas lainnya. Beberapa mesin pencari juga diketahui melakukan

pengumpulan informasi atas data yang tersimpan dalam

suatu basisdata ataupun direktori web.

Untuk mendapatkan informasi-informasi yang dibutuhkan, pengunjung

internet masuk ke situs tersebut dan melakukan pencarian. Mesin pencari yang

terkenal adalah Google dan Yahoo. Gambar cara kerja mesin pencari secara umum :

Gambar 1 Cara kerja mesin pencari (sumber gambar)

Cara kerja mesin pencari pertama-tama menyalin semua halaman situs web

yang ada di dunia. Hal ini dilakukan oleh sebuah mesin atau sebuah program yang

biasa disebut dengan crawler, harvester, atau importer. Setelah data disalin dan

terdaftar dengan baik di dalam basisdata, maka saat pengguna mencari data yang

dibutuhkan, mesin pencari akan menampilkan data sesuai dengan kata kunci yang

dimasukkan pengguna.Mesin pencari akan berusaha sebisa mungkin menampilkan

data yang paling relevan dengan kata kunci yang dimasukkan olehpengguna.

Di dalam jurnal penelitian Satya Fajar Pratama yang berjudul “Pencocokan

DNA Pattern dengan Algoritma Boyer-Moore-Hoorspool” (2006), telah didapatkan

kesimpulan bahwa algoritma Boyer-Moore-Hoorspool adalah algoritma yang efektif

di gunakan untuk pencarian string di dalam sebuah pola kalimat karena telah

dibuktikan oleh penulis jurnal bahwa kecepatan algoritma ini sangat baik untuk

rangkaian string yang panjang sekalipun. Memang di dalam penelitian ini hanya

dipakai satu rangkaian string atau pola kalimat yang di cocokkan terhadap sebuah

kata kunci. Dengan dasar inilah maka penelitian ini dilakukan untuk membuktikan

kecepatan algoritma ini jika diaplikasikan ke dalam sebuah basisdata yang tentunya

tidak hanya memiliki satu data untuk dibandingkan.

Algoritma yang nantinya menjadi pembanding adalah algoritma tradisional,

yaitu Naïve Method, dan sebuah algoritma yang lebih modern, yaitu algoritma Knuth-

Morris-Pratt. Kedua metode ini dipilih untuk menjadi pembanding, dan diaplikasikan

ke dalam basisdata yang sama.

Metode Naive melakukan pencarian string dari indeks pertama kata kunci

yang dibandingkan dengan indeks pertama dari pola kalimat. Masing masing indeks

di cocokkan sampai terjadi kecocokan. Berbeda dengan algoritma tradisional,

sebelum melakukan pencocokan dan pencarian, algoritma Knuth-Morris-Pratt dan

Boyer-Moore-Hoorspool akan membangun sebuah tabel yang berisi nilai-nilai

pergeseran untuk setiap karakter yang terdapat di dalam kata kunci. Tabel ini akan di

Page 11: Studi Perbandingan Implementasi Algoritma Naive Method

gunakan saat proses pencarian menemui ketidakcocokan atau mismatch. Tabel ini

akan menunjukkan berapa besar pergeseran yang dilakukan oleh algoritma tersebut.

Seberapa besar efisiensi pencarian string ini akan sangat bergantung dari seberapa

besarnya pergeseran yang bisa dilakukan oleh sebuah algoritma saat menemukan

ketidakcocokan karakter yang sedang dibandingkan.

2.1 Metode Naive

Metode ini adalah metode pencarian string yang paling sederhana. Setiap

karakter dalam kata kunci akan dibandingkan mulai dari indeks pertama dari pola

kalimat. Berikut adalah sebuah contoh bagaimana metode ini mencocokan sebuah

kata kunci.

Pola kalimat : SAYA MAU MAKAN BAKSO SAPI

Kata kunci : BAKSO

Dengan kasus ini, metode Naive akan melakukan pencarian seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Di indeks pertama kata kunci, ditemukan ketidakcocokan dengan pola kalimat

(mismatch), maka dilakukan pergeseran sebanyak satu karakter, sehingga terjadi

kondisi seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Setelah pergeseran, indeks pertama kata kunci tidak cocok dengan pola kalimat,

sehingga dilakukan pergeseran lagi.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Terjadi ketidakcocokan lagi, sehingga harus dilakukan pergeseran lagi, sehingga

terjadi kondisi seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Pada indeks pertama kata kunci tidak cocok dengan karakter pada pola kalimat,

sehingga akan terus dilakukan pergeseran dan pencocokan, sampai terjadi kondisi

seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Setelah mengerjakan banyak pergeseran dan pencocokan, akhirnya algoritma

ini berhasil menemukan bahwa kata kunci ada di dalam pola kalimat.

Dalam pencocokan string, meskipun metode ini bisa menemukan hasil yang

dimaksud, tapi permasalahan nya adalah kecepatan. Jika pergeseran karakter yang

dilakukan seperti ini, maka algoritma ini akan memakan waktu yang cukup

lama.Berikut diagram alir jalannya algoritma ini :

Page 12: Studi Perbandingan Implementasi Algoritma Naive Method

Gambar 2Alur pencarian pada Metode Naive

Langkah pertama yang dilakukan adalah pengecekan awal, apakah karakter

pada indeks pertama kata kunci sama dengan indeks pertama dari pola kalimat. Jika

ditemukan sama, maka nilai kedua indeks akan di tambah masing masing satu, tapi

jika tidak, maka hanya nilai indeks pola kalimat yang ditambah satu. Ini artinya

dilakukan pergeseran sebanyak satu karakter pada pola kalimat.Pengecekan ini

dilakukan selama indeks terakhir kata kunci tidak melebihi indeks terakhir pada pola

kalimat tersebut. Hal ini mencegah adanya pengecekan setelah karakter terakhir dari

pola kalimat. Berikut pseudocode untuk mempermudah pengkodean metode Naive.

Page 13: Studi Perbandingan Implementasi Algoritma Naive Method

Kode Program 1 Pseudocode algoritma Naive

1. Baris 1 – 7 adalah definisi variabel yang akan dipakai dalam metode ini. Di

dalam metode ini, kata kunci dan pola kalimat akan diubah menjadi array satu

dimensi, agar pencocokan bisa dilakukan.

2. Baris 8 – 13 adalah bagian dimana sistem meminta masukan kata kunci dan

pola kalimat dari pengguna. Dan pada bagian ini, setiap masukan dari

pengguna, baik kata kunci maupun pola kalimat dimasukkan ke dalam array

yang sudah disediakan.

3. Baris 14 – 24 adalah baris dimana proses pencocokan setiap karakter pada kata

kunci dengan setiap karakter pada pola kalimat.

4. Baris 25 – 29 adalah bagian dimana jika kata kunci ditemukan atau tidak

ditemukan pada pola kalimat, sistem akan memberikan sebuah keluaran, atau

pemberitahuan kepada pengguna.

2.2 Algoritma Knuth-Morris-Pratt

Algoritma Knuth-Morris-Pratt (KMP) adalah sebuah algoritma pencarian

string yang melakukan pergeseran berdasarkan sebuah tabel yang sudah dihitung

sebelumnya. Dengan tabel ini, maka penentuan pergeseran kata kunciakan menjadi

lebih efektif. Tabel nilai pergeseran ini akan menjadi faktor penentu seberapa cepat

algoritma ini mampu menemukan kata kunci di dalam sebuah pola kalimat.

Berikut adalah sebuah contoh penghitungan untuk sebuah kata kunci dengan

panjang 10 karakter.

Posisi (k) 1 2 3 4 5 6 7 8 9 10

Kata kunci(P) A B C C B A B C B B

KAMUS

1. i, j, pjg_katakunci, pjg_kalimat : integer

2. kecocokan : boolean

3. ar_kalimat : array[0..pjg_kalimat-1] of char

4. ar_katakunci : array [0.. pjg_katakunci-1] of char

5. i 0

6. j 0

7. kecocokan false

ALGORITMA

8. input (kalimat)

9. input (katakunci)

10. pjg_kalimat count(kalimat)

11. pjg_katakunci count(katakunci)

12. ar_kalimat ..

13. ar_katakunci ..

14. while (i<=pjg_kalimat-1) and (j<=pjg_katakunci-1) 15. if ar_kalimat[i] = ar_katakunci[j] then

16. i i+1

17. j j+1

18. kecocokan true 19. else

20. i i+1

21. j 0

22. kecocokan false 23. end if 24. end while 25. if kecocokan = truethen 26. output (true) 27. else 28. output (false) 29. end if

Page 14: Studi Perbandingan Implementasi Algoritma Naive Method

Pergeseran (s) 0 0 0 0 0 1 2 3 0 0

1. Nilai s pada posisi k pertama sebesar 0 (nol) karena karakter “a” tidak dapat

dibandingkan dengan karakter manapun.

2. Berikutnya karakter “a” akan dicocokkan dengan karakter pada posisi kedua,

yaitu “b”. Dan sekali lagi terjadi ketidakcocokan, oleh sebab itu nilai

pergeserannya 0.

3. Berikutnya, karakter “a” pada posisi pertama, dan “c” pada posisi ke tiga.

Tidak cocok, maka diberikan nilai 0.

4. Berikutnya, karakter “a” pada posisi pertama dan “c” pada posisi keempat.

Tidak cocok, maka nilai pergeserannya adalah 0.

5. Karakter “a” pada posisi pertama dibandingkan dengan karakter “b” pada

posisi ke lima, tidak cocok. Maka nilai pergeserannya adalah 0 untuk karakter

ini.

6. Di posisi keenam, ada karakter “a”, yang adalah sebuah kecocokan. Oleh

karena itu nilai pergeserannya adalah 1 untuk karakter ini.

7. Untuk langkah berikutnya, tidak langsung dibandingkan karakter pada posisi

kedua dengan karakter di posisi ketujuh, tapi kita akan mulai mengecek

apakah ada pola yang sama, di posisi pertama dengan posisi ke enam. Karakter

pada posisi kedua, adalah “b”, dan di posisi ketujuhjuga adalah karakter “b”.

Kita akan menambahkan nilai sebelumnya dengan 1, untuk karakter di posisi

ketujuh, sehingga nilainya 2.

8. Karakter di posisi ketiga dan karakter pada posisi kedelapan cocok, yaitu “c”.

Maka kita bisa menambahkan nilai sebelumnya dengan 1. Sehingga nilainya 3.

9. Berikutnya, pengecekan karakter di posisi keempat yaitu “c” dan karakter pada

posisi kesembilan yaitu “b”. Tidak cocok. Sebelum mengisi nilai pergeseran

karakter pada posisi kesembilan dengan 0, harus dibandingkan sekali lagi

dengan karakter pada posisi pertama, yaitu “a”. Ternyata didapati tidak cocok.

Oleh sebab itu nilai pergeseran nya adalah 0.

10. Dan terakhir, kita akan melakukan pengecekan untuk karakter pada posisi

pertama dan karakter pada posisi kesepuluh. Dan ternyata tidak cocok. Maka

nilai pergeserannya adalah 0.

Untuk membantu memahami langkah langkah pemberian nilai setiap karakter

dalam kata kunci, berikut sebuah diagram :

Page 15: Studi Perbandingan Implementasi Algoritma Naive Method

Gambar 3 Diagram alur pembuatan tabel pergeseran

pada algoritma Knuth-Morris-Pratt

Berikut adalah sebuah contoh kasus bagaimana metode ini mencocokan

sebuah kata kunci. Kata kunci dan pola kalimat disamakan dengan contoh pada

metode Naive agar bisa terlihat perbedaan dan efisiensinya.

Pola kalimat : SAYA MAU MAKAN BAKSO SAPI

Kata kunci : BAKSO

Berikut perhitungan untuk tabel pergeserannya : Posisi (k) 1 2 3 4 5

Kata kunci(P) B A K S O

Pergeseran (s) 0 0 0 0 0

1. Nilai s pada posisi pertama adalah 0, dan karena karakter “b” pada posisi

pertama dan karakter “a” pada posisi kedua tidak cocok, maka nilai

pergeseran untuk karakter “a” pada posisi kedua juga bernilai 0.

2. Berikutnya karakter “b” pada posisi pertama akan dicocokkan dengan

karakter pada posisi ketiga, yaitu “k”. Dan sekali lagi terjadi ketidakcocokan,

oleh sebab itu nilai pergeserannya 0.

3. Berikutnya karakter “b” pada posisi pertama akan dicocokkan dengan

karakter pada posisi keempat, yaitu “s”. Tidak cocok, oleh sebab itu nilai

pergeserannya 0.

Page 16: Studi Perbandingan Implementasi Algoritma Naive Method

4. Berikutnya karakter “b” pada posisi pertama akan dicocokkan dengan

karakter pada posisi kelima, yaitu “o”. Dan sekali lagi terjadi

ketidakcocokan, oleh sebab itu nilai pergeserannya 0.

Berikut ini adalah langkah langkah pergeseran yang dilakukan oleh algoritma

Knuth-Morris-Pratt berdasarkan tabel pergeseran yang ada.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Di indeks pertama kata kunci, ditemukan ketidakcocokan dengan pola kalimat

(mismatch). Untuk melakukan pergeseran, dilakukan sebuah rumus untuk menentukan

pergeseran :

Besar pergeseran = i - n

i = posisi karakter yang terakhir cocok

n = nilai pergeseran karakter yang terakhir cocok)

Ketidakcocokan terjadi di posisi indeks pertama, maka pergeseran yang dilakukan

adalah sebesar 1 – 0. Yaitu 1 karakter. Pada karakter pertama yang di cocok kan, yaitu

“B” pada katakunci, terjadi mismatch. Posisi karakter “B” adalah 1, dan nilai

pergeserannya adalah 0, jadi besarnya pergeseran yang bisa dilakukan adalah 1

karakter. Dan posisi kata kunci berubah menjadi seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Terjadi ketidakcocokan, dan dilakukan pergeseran sebanyak 1 – 0.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Terjadi ketidakcocokan, dan dilakukan pergeseran sebanyak 1 – 0.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Terjadi ketidakcocokan, dan dilakukan pergeseran sebanyak 1 – 0.

Setelah dilakukan beberapa kali pengulangan dan pergeseran, didapati bahwa

kecocokan terjadi di semua karakter. Maka dinyatakan algoritma ini berhasil

menemukan kata kunci yang diminta oleh pengguna.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Page 17: Studi Perbandingan Implementasi Algoritma Naive Method

Berikut adalah pseudocode untuk mempermudah pengkodean algoritma ini ke dalam

sebuah bahasa pemrograman. Kode Program 2 Pseudocode tabel pergeseran algoritma Knuth-Morris-Pratt

1. Baris 1 – 4 adalah definisi variabel yang akan dipakai dalam metode ini. Di

dalam metode ini, kata kunci akan diubah menjadi arraydua dimensi, yang

berisi karakter dan nilai pergeserannya.

2. Baris 7 – 8 adalah baris dimana pemberian nilai awal pada indeks pertama

kata kunci.

3. Baris 9 – 16 adalah perhitungan nilai pergeseran berdasarkan rumus yang

sudah dijelaskan.

Kode Program 3Pseudocode pergeseran algoritma Knuth-Morris-Pratt

KMP_Pergeseran

KAMUS

1. input m, n : integer,

2. input P : array[0..n-1] of char,

3. input T : array[0..m-1] of char,

4. output ketemu : array[0..m-1] of boolean

5. i, j,next: integer

6. kmpNext : array[0..n] of interger

ALGORITMA

7. preKMP(n, P, kmpNext)

8. i 0

9. while (i<= m-n) do

10. j 0 11. while (j < n and T[i+j] = P[j]) do

12. jj+1 13. endwhile 14. if(j >= n) then

15. ketemu[i] true; 16. endif

17. Next j - kmpNext[j]

18. I i+next 19. endwhile

KMP_TabelPergeseran

KAMUS

1. i,j: integer 2. input katakunci : array[0..n-1] of char, 3. input nilai_pergeseran : integer, 4. input/output TabelKMP : array[0..n] of

integer

ALGORITMA

5. i 0;

6. j TabelKMP [0] -1; 7. while (i < n) 8. while (j > -1 andnot(P[i] = P[j]))

9. j TabelKMP[j];

10. i i+1;

11. j j+1;

12. if (P[i] = P[j])

13. TabelKMP[i] TabelKMP[j];

14. else

15. TabelKMP[i] j;

16. end if

17. end while 18. end while

Page 18: Studi Perbandingan Implementasi Algoritma Naive Method

2.3 Algoritma Boyer-Moore-Hoorspool

Algoritma Boyer-Moore-Hoorspooladalah sebuah bentuk pengembangan dari

algoritma Boyer-Moore. Pada dasarnya, algoritma Boyer-Moore-Hoorspool

menggunakan dasar dasar dan hukum yang sama dengan algoritma pendahulunya,

yaitu Boyer-Moore. Ada tiga aturan dasar yang menjadi intisari dari algorima Boyer-

Moore dan pengembangan nya. Ketiga hukum atau aturan ini adalah :

2.3.1 Aturan “Right to Left Scanning”

Right to Left Scanning Rule adalah sebuah aturan dasar yang mengatur agar

pencarian atau pencocokan dalam algoritma ini selalu dimulai dari karakter paling

akhir dari kata kunci. Berikut ilustrasi nya.

Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13

P X Y X Y Y Z X Y Z X Z Y X

K X Y Z

“P” adalah sebuah rangkaian pola kalimat, sedangkan “K” adalah kata kunci

yang sedang kita cari di dalam pola kalimat. Dengan aturan ini, pencarian kata kunci

akan dilakukan dari karakter paling kanan dari kata kunci, dan bergerak ke kiri,

berbeda dengan algoritma Naive, dan Knuth-Morris-Pratt yang melakukan

pengecekan dari kiri ke kanan. Dalam ilustrasi ini, berarti algoritma Boyer-Moore-

Hoorspool melakukan pengecekan pertama kali pada karakter Z, kemudian jika di

dapati cocok, maka dilanjutkan dengan karakter Y, dan jika di dapati cocok,

kemudian baru dilanjutkan pada karakter terakhir.

2.3.2 Aturan Bad Character

Bad Character Rule adalah sebuah keunggulan untuk melakukan pergeseran

lebih dari satu karakter setiap kali terjadi ketidakcocokan. Prinsip utama dari aturan

ini adalah menentukan besarnya pergeseran dengan cara melewati karakter karakter

dalam kata kunci yang tidak berpotensi cocok.Keadaan yang harus dicapai oleh aturan

ini adalah : kata kunci digeser sampai karakter yang tidak cocok menjadi cocok, atau

kata kunci tersebut digeser sepenuhnya, dan memulai iterasi pengecekan lagi. Berikut

ilustrasi nya dengan kasus yang sama.

Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13

P X Y X Y Y Z X Y Z X Z Y X

K X Y Z

Pengecekan pertama akan dilakukan dari karakter paling kanan dari kata

kunci. Karakter “Z” pada kata kunci akan di bandingkan dengan karakter “X” pada

pola kalimat. Dan ditemukan tidak cocok. Dengan aturan ini, algoritma akan

melakukan pengecekan apakah karakter X pada pola kalimat posisi 3 ada di dalam

kata kunci. Karena ditemukan ada karakter X pada pada kata kunci, maka berdasarkan

aturan ini, dilakukan pergeseran sebanyak 2 kali untuk mencapai kondisi cocok.

Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13

P X Y X Y Y Z X Y Z X Z Y X

Page 19: Studi Perbandingan Implementasi Algoritma Naive Method

K X Y Z

Sama dengan langkah sebelumnya, tetapi dilakukan pergeseran hanya sebesar 1

karakter.

Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13

P X Y X Y Y Z X Y Z X Z Y X

K X Y Z

Dengan posisi karakter seperti ini, maka ditemukan ketidak cocokan antar karakter Y

dan X. Maka dilakukan pergeseran sebanyak panjang kata kunci, karena sudah

mencapai ujung pencarian. sehingga posisi nya menjadi seperti ini.

Posisi 1 2 3 4 5 6 7 8 9 10 11 12 13

P X Y X Y Y Z X Y Z X Z Y X

K X Y Z

Dilakukan pengecekan, dan didapati semua karakter cocok. Kata kunci ditemukan ada

di dalam pola kalimat.

2.3.3 Aturan Good Suffix

Aturan Good Suffix adalah satu aturan yang dipakai di dalam Algoritma Boyer-

Moore yang membuat algoritma ini menjadi semakin akurat. Tujuan dari aturan ini

adalah sama dengan aturan Bad Character, yaitu kata kunci digeser sampai karakter

yang tidak cocok menjadi cocok, atau kata kunci tersebut digeser sepenuhnya, dan

memulai iterasi pengecekan lagi. Saat terjadi mismatch, algoritma ini melihat karakter

yang sudah cocok sebagai acuan untuk melakukan perhitungan dan pergeseran

berikutnya. Untuk mempermudah, berikut ilustrasi nya.

Posi

si

1 2 3 4 5 6 7 8 9 1

0

1

1

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

2

0

2

1

2

2

2

3

P C G T G C C T A C T T A C T T A C T T A C T T

K C T T A C T T A C

Saat pencarian dimulai dari karakter paling kanan, kita mendapati bahwa

posisi 7,8 dan 9 adalah match, tetapi di posisi 6 di dapati mismatch. Dengan kondisi

seperti ini, maka awalan “TAC” pada posisi 7,8, dan 9 memenuhi aturan Good

Suffixdan kita akan sebut sebagai “t”. Oleh sebab itu kita akan melakukan pergeseran

kata kunci hingga menjadi matchdan pola awalan yang sudah ada (t) tidak menjadi

mismatch. Dari kata kunci, terdapat pola “TAC” pada posisi 3, 4, dan 5. Oleh sebab

itu, pergeseran akan dilakukan sampai TAC pada posisi 3,4,5 dari kata kunci sejajar

dengan TAC posisi 7,8, dan 9 pada pola kalimat.

Posi

si

1 2 3 4 5 6 7 8 9 1

0

1

1

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

2

0

2

1

2

2

2

3

P C G T G C C T A C T T A C T T A C T T A C T T

K C T T A C T T A C

Page 20: Studi Perbandingan Implementasi Algoritma Naive Method

Setelah dilakukan pergeseran, maka dilakukan pengecekan lagi, dan di dapati

bahwa pada posisi 7, 8, 9, 10, 11, 12, dan 13 adalah cocok. Tetapi posisi 6 tidak

cocok. Dalam kondisi ini, ada kemungkinan pola “TTAC” posisi 10, 11, 12, 13 pada

kata pola kalimat match dengan “TTAC” posisi 6, 7, 8, 9 pada kata kunci, sehingga

dilakukan pergeseran sebanyak 4 karakter, agar memenuhi kondisi yang diharapkan. Posi

si

1 2 3 4 5 6 7 8 9 1

0

1

1

1

2

1

3

1

4

1

5

1

6

1

7

1

8

1

9

2

0

2

1

2

2

2

3

P C G T G C C T A C T T A C T T A C T T A C T T

K C T T A C T T A C

Setelah dilakukan pergeseran, kata kunci telah ditemukan di dalam pola kalimat.

Algoritma Boyer-Moore-Hoorspool menggunakan aturan aturan yang ada di

dalam algoritma Boyer-Moore, tetapi dalam fase pre-komputasi, algortima ini

membangun sebuah tabel yang akan mempermudah dan menyederhanakan aturan Bad

Character dan Good Suffix. Berikut jalannya algoritma Boyer-Moore-

Hoorspooldengan mengambil sebuah contoh kasus.

Pola Kalimat : SAYA MAU MAKAN BAKSO SAPI

Kata kunci : BAKSO

Dengan algoritma Boyer-Moore-Hoorspool, sebelum kita lakukan pencocokan

karakter dan pergeseran, maka kita harus melakukan pencatatan karakter yang ada di

dalam kata kunci ke dalam sebuah tabel yang disebut dengan tabel pergeseran.

Berikut sebuah diagram yang menjelaskan proses memasukkan setiap karakter

kedalam tabel.

Apakah karakter itu

sudah ada di dalam tabel?

Masukkan kedalam

tabel, index kw + 1Skip, index kw + 1

Index kw <= kw.length-1?

Ya Tidak

Ya Tidak

MULAI

SELESAI, dan

Mulai penghitungan

Gambar 4 Proses memasukkan karakter unique kata kunci ke dalam tabel

Selanjutnya, setelah semua karakter masuk kedalam tabel, dan tidak ada yang

sama, atau sudah unique, maka nilai pergeseran pada tabel ini didapatkan dengan

rumus :

Nilai tertinggi( 1, Panjang kata kunci - 1 – indeks karakter tersebut)

Maka penghitungannya akan dilakukan seperti ini :

Indeks 0 1 2 3 4 5

Karakter B A K S O *

Pergeseran 4 3 2 1 1 5

Untuk karakter "B", indeksnya adalah 0. Penghitungannya adalah :

=>Nilai Tertinggi ( 1, panjang kata kunci - 1 - indeks )

Page 21: Studi Perbandingan Implementasi Algoritma Naive Method

=>Nilai Tertinggi ( 1, 5 - 1 - 0)

=>Nilai Tertinggi ( 1, 4 )

Nilai tertinggi antara 1 dan 4 adalah 4, maka nilai tersebut akan di pakai sebagai nilai

pergeseran karakter "B".

Untuk karakter "A", indeksnya adalah 1, maka penghitungannya:

=>Nilai Tertinggi ( 1, panjang kata kunci - 1 - indeks )

=>Nilai Tertinggi ( 1, 5 - 1 - 1)

=>Nilai Tertnggi ( 1, 3 )

Nilai tertinggi antara 1 dan 3 adalah 3.

Untuk karakter "K", indeksnya adalah 2, maka penghitungannya adalah :

=>Nilai Tertinggi ( 1, panjang kata kunci - 1 - indeks )

=>Nilai Tertinggi ( 1, 5 - 1 - 2)

=>Nilai Tertinggi ( 1, 2 )

Nilai tertinggi antara 1 dan 2 adalah 2, maka nilai pergeserannya adalah 2.

Untuk karakter "S", indeksnya adalah 3, maka penghitungannya adalah :

=>Nilai Tertinggi ( 1, panjang kata kunci - 1 - indeks )

=>Nilai Tertinggi ( 1, 5 - 1 - 3)

=>Nilai Tertinggi ( 1, 1 )

Nilai tertinggi antara 1 dan 1 adalah 1, maka nilai pergeserannya adalah 1.

Untuk karakter "O", indeksnya adalah 4, maka penghitungannya adalah :

=>Nilai Tertinggi ( 1, panjang kata kunci - 1 - indeks )

=>Nilai Tertinggi ( 1, 5 - 1 - 4)

=>Nilai Tertinggi ( 1, 0 )

Nilai tertinggi antara 1 dan 0 adalah 1, maka nilai pergeserannya adalah 1.

Dan ada satu lagi karakter bintang, atau asterisk ( * ) yang ada di tabel

tersebut. Karakter bintang ini mewakili semua karakter yang tidak ada pada kata

kunci. Dengan kata lain, karakter bintang mewakili semua huruf selain huruf B, A, K,

S, dan O. dan nilainya adalah panjang kata kunci. Misalnya ditemukan karakter lain

selain kata kunci, maka dipastikan karakter tersebut itu tidak akan dicocokkan dengan

karakter di dalam tabel, dan akan langsung di geser sebanyak panjang kata

kunci.Berikut diagramnya:

Page 22: Studi Perbandingan Implementasi Algoritma Naive Method

YaTidak

Lakukan Rumus

Tambahkan ke

dalam Tabel

Lakukan Rumus

Perbarui nilai

yang sudah ada

Indeks = panjang katakunci?

YaTidak

Lakukan Rumus

Beri nilai 1

MULAI

SELESAI

Karakter

sudah unique?

Tambahkan karakter bintang

Dengan nilai pergeseran =

panjang kata kunci

Gambar 5 Diagram proses pembuatan tabel

pergeseran pada algoritma Boyer-Moore-Hoorspool

Setelah semua karakter masuk ke dalam tabel, pencocokan dimulai dari indeks

atau karakter terakhir pada kata kunci. Algoritma Boyer-Moore-Horspool pertama

tama akan melakukan pencarian seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Pencocokan pada karakter paling kanan (indeks terakhir) dari kata kunci tidak

cocok dengan pola kalimat. Maka selajutnya akan di cek apakah karakter "spasi" ada di dalam tabel yang sebelumnya dibuat. Dan didapati ternyata tidak ada, maka akan

dilakukan pergeseran secara penuh, sehingga keadaan nya menjadi seperti ini :

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Setelah pergeseran, pengecekan karakter dilakukan lagi. Didapati bahwa karakter

pada indeks terakhir dari kata kunci tidak cocok dengan pola kalimat, dan karakter

“M” tidak ada di dalam tabel. Maka dilakukan pergeseran karakter secara penuh.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Page 23: Studi Perbandingan Implementasi Algoritma Naive Method

Setelah pergeseran, pengecekan karakter dilakukan lagi. Didapati bahwa karakter "O"

tidak cocok dengan pola kalimat (spasi), dan karakter spasi tidak ada di dalam tabel.

Maka dilakukan pergeseran karakter secara penuh.

S A Y A M A U M A K A N B A K S O S A P I

B A K S O

Dengan keadaan seperti ini, maka algoritma ini sudah menemukan letak kata

kunci dalam pola kalimat. Dengan gambaran jalannya algoritma seperti yang sudah

dibahas pada bagian ini, maka sebuah pseudocodebisa di buat untuk mempermudah

penterjemahan logika ke dalam bahasa pemrograman.

Kode Program 4Pseudocode pembuatan tabel pergeseran algoritma Boyer-Moore-Hoorspool

Baris kode ini menjelaskan proses bagaimana tabel yang berisi perhitungan

pergeseran (rightmost table) dibuat.

1. Baris 1 - 3 adalah deklarasi variabel yang digunakan dalam program ini.

2. Pada baris ke 4 - 5, program ini akan memeriksa apakah karakter yang

sedang di tunjuk oleh pointer i adalah karakter yang sudah ada di dalam

tabel, atau belum.

3. Pada baris 7 – 8, jika karakter yag ditunjuk oleh pointer belum ada di dalam

tabel, maka karakter tersebut akan ditambahkan ke dalam tabel atau array

yang sudah di sediakan, dan dilakukan penghitungan rumus pergeseran.

4. Pada baris 10 – 14, jika karakter yang ditunjuk oleh pointer sudah terdapat

dalam tabel, maka karakter tersebut tidak ditambahkan ke dalam tabel,

namun nilai pergeseran nya akan dihitung dari indeks terakhir, dan nilai

yang lama akan di ganti dengan nilai hasil penghitungan yang baru.

BMH_TabelPergeseran

KAMUS

1. katakunci : array [0,..pjg_katakunci-1] of char

2. tabel : array [0,..pjg_katakunci-1] of char

3. i, nilai_pergeseran, pjg_katakunci : integer

ALGORITMA

4. While i <= pjg_katakunci

5. If katakunci[i] = exist in tabel[]

6. Then

7. i = i + 1

8. nilai_pergeseran = pjg_katakunci – 1 – index_katakunci

9. Else

10. If i < pjg_katakunci

11. Then

12. Insert katakunci[i,nilai] to tabel[posisi, nilai]

13. i = i + 1

14. nilai_pergeseran = pjg_katakunci – 1 –

index_katakunci

15. else if i = pjg_katakunci

16. nilai_pergeseran = pjg_katakunci

17. end if

18. end if

19. exit while

Page 24: Studi Perbandingan Implementasi Algoritma Naive Method

5. Pada baris 15 – 16, di jelaskan bahwa jika setelah pointer mencapai akhir

dari array katakunci, maka nilai pergeseran untuk semua karakter selain

karakter yang ada di dalam array katakunci (karakter asterisk atau bintang)

akan diberi nilai sebanyak panjang kata kunci.

Kode Program 5Pseudocode proses pergeseran pada algoritma Boyer-Moore-Hoorspool

Baris program ini menjelaskan alur jalannya perhitungan algoritma ini.

1. Baris 1 – 7 adalah deklarasi variabel yang digunakan dalam program ini

2. Pada baris 8, dijelaskan bahwa perhitungan dimulai dari karakter terakhir

katakunci, dan berjalan karakter per karakter sampai pointer ada di awal kata

kunci.

3. Pada baris 9 – 10, dijelaskan jika karakter terakhir dari katakunci sama dengan

karakter dari pola kalimat yang sedang di tunjuk oleh pointer i, maka

pencarian akan dilanjutkan dengan karakter berikutnya.

4. Pada baris 11 – 14, tapi jika karakter nya tidak sama, maka tabel perhitungan

akan di cek, dan nilai pergeseran akan diambil dari hasil perhitungan pada

tabel.

Dengan demikian pencarian akan menjadi lebih efektif, karena tidak perlu

mencocokan karakter satu demi satu. Tabel ini akan sangat membantu pergeseran.

3. Metode Perancangan Sistem

Dalam pembuatan aplikasi untuk melakukan pembandingan dan penghitungan

besarnya nilai pergeseran dari pencarian string ini, penulis tidak menggunakan

metode atau pendekatan tertentu, hanya menggunakan permodelan saja. Penulis

melakukan pengamatan kebutuhan sendiri, mengkodekan, dan melakukan pengujian

serta analisa sendiri.

Tahap perancangan ini adalah sebuah tahap dimana sebuah sistem akan

digambarkan, dan di jelaskan secara rinci sehingga setiap pemakai atau pengembang

bisa memahami seperti apa jalannya sistem dengan lebih mudah. Alat bantu yang

Algoritma_BMH() KAMUS

1. katakunci : Array[0,..pjg_katakunci-1] of char 2. pola : Array [0,..pjg_pola-1] of char 3. tabel : Array [] of char 4. i, pjg_katakunci : integer 5. Boolean ketemu

ALGORITMA

6. For i = pjg_katakunci ; i-- 7. If katakunci[i] = pola[i] then 8. ketemu true 9. Else 10. ketemu false 11. i pjg_katakunci 12. j j + tabel[i, nilai] 13. end for

Page 25: Studi Perbandingan Implementasi Algoritma Naive Method

digunakan dalam tahap ini adalah Unified Modeling Language, atau UML. UML

adalah bahasa standar yang di gunakan untuk menggambarkan dan memvisualisasi

sebuah proses bisnis, dan memudahkan dokumentasi.

Gambar 6 adalah gambar dari Use Case yang menggambarkan apa yang di

kerjakan oleh pengguna aplikasi ini. Pengguna tidak perlu login untuk menggunakan

aplikasi ini, tinggal mengetikkan kata kunci yang akan dicocokkan dengan data di

dalam basisdata, memilih metode atau algoritma yang akan di gunakan, dan tinggal

menekan tombol untuk memulai pencarian.

Gambar 6 Use Case Aplikasi

Gambar 7 adalah Activity Diagram dari aplikasi ini. Seperti mesin pencari

pada umumnya, tentu hal yang harus dimasukkan pertama kali adalah sebuah kata

kunci.Setelah aplikasi di buka, maka yang pertama harus di lakukan oleh pengguna

adalah memasukkan kata kunci di dalam textbox yang tersedia. Setelah itu pengguna

bisa memilih algoritma pencarian string. Setelah itu, saat di eksekusi, maka yang

dilakukan sistem adalah melakukan penghitungan, dan pencarian sehingga bisa di

lihat hasil penghitungan, dan pencarian yang dilakukan oleh algoritma pencarian

string.

Page 26: Studi Perbandingan Implementasi Algoritma Naive Method

Aplikasi pembandingan algoritma pencarian string

Pengguna SistemP

rose

s B

isn

is A

pli

kas

i

ya

START

Memasukan keyword

Ambil data di

basisdata

Jalankan algoritma

dan perhitungan pegeseran

Tampilkan hasil perhitungan

STOP

tidak

ya

tidak

ya tidak

Apakah katakunci sudah

dimasukkan?

Basisdata terisi?

Ulangi pencarian?

Gambar 7 Activity Diagram Aplikasi

Gambar 8 adalah gambar dari sequence diagram aplikasi ini. Kata kunci yang

di masukkan oleh pengguna ke dalam text box akan di teruskan melalui antarmuka,

dan akan di proses oleh basisdata. Setelah data dalam basisdata berhasil ditarik, maka

perhitungan akan segera dilakukan, dan hasil perhitungan nya akan diteruskan melalui

antarmuka, danpengguna bisa melihat hasil perhitungan dan pergeseran.

Page 27: Studi Perbandingan Implementasi Algoritma Naive Method

Pengguna Antarmuka

memasukkan kata kunci

BasisdataAlgoritma

mengirim kata kunci

menarik data dari basisdata

pengambilan data

mengirim datatable

perhitungan pergeseran

mengirim hasil perhitungan

menampilkan hasil

Gambar 8 Sequence Diagram Aplikasi

4. Hasil dan Pembahasan

Semua data yang di masukkan ke dalam basisdata sebagai pola kalimat

diambil dari 1000 judul skripsi yang terdapat pada koleksi digital perpustakaan

UKSW dan dari berbagai sumber. Dari data data ini, telah dilakukan 400 kali

pengujian dengan 100 kata kunci yang berbeda. Untuk satu kata kunci, dikerjakan

oleh 3 algoritma yang berbeda, dan setiap algoritma menghitung jumlah pergeseran

yang dilakukan oleh algoritma, dan menampilkannya dalam sebuah textbox.

Indikator yang dipakai dalam penelitian ini adalah besarnya angka pergeseran

yang dilakukan oleh setiap algoritma. Dengan menghitung angka pergeseran, kita

akan bisa melihat seberapa besar efisiensi yang dilakukan oleh sebuah algoritma

pencarian string.

Berikut ini adalah antarmuka yang digunakan di dalam aplikasi ini. Pengguna

hanya perlu memasukkankata kunci, dan memilih algoritma apa yang akan digunakan,

kemudian setelah itu pengguna hanya menekan tombol “execute”, maka algoritma

akan mulai mengerjakan penghitungan dan menampilkan hasil nya.

Page 28: Studi Perbandingan Implementasi Algoritma Naive Method

Gambar 9 Antarmuka Aplikasi

Angka efisiensi algoritma Knuth-Morris-Pratt dan Boyer-Moore-Hoorspool

yang di dapatkan dari tabel berikut ini adalah angka yang didapatkan dari

pembandingan besar pergeseran algoritma Knuth-Morris-PrattatauBoyer-Moore-

Hoorspool dibandingkan dengan Naive Method, dan dikalikan 100 persen untuk

mendapatkan angka persentase.

Dari formula ini, selisih pergeseran antara algoritma KMP atau BMH akan

menjadi faktor penentu besarnya efisiensi yang bisa dilakukan algoritma tersebut.

Sebagai ilustrasi, jika dengan metode Naive sebuah pencarian membutuhkan 100 kali

pergeseran, dan dengan metode KMP hanya membutuhkan 50 kali pergeseran, berarti

ada 50 pergeseran yang tidak perlu dilakukan oleh metode KMP dalam pencarian

tersebut. Itu berarti dalam pencarian tersebut, metode KMP dapat melakukan efisiensi

sebanyak (50 / 100) x 100% = 50%. Dengan angka yang didapat di sini, maka kita

bisa melihat bahwa Metode KMP lebih efisien dalam melakukan pencarian kata kunci

tersebut.

Dari 400 kali percobaan yang dilakukan dengan 1000 data di dalam basisdata,

bisa ditarik kesimpulan Algoritma Boyer-Moore-Hoorspool adalah algoritma yang

paling efektif untuk pencarian kata kuncidalam pola kalimat yang lebih dari 1 data.

Dengan pembuatan tabel pergeseran yang lebih baik dari algoritma Knuth-Morris-

Pratt, dan dengan metode pencarian dari indeks terakhir, dari karakter paling kanan

dari kata kunci (Right to LeftRule), maka algoritma ini bisa menemukan kesalahan

lebih cepat dari algoritma lainnya, dan bisa melakukan pergeseran lebih cepat dari

algoritma yang lain. Meski tidak secepat algoritma Boyer-Moore-Hoorspool,

algoritma Knuth-Morris-Pratt masih lebih cepat dari metode Naive, atau Naive

Method, karena sudah memiliki tabel pergeseran.

Tabel 1 Hasil perhitungan efisiensi bagian 1

Total Pergeseran dgn metode Naive 3108.9

Selisih Pergeseran (dibanding dgn Naive)

736.5 2300.1

Efisiensi umum (selisih / jml pergeseran) % 0 23.6 73.9

Selisih Pergeseran KMP / BMH – Pergeseran Naive

Pergeseran Naive x 100%

Page 29: Studi Perbandingan Implementasi Algoritma Naive Method

Dari tabel ini bisa dilihat bahwa efisiensi bisa dilakukan dengan algoritma

yang lebih modern dari pada dengan metode Naive atau tradisional. Efisiensi secara

umum pada algoritma Knuth-Morris-Pratt adalah 23,6%. Sedangkan untuk algoritma

Boyer-Moore-Hoorspool, angkanya lebih baik lagi, yaitu 73,9%. Tabel 2 Hasil perhitungan efisiensi bagian 2

Total Pergeseran dgn metode Naive 1621.3

Selisih Pergeseran (dibanding dgn Naive) 408.2 1176.6

Efisiensi umum (selisih / jml pergeseran) % 0 25.10% 72.50%

Dari tabel bagian kedua ini bisa dilihat efisiensi secara umum pada algoritma

Knuth-Morris-Pratt adalah 25,1%. Sedangkan untuk algoritma Boyer-Moore-

Hoorspool, angkanya 72,5%. Tabel 3 Hasil perhitungan efisiensi bagian 3

Total Pergeseran dgn metode Naive 2189

Selisih Pergeseran (dibanding dgn Naive) 159 1540.8

Efisiensi umum (selisih / jml pergeseran) % 0% 7.20% 70.30%

Dari tabel bagian ketigaini bisa dilihat bahwa efisiensi secara umum pada

algoritma Knuth-Morris-Pratt adalah 7,2%. Sedangkan untuk algoritma Boyer-

Moore-Hoorspool, angkanya 70,3%. Tabel 4 Hasil perhitungan efisiensi bagian 4

Total Pergeseran dgn metode Naive 1190.9

Selisih Pergeseran (dibanding dgn Naive) 56.1 862.4

Efisiensi umum (selisih / jml pergeseran) % 0% 4.70% 72.40%

Dari tabel bagian keempatini bisa dilihat efisiensi secara umum pada algoritma

Knuth-morris-pratt adalah 4,7%. Sedangkan untuk algoritma Boyer-Moore-

Hoorspool, angkanya 72,4%.

Berikut contoh beberapa kata kunci yang efisiensi nya cukup besar, sehingga

bisa dilihat bahwa algoritma Boyer-Moore-Hoorspoollebih efektif dibandingkan

dengan Knuth-morris-pratt. Efisiensi dihitung dengan rumus yang sama, berdasarkan

indikator yang sama yaitu besarnya nilai pergeseran dibanding dengan metode Naive.

Tabel 5 Kata kunci dengan angka efisiensi yang baik

No. Kata Kunci Rata Rata Pergeseran Efisiensi

Naive KMP BMH KMP BMH

1 pemrograman 29 27 5 6.8 82.7

2 sistem 18.3 17.8 7 2.7 61.7

3 algoritma 36.6 34.3 8.8 6.2 75.9

4 aplikasi 15 14.8 4.6 1.3 69.3

5 perusahaan 65.5 64.3 14.6 1.8 77.7

6 file 61.7 61.5 38.7 0.3 37.2

7 gambar 37.6 37 13.6 0.8 63.8

8 sistem keuangan 55 55 7 0 87.2

9 pemberian kredit 24 23 3 4.1 87.5

10 edugame 26 26 8 0 69.2

11 google map 12 12 4 0 66.6

12 visualisasi 6.5 6.5 0 0 100

Page 30: Studi Perbandingan Implementasi Algoritma Naive Method

13 kecerdasan buatan 10 10 2 0 80

Berikut adalah grafik yang bisa di buat berdasarkan hasil perhitungan yang

sudah dilakukan dengan 250 data, 500 data, 750 data dan 1000 data. Hasil yang

tertera pada grafik ini adalah dalam satuan persen, berbanding dengan metode Naive,

atau Naive Method.

Gambar 10 Grafik efisiensi pencarian pada data sebanyak 250, 500, 750 dan 1000

a. Untuk 250 data, terlihat bahwa efisiensi algoritma Knuth-morris-pratt sebesar

23,6%, dan algoritma Boyer-Moore-Hoorspool sebesar 73,9%.

b. Untuk data sebanyak 500, perhitungan efisiensi bagian pertama dan kedua

dijumlahkan, dan dibagi dua untuk mendapatkan angka rata-ratanya. Jadi

untuk algoritma Knuth-morris-pratt, angka efisiensi algoritma yang dicapai

adalah ( 23,3 + 25,1 ) : 2. Yaitu sebesar 24,2%. Sedangkan untuk algoritma

Boyer-Moore-Hoorspool, angka efisiensinya sebesar ( 73,9 + 72,5 ) : 2. Yaitu

sebesar 73,5%

c. Untuk 750 data, perhitungan efisiensi bagian pertama, kedua dan ketiga

dijumlahkan, dan bagi tiga untuk mendapatkan angka rata-ratanya. Jadi untuk

algoritma Knuth-morris-pratt, angka efisiensi yan bisa dicapai adalah ( 23,3 +

25,1 + 7,2 ) : 3. Yaitu sebesar 18,5%. Sedangkan untuk algoritma Boyer-

Moore-Hoorspool, angka efisiensinya sebesar ( 73,9 + 75,5 + 70,3 ) : 3. Yaitu

sebesar 73,2%

d. Untuk 1000 data, perhitungan efisiensi bagian pertama, kedua, ketiga dan ke

empat dijumlahkan, dan dibagi empat untuk mendapatkan angka rata-ratanya.

Jadi untuk algoritma Knuth-morris-pratt, angka efisiensinya adalah (23,3 +

25,1 + 7,2 + 4.7 ) : 4. Yaitu sebesar 15%. Sedangkan untuk algoritma Boyer-

Moore-Hoorspool, angka efisiensinya sebesar (73,9 + 75,5 + 70,3 + 72,4 ) : 4.

Yaitu sebesar 73%

5. Kesimpulan

Berdasarkan tabel hasil percobaan dan tabel efisiensi yang ada, ada

beberapa kesimpulan yang dapat ditarik, yaitu aturan Aturan Bad Character

dan Good Suffix dalam algoritma Boyer-Moore dan pengembangan nya sangat

berpengaruh pada akurasi pencarian yang dilakukan. Dengan kedua tabel ini,

akurasi pencarian akan meningkat, dan pencarianmenjadi jauh lebih teliti,

23.6 24.218.5

15

73.9 73.5 73.2 73

0

10

20

30

40

50

60

70

80

data 250 data 500 data 750 data 1000

KMP

BMH

Page 31: Studi Perbandingan Implementasi Algoritma Naive Method

serta meminimalkan jumlah pergeseran. Panjang sebuah kata kunci dan pola

karakter ganda pada kata kunci tersebut akan sangat mempengaruhi efisiensi

yang dilakukan oleh algoritma Knuth-Morris-Pratt dan algoritma Boyer-

Moore-Hoorspool, karena kedua algoritma ini akan membangun sebuah tabel

perhitungan nilai pergeseran terlebih dahulu. Algoritma Boyer-Moore-

Hoorspool juga didapati lebih efektif dibandingkan dengan metode Naïve, dan

algoritma Knuth-morris-pratt pada saat digunakan pada data yang lebih dari

satu pola kalimat, dalam hal ini sebuah basisdata dengan 1000 record. Dan

yang terakhir, dengan melihat angka efisiensi yang dicapai, maka algoritma

Boyer-Moore-Hoorspool bisa diaplikasikan ke dalam sebuah aplikasi yang

lebih besar lagi cakupannya, seperti basisdata mahasiswa, atau basisdata

perpustakaan.

Berikut beberapa saran yang dapat penulis berikan untuk pengembangan

tulisan ini :

1. Selain menggunakan besarnya pergeseran algoritma sebagai parameter

efisiensi, bisa dilakukan pengkodean dan penghitungan waktu sebagai

salah satu parameter efisiensi.

2. Penulis berikutnya dapat melanjutkan penelitian ini dengan

membandingkan hasil penelitian ini dengan hasil penelitian pada algoritma

pencarian string lainnya.

6. Daftar Pustaka

[1]. Pratama, Satya Fajar. 2008. Pencocokan DNA Kata kunci dengan

algoritma Boyer-Moore. Bandung : Institut Teknologi Bandung

[2]. Aulia, Rama. 2008. Analisis Algoritma Knuth-morris-pratt dan Algoritma

Boyer-Moore-Hoorspool dalam proses pencarian String. Bandung :

Institut Teknologi Bandung

[3]. Hidayattulah, Priyanto. 2014. Visual Basic.Net. Bandung : Informatika

[4]. Kurniawan, Erick. 2011. Cepat Mahir Visual Basic 2010. Yogyakarta :

Andi Offset

[5]. Desy, D., 2005, Mesin pencari, www.total.or.id, diakses Maret 2015

[6]. Usman, A., 2009, Pengertian Prototipe, http://arifust.web.id, diakses

Maret 2015