ISSN 2339-210X
PERBANDINGAN ALGORITMA KNUTH-MORRIS-PRATT DAN BOYER
MOORE DENGAN METODE PERBANDINGAN EKSPONENSIAL PADA
APLIKASI KAMUS BAHASA INDONESIA – JERMAN BERBASIS ANDROID
Mita Fazira
Prodi Teknik Informatika STMIK Budi Darma, Medan, Indonesia Jl. Sisingamangaraja No. 338, Medan, Indonesia
Abstrak
Algoritma pencocokan string pencarian kata pada Kamus Bahasa Asing dengan menggunakan Algoritma pencocokan kata. Penelitian ini untuk mengetahui Algoritma yang lebih baik diantara Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore untuk proses pencocokan. Pencocokan kata merupakan bagian penting dari sebuah proses pencarian kata dalam sebuah dokumen. Algoritma pencocokan kata yang digunakan dalam penelitian ini adalah Algoritma Knuth Morris Pratt dan Boyer Moore. Algoritma Knuth Morris Pratt melakukan perbandingan teks dan pola dimulai dari kiri ke kanan sedangkan Algoritma Boyer Moore melakukan perbandingan teks dan pola dimulai dari kanan ke kiri, tetapi pergeseran window tetap dari kiri ke kanan. Hasil dari penelitian ini menunjukkan bahwa Algoritma KnuthMorris-Pratt lebih cepat dibandingkan Algoritma Boyer-Moore untuk proses pencarian kata. Untuk mendapatkan hasil yang terbaik dalam perbandingan dari kedua algortima pada penelitian ini dilakukan untuk mengetahui algoritma yang mana proses pencarian dan cara kerjanya lebih cepat dengan memanfaatkan metode perbandingan eksponensial (MPE) sebagai metode pengambilan keputusan dalam menentukan hasil perbandingannya.
Kata Kunci : String Matching, Algoritma Knuth-Morris-Pratt, Algoritma Boyer-Moore, Metode Perbandingan Eksponensial, Kamus,
Android.
I. PENDAHULUAN
Kehidupan manusia pada masa ini tidak terlepas dari teknologi. Di zaman smartphone menjadi kebutuhan bagi setiap orang. Namun seiring dengan perkembangan waktu, smartphone dirancang dengan menggunakan teknologi touch screen guna memudahkan penggunaanya. Sistem operasi yang mendominasi pada
smartphone pada zaman ini adalah Android. Aplikasi
kamus didalam Smartphone tidak mencari kata secara manual, tetapi adanya fasilitas pencarian pada aplikasi kamus tersebut mempermudah user mendapatkan kata yang ingin dicarinya. Dengan memanfaatkan salah satu dari Algoritma string matching seperti Algoritma Knuth
Morris Pratt dan Boyer Moore, maka mempermudah dan
mempercepat pencarian kata dalam kamus.
Algoritma Knuth-Morris-Pratt dikembangkan oleh D.E. Knuth, bersama-sama dengan J.H. Morris dan V.R. Pratt [1]. Dengan algoritma Knuth-MorrisPratt waktu pencarian dalam pencocokan pattern dan teks dapat berkurang dikarenakan algoritma ini melakukan sejumlah pergeseran lebih jauh sesuai dengan informasi ketidakcocokan string antara teks dan pattern. Algoritma Knuth-Morris-Pratt melakukan pencarian
string dari arah kiri ke kanan pada teks. Algortima
tersebut dikembangkan oleh Bob Boyer dan J.Stroher
Moorne pada tahun 1977. Ide dibalik algoritma ini
adalah bahwa dengan memulai pencocokan karakter dari kanan, dan bukan kiri, maka akan lebih banyak informasi yang didapat.
Dalam perancangannya aplikasi kamus Indonesia-Jerman membutuhkan algoritma pencocokan string (String Matching), yaitu algoritma yang dapat mencocokkan suatu kata dengan kata yang lain. Algoritma Knuth-MorrisPratt dan Algoritma
Boyer-Moore merupakan bagian dari algoritma String Matching
yang memiliki cara kerja berbeda, sehingga jika diterapkan dalam pencarian aplikasi kamus Indonesia-Jerman akan membuat kecepatan dalam pencariannya
berbeda, mengakibatkan kecepatan pencarian informasi juga menjadi berbeda. Untuk dapat menganalisa perbandingan kedua algortima tersebut dalam pencarian kamus Indonesia-Jerman.
II. TEORITIS
A. Algoritma Knuth-Morris-Pratt
Algoritma pencocokan string (pattern) yang mempunyai kinerja bagus adalah Knuth Morris-Pratt (KMP) dan Algoritma Boyer-Moore. Kedua algoritma ini popular digunakan pada editor teks (menu find), search engine, analisis citra,dan sebagainya. Search engine atau mesin pencari adalah program komputer yang dirancang untuk membantu seseorang menemukan file-file yang disimpan dalam komputer, misalnya dalam sebuah server umum di
web atau dalam komputer sendiri. Mesin pencari
memungkinkan kita untuk meminta content media dengan kriteria yang spesifik (biasanya yang berisi kata atau frasa yang kita tentukan) dan memperoleh daftar file yang memenuhi kriteria tersebut. Mesin pencari biasanya menggunakan 3 indeks yang sudah dibuat sebelumnya dan dimutakhirkan secara teratur untuk mencari file setelah pengguna memasukkan kriteria pencarian.
Algoritma Knuth Morris Pratt (KMP)
dikembangkan oleh D. E. Knuth, bersama dengan J. H. Morris dan V. R. Pratt. Untuk pencarian string dengan menggunakan algoritma Knuth Morris Pratt, setiap kali ditemukan ketidakcocokan pattern dengan teks, maka pattern akan digeser satu karakter ke kanan. Sedangkan pada algoritma KMP, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran.
Menurut Sara Basee dalam bukunya yang berjudul “Computer Algorithm Third Edition`: Solution
to Selected Exercise”, penjelan singkat mengenai
algoritma Morris-Pratt yaitu Algoritma
Knuth-Morris-Pratt dengan cara menghitung fungsi pinggiran
ISSN 2339-210X perbandingan antara pola dan elemen pertama dari
kalimat, jika tidak sesuai, maka perbandingan tidak dilakukan pada elemen kedua, namun tergantung dari nilai yang akan dikeluarkan oleh fungsi pinggiran tersebut.
Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokan
string [5] :
1. Masukan Query kata yang akan dicari.
Dengan pemisahan P=Pattern atau pola susunan kata yang dijadikan sebagai contoh atau pola teks yang akan dicari
T=Teks atau judul dokumen
2. Algoritma Knuth-Morris-Pratt mulai mencocokan
pattern atau pola susunan kata yang dijadikan sebagai
contoh pada awal teks.
3. Dari kiri kekanan, algoritma ini akan mencocokan karakter per karakter pattern atau pola susunan kata yang dijadikan sebagai contoh dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi:
a. Karakter di pattern atau pola susunan kata yang dijadikan sebagai contoh dan diteks yang dibandingkan tidak cocok(mismatch).
b. Semua karakter di pattern atau pola susunan kata yang dijadikan sebagai contoh cocok. Kemudian algoritma akan memberitahukan penemuan diposisi ini.
4. Algoritma kemudian menggeser pattern atau pola susunan kata yang dijadikan sebagai contoh berdasarkan table next, lalu mengulangi langkah no. 2 sampai pattern atau pola susunan kata yang dijadikan sebagai contoh berada diujung teks.
B. Algoritma Boyer Moore
Menurut Edward Rompah pada artikelnya yang membahas tentang algoritma Boyer-Moore, algoritma
Boyer-Moore dipublikasikan oleh Robert S. Boyer, dan
J. Strother Moore pada tahun1977. Ide utama dari algoritma ini adalah dengan melakukan pencocokan dari paling kanan string yang dicari. Dengan menggunakan algoritma ini, secara rata-rata prosespencarian akan lebih cepat dibandingkan dengan proses pencarian lainnya. Ide dibalik algoritma ini adalah bahwa dengan memulai pencocokan karakter dari kanan, dan bukan dari kiri, maka akan lebih banyak informasi yang didapat [6]. Algortima Boyer Moore mempunyai 4 konsep dasar dalam melakukan pencarin dalam string, yaitu : 1. Preprocessing
2. Right-To-Left-Scan
3. Bad-Characte-Rule
4. Good-Suffix-Rule
Preprocessing dari algoritma Boyer Moore
terdiri dari bad-character preprocessing dan good-suffix
preprocessing. Prinsip dasar yang pertama dari algortima Boyer Moore adalah melakukan perbandingan antara pattern yang dicari dalam teks. Perbandingan pattern
dalam teks dilakukan dari arah kanan ke kiri. Perbandingan dimulai dengan membandingkan antara karakter paling kanan dalam pattern dengan teks. Jika terjadi kecocokan, maka perbandingan akan dilanjutkan dengan karakter yang disebelah kiri dari yang
dibandingakan sampai kekarakter pertam dalam pattern. Jika terjadi ketidakcocokan maka akan dilakukan pergeseran yang ditentukan oleh 2 fungsi pergeseran yaitu bad character shift dan good suffix shift. Aturan dari bad character shift dibutuhkan untuk menghindari pengulangan perbandingan yang gagal dari suatu karakter dalam teks dengan pattern. Aturan dari good
suffix shift dibutuhkan untuk menangani kasus yang
didalamnya terdapat pengulangan karakter pada pattern . Menurut Christabella Chiquita B, 2012; langkah algortima Boyer Moore :
1. Buat table pergeseran yang dicari (P) dengan pendekatan Match Heuristic (MH) dan Occuerence
Heuristic (OH), untuk menentukan jumlah
pergeseran yang akan dilakukan jika mendapat karakter tidak cocok pada proses pencocokan dengan string pada teks(S).
2. Jika dalam proses perbandingan terjadi ketidakcocokan antara pasangan karakter pada P dan karakter pada S, pergeseran dilakukan dengan memilih salah satu nilai pergeseran dari dua tabel analisa pattern yang memiliki nilai pergeseran paling besar.
3. Dua kemungkinan penyelesaikan dalam melakukan pergerseran P, jika sebelumnya belum ada karakter yang cocok adalah dengan melihat nilai pergeseran hanya pada tabel Occuerence Heuristic : jika karakter tidak cocok atau tidak ada pada P maka pergeseran adalah sebanyak jumlah karakter pada P. Dan jika karakter yang tidak cocok ada pada P, maka banyaknya pergeseran tergantung dari nilai pada tabel.
4. Jika karakter pada teks yang sedang dibandingkan cocok dengan karakter pada P, maka posisi karakter pada P dan S diturunkan sebanyak 1 posisi, kemudian lanjutkan dengan pencocokan pada posisi tersebut dan seterunya. Jika kemudian terjadi ketidakcocokan pada P dan S, maka pilih nilai pergeseran terbesar dari dua tabel analisa pattern yaitu nilai dari tabel Match Heuristik dan nilai tabel
Occurence Heuristik dikurangi dengan jumlah
karakter yang telah cocok.
5. Jika semua karakter telah cocok, artinya P telah dtemukan dalam S, selanjutnya geser Pattern sebesar 1 karakter dan lanjutkan sampai akhir
patterm S.
Secara sistematis, langkah-langkah yang dilakuakn algoritma Boyer-Moore pada saat mencocokan
string adalah:
1. Algoritma Boyer-Moore mulai mencocokan pattern pada awal teks.
2. Dari kanan ke kiri, algoritma ini akan mencocokan karakter per karakter pattern dengan karakter pada teks yang bersesuain, sampai salah satu kondisi berikut dipenuhi:
a. Di pattern dan teks yang dibandingkan tidak cocok (mismatch).
b. Semua karakter di pattern cocok. Algoritma akan memberitahuan penemuan di posisi ini. c. Algoritma kemudian menggeser pattern dengan
memaksimalkan nilai penggeseran good-suffix dan penggeseran bad-character, lalu
ISSN 2339-210X mengulangi langkah 2 sampai pattern berada di
ujung teks [7].
III. ANALISA
A. Analisa Logika Algoritma Knutth Morrish-Pratt
Analisa algoritma Knuth-Morris-Pratt yang digunakan untuk melakukan pencocokan string yang telah dicari. Setelah menentukan algoritma yang dipakai untuk memecahkan masalah maka langkah selanjutnya, analisis running time algoritma knuth-Morris-Prattt secara keseluruhan terlihat jelas bahwa interval time pola pertama lebih lama, hal ini disebabkan karena pada saat running time awal akan melakukan proses pengecekan dan penyimpanan informasi semua posisi karakter pada rangkaian sebelum digunakan oleh pola lain. Analisis dilakukan tanpa memperhitungkan posisi urutan masing-masing pola.
Contoh penggunaan algortima Knuth Morris Pratt Dalam melakukan pencarian dalam teks :
Teks (S) : KAMUS INDONESIA JERMAN Pattern (P) : NESIA
Tabel 1. Percobaan 1 Knuth-Morris-Pratt
K A M U S I N D O N E S I A J E R M A N N E S I A 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
Keterangan : Karakter N dengan indeks ke-1 pertama pada pattern tidak cocok dengan karakter K pada teks, maka pergeseran dimajukan 1 langkah ke kanan menuju indeks berikutnya.
Tabel 2. Percobaan 2 Knuth-Morris-Pratt
K A M U S I N D O N E S I A J E R M A N N E S I A 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 Keterangan : Karakter N dengan indeks ke-2 pada pattern tidak cocok dengan karakter A pada teks, maka pergeseran dimajukan 1 langkah ke kanan menuju indeks berikutnya.
Tabel 3. Percobaan 10 Knuth-Morris-Pratt
K A M U S I N D O N E S I A J E R M A N N E S I A 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 Keterangan : Karakter N dengan indeks ke-10 pada
pattern tidak cocok dengan O pada teks, namun pattern
yang dicari belum ditemukan, maka pergeseran dimajukan 1 langkah ke kanan menuju indeks berikutnya.
Tabel 4. Percobaan 11 Knuth-Morris-Pratt
K A M U S I N D O N E S I A J E R M A N N E S I A 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
Keterangan : Karakter N dengan indeks ke-11 sampai dengan karakter A pada pattern dengan indeks ke-15 cocok dengan karakter pada teks, maka pattern telah ditemukan dan proses pencarian pattern berhenti dan tidak ada lagi pergeseran ke indeks berikutnya.
B. Analisa Logika Algoritma Boyer-Moore
Algoritma Boyer-Moore adalah algoritma string
matching yang paling efisien dibandingkan algoritma string matching lainnya. Sebelum melakukan pencarian string, algoritma melakukan proses terlebih dahulu pada pattern, bukan pada string pada teks tempat pencarian.
Algoritma ini melakukan pencocokan karakter yang
dimulai dari kanan ke kiri. Karena sifatnya yang sangat efisien, Boyer-Moore memiliki banyak variasi penyederhanaannya.
Contoh penggunaan algortima Boyer Moore Dalam melakukan pencarian dalam teks :
Teks (S) : KAMUS INDONESIA JERMAN Pattern (P) : NESIA
Tahapan pencarian pattern (P) dalam Teks (S)
Tabel 5. Analisa Penentuan Nilai OH dan MH
Pattern N E S I A
Occurrence Heuristic (OH) 4 3 2 1 0
Math Heuristic (MH) 5 5 5 5 1
Tabel 6. Percobaan 1 Boyer Moore
K A M U S I N D O N E S I A J E R M A N N E S I A 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
Keterangan : Pada pergeseran Ke-1 karakter “A” pada
pattern tidak cocok dengan karakter “S” pada teks, maka
pergeseran selanjutnya berdasarkan nilai dari tabel OH. Pada tabel OH karakter S terdapat pada tabel, sehingga pergeseran selajutnya adalah sebanyak jumlah karakter
“S” pada tabel OH pada yaitu 2.
Tabel 7. Percobaan 2 Boyer-Moore
K A M U S I N D O N E S I A J E R M A N N E S I A 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
Keterangan : Pada pergeseran Ke-2 karakter “A” pada
pattern tidak cocok dengan karakter “O” pada teks, maka
pergeseran selanjutnya berdasarkan nilai dari tabel OH. Pada tabel OH karakter O tidak terdapat pada tabel, sehingga pergeseran selajutnya adalah sebanyak jumlah karakter “A” pada tabel OH pada yaitu 5.
Tabel 8. Percobaan 3 Boyer-Moore
K A M U S I N D O N E S I A J E R M A N N E S I A 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
Keterangan : Pada pergeseran Ke-3 karakter “N” pada
pattern cocok dengan karakter “N” pada teks, maka
pergeseran selanjutnya dimundurkan satu langkah. Pada pergeseran selanjutnya dilakukan sampai pada pergeseran ke-11 karakter “N” pada pattern dengan karakter “N” pada text cocok.
IV. Implementasi
Kamus arti Indonesia-jerman yang telah dirancang merupakan aplikasi berbasis Android, dimana kamus arti Indonesia-jerman tersebut dapat dijalankan pada
hanndphone berbasis android. Aplikasi kamus Indonesia-jerman mengunakan bahasa pemrograman
Java, dimana untuk mengetikan listing programnya
penulis menggunakan editor eclipse. Aplikasi kamus Indonesia-jerman
menggunakan algoritma Knuth-Morris-Pratt dan
algoritma Boyer-Moore untuk proses pencarian arti kata,
dimana algoritma Knuth-Morris-Pratt dan algoritma
Boyer-Moore berguna bagi para pemakai yang
menginginkan cara cepat untuk mencari kata dalam kamus istilah yang ada dalam handphone dengan sistem operasi android.
ISSN 2339-210X
Gambar 1. Tampilan menu utama
2. Form Pencarian Knuth-Morris-Pratt
Gambar 2. Tampilan Pencarian Pada KMP
Gambar 3. Tampilan Time Pencarian Pada KMP
3. Form Pencarian Boyer-Moore (BM)
Gambar 4. Tampilan Pencarian Pada Boyer-Moore (BM)
Gambar 5. Tampilan Time Pencarian Pada BM
V. KESIMPULAN
Berdasarkan hasil penelitian tentang analisa perbandingan Algoritma Knuth Morris Pratt (KMP)dan AlgoritmaBoyer-Moore(BM) dengan menggunakan Metode Perbandingan Eksponensial (MPE) maka penulis menarik beberapa kesimpulan sebagai berikut :
1. Untuk dapat menganalisa Algoritma Knuth
Morris Pratt (KMP) dan Algoritma
BoyerMoore(BM), nilai perbandingannya dihitung
dengan menggunakan Metode Perbandingan Eksponensial (MPE). Dalam perhitungannya yang menjadi kriteria perbandingan dari MPE adalah jumlah percobaan sampai terjadi kecocokan pattern pada teks, setiap nilai yang didapat dari setiap kriteria kemudian di pangkatkan dengan bobot dari setiap kriteria sehingga mendapat nilai tetap yang menentukan algoritma mana yang menjadi algoritma tercepat.
ISSN 2339-210X 2. Dengan adanya total nilai dari Metode
Perbandingan Eksponesal (MPE) yang dilakukan pada penelitian ini maka terbukti bahwa Algoritma Boyer Moore merupakan Algoritma yang tercepat dalam melakukan perencarian.
3. Cara kerja pencarian Algoritma Knuth-MorrisPratt lebih detail cara kerjanya dibandingkan Algoritma
Boyer-Moore.
REFERENCES
[1] Rinaldi Munir, Algoritma dan Pemograman Dalam Bahasa Pascal
dan C, Informatika, Ed. Bandung, 2007.
[2] Andi Juansyah, "pembangunan aplikasi child tracker berbasis
assisted-global positioning system(A-GPS) dengan platform android," jurnal ilmiah komputer informatika, p. 2, 2015.
[3] Parno and Nandang Rahmansyah Dharmayant, "Aplikasi mobile
kamus istilah psikologi berbasis android 2.2," Proceeding PESAT, Oktober 2011.
[4] Pemrograman Aplikasi Mobile Smartphone dan Tablet PC
Berbasis Android Nazruddin Safaat H, Pemrograman Aplikasi
Mobile Smartphone dan Tablet PC Berbasis Android. Bandung, Indonesia: Informatika, 2015.