Institutional Repository | Satya Wacana Christian University: Studi Perbandingan 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

Studi Perbandingan Implementasi Algoritma Naive Method, Knuth-Morris-Pratt, dan Boyer-Moore-Hoorspool pada Multi Record Database

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 : 2) kurniawan.yoseph@gmail.com , sriyulianto@gmail.com

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

Studi Perbandingan Implementasi Algoritma Naive Method, Knuth-Morris-Pratt, dan Boyer-Moore-Hoorspool pada Multi Record Database

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 : 2) kurniawan.yoseph@gmail.com , sriyulianto@gmail.com

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

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 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

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 Prata ma 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 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

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

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

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

Terjadi ketidakcocokan lagi, sehingga harus dilakukan pergeseran lagi, sehingga terjadi kondisi seperti ini : S A Y A

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

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 :

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.

Kode Program 1 Pseudocode algoritma Naive

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

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

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 :

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)

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.

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.

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 :

Terjadi ketidakcocokan, dan dilakukan pergeseran sebanyak 1 – 0.

Terjadi ketidakcocokan, dan dilakukan pergeseran sebanyak 1 – 0.

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

Berikut adalah pseudocode untuk mempermudah pengkodean algoritma ini ke dalam sebuah bahasa pemrograman. Kode Program 2 Pseudocode tabel pergeseran algoritma Knuth-Morris-Pratt

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

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. jj+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

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

XK

“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

XK

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

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

XK

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

XK

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 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 si

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

Suffix da n 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 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 si

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 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 si

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- Hoorspool dengan 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?

Skip, index kw + 1

Masukkan kedalam

tabel, index kw + 1

Ya

Tidak

Index kw <= kw.length-1?

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

* Pergeseran

Untuk karakter "B", indeksnya adalah 0. Penghitungannya adalah : =>Nilai Tertinggi ( 1, panjang kata kunci - 1 - indeks )

=>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: 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:

Ya

Lakukan Rumus

Lakukan Rumus

Tambahkan ke

Perbarui nilai

dalam Tabel

yang sudah ada

Tidak

Ya

Indeks = panjang katakunci?

Lakukan Rumus

Beri nilai 1

Tambahkan karakter bintang

Dengan nilai pergeseran = panjang kata kunci

SELESAI

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 :

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 :

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

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.

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

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

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.

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

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

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 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

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.

Aplikasi pembandingan algoritma pencarian string

Memasukan keyword

tidak

Apakah katakunci sudah dimasukkan?

ya

Ambil data di

basisdata

tidak

Basisdata terisi?

ya

Jalankan algoritma dan perhitungan pegeseran

Tampilkan hasil perhitungan

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.

memasukkan kata kunci

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.

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.

Selisih Pergeseran KMP / BMH – Pergeseran Naive

Pergeseran Naive

x 100%

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

Selisih Pergeseran (dibanding dgn Naive)

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

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

1176.6 Efisiensi umum (selisih / jml pergeseran) %

Selisih Pergeseran (dibanding dgn Naive)

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

1540.8 Efisiensi umum (selisih / jml pergeseran) %

Selisih Pergeseran (dibanding dgn Naive)

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

Selisih Pergeseran (dibanding dgn Naive) 56.1 862.4 Efisiensi umum (selisih / jml pergeseran) %

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

Rata Rata Pergeseran Efisiensi No.

Kata Kunci

37.6 37 13.6 0.8 63.8 8 sistem keuangan

7 gambar

55 55 7 0 87.2 9 pemberian kredit

11 google map

12 visualisasi

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.

KMP 30 23.6 24.2 BMH

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

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

Dokumen yang terkait

BAB II KAJIAN PUSTAKA 2.1. Kajian Teori 2.1.1 Hakikat Hasil Belajar 2.1.1.1 Pengertian Hakekat Belajar - Institutional Repository | Satya Wacana Christian University: Upaya Meningkatkan Hasil Belajar IPA Melalui Penerapan Model Pembelajaran Kooperatif Tip

0 0 26

BAB III METODE PENELITIAN 3.1. Setting Penelitian - Institutional Repository | Satya Wacana Christian University: Upaya Meningkatkan Hasil Belajar IPA Melalui Penerapan Model Pembelajaran Kooperatif Tipe Jigsaw dengan Media Torso pada Siswa Kelas 4 SD Neg

0 0 21

Institutional Repository | Satya Wacana Christian University: Upaya Meningkatkan Hasil Belajar IPA Melalui Penerapan Model Pembelajaran Kooperatif Tipe Jigsaw dengan Media Torso pada Siswa Kelas 4 SD Negeri Boto Kecamatan Jaken Kabupaten Pati Tahun Pelaja

0 0 37

Institutional Repository | Satya Wacana Christian University: Upaya Meningkatkan Hasil Belajar IPA Melalui Penerapan Model Pembelajaran Kooperatif Tipe Jigsaw dengan Media Torso pada Siswa Kelas 4 SD Negeri Boto Kecamatan Jaken Kabupaten Pati Tahun Pelaja

0 0 62

Institutional Repository | Satya Wacana Christian University: Penerapan Pembelajaran Kooperatif Tipe Take and Give untuk Meningkatkan Proses dan Hasil Belajar IPA pada Siswa Kelas V SDN Sidoharjo Kecamatan Pati Kabupaten Pati Semester I Tahun Pelajaran 20

0 0 6

Institutional Repository | Satya Wacana Christian University: Penerapan Pembelajaran Kooperatif Tipe Take and Give untuk Meningkatkan Proses dan Hasil Belajar IPA pada Siswa Kelas V SDN Sidoharjo Kecamatan Pati Kabupaten Pati Semester I Tahun Pelajaran 20

0 0 18

BAB III METODE PENELITIAN - Institutional Repository | Satya Wacana Christian University: Penerapan Pembelajaran Kooperatif Tipe Take and Give untuk Meningkatkan Proses dan Hasil Belajar IPA pada Siswa Kelas V SDN Sidoharjo Kecamatan Pati Kabupaten Pati S

0 0 32

4.1.1 Tahap Perencanaaan - Institutional Repository | Satya Wacana Christian University: Penerapan Pembelajaran Kooperatif Tipe Take and Give untuk Meningkatkan Proses dan Hasil Belajar IPA pada Siswa Kelas V SDN Sidoharjo Kecamatan Pati Kabupaten Pati Se

0 0 37

Institutional Repository | Satya Wacana Christian University: Penerapan Pembelajaran Kooperatif Tipe Take and Give untuk Meningkatkan Proses dan Hasil Belajar IPA pada Siswa Kelas V SDN Sidoharjo Kecamatan Pati Kabupaten Pati Semester I Tahun Pelajaran 20

0 0 18

Institutional Repository | Satya Wacana Christian University: Penerapan Pembelajaran Kooperatif Tipe Take and Give untuk Meningkatkan Proses dan Hasil Belajar IPA pada Siswa Kelas V SDN Sidoharjo Kecamatan Pati Kabupaten Pati Semester I Tahun Pelajaran 20

0 0 58