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
31
Embed
Studi Perbandingan Implementasi Algoritma Naive Method ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
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
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
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 )
=>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:
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
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
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
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
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.
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.
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.
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%
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