ANALISIS PERBANDINGAN ALGORITMA BOYER-MOORE, KNUTHMORRIS-PRATT, DAN RABIN-KARP MENGGUNAKAN METODE PERBANDINGAN EKSPONENSIAL Indra Saputra M. Arief Rahman Jurusan Teknik Informatika STMIK PalComTech Palembang Abstrak Algoritma pencocokan string merupkan komponen dasar yang digunakan dalam implementasi pembuatan perangkat lunak yang terdapat dalam sistem operasi. Saat ini ada sekitar tiga puluh lima jenis algoritma pencocokan string. Banyaknya algoritma pencocokan string tersebut menimbulkan kesulitan bagi seseorang yang ingin membuat aplikasi yang berhubungan dengan algoritma pencocokan string, karena harus memilih algoritma pencocokan string mana yang baik. Oleh sebab itu, penulis melakukan analisis perbandingan terhadap beberapa algoritma pencocokan string yang biasa digunakan, yaitu Algoritma Boyer–Moore, Knuth-Morris-Pratt, dan Rabin-Karp untuk mendapatkan hasil yang terbaik dalam hal kecepatan melakukan pencocokan single pattern dengan akhir teks sehingga hasilnya bisa digunakan sebagai acuan untuk memilih algoritma yang terbaik dengan menggunakan Metode Perbandingan Eksponensial. Hasil yang didapatkan dari penelitian ini adalah bahwa Algoritma Boyer-Moore merupakan algoritma terbaik, selanjutnya Algoritma Knuth-Morris-Pratt, dan Rabin-Karp yang terakhir. Kata kunci : String Matching, Algoritma Boyer-Moore, Algoritma Knuth-Morris-Pratt, Algoritma Rabin-Karp, Metode Perbandingan Eksponensial.
PENDAHULUAN Banyak jenis algoritma pencocokan string yang dapat dipakai untuk saat ini. Dengan banyaknya algoritma yang ada, membuat seseorang akhirnya harus memilih algoritma mana yang dipakai untuk diterapkan pada sebuah mesin pencarian atau aplikasi lainnya yang menggunakan algoritma pencocokan string karena akan mempengaruhi kualitas kinerjanya. Untuk menentukan algoritma pencocokan string mana yang sebaiknya dipakai, seseorang pastilah akan memilih algoritma pencocokan string yang terbaik. Oleh sebab itu perlu adanya analisis perbandingan algoritma pencocokan string untuk menentukan algoritma pencocokan string mana yang terbaik dari sekian banyak algoritma pencocokan string yang ada. Dari sekian banyak algoritma pencocokan string yang ada, beberapa diantaranya yang sering dipakai adalah Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp. Dari ketiga algoritma pencocokan string tersebut, penulis berusaha untuk menganalisis perbandingan algoritma mana yang terbaik sehingga hasilnya bisa dijadikan acuan untuk mempermudah seseorang dalam memilih algoritma pencocokan string. Untuk menganalisis perbandingan algoritma pencocokan string Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp diperlukannya suatu metode, dalam hal ini penulis menggunakan Metode Perbandingan Eksponensial.
1
LANDASAN TEORI Algoritma Menurut Sjukani (2010:1), algoritma merupakan suatu alur pikiran dalam menyelesaikan suatu pekerjaan yang dituangkan dalam bentuk tertulis yang dapat dimengerti oleh orang lain, tersusun secara logis, dan dapat diselesaikan dengan benar. String Menurut Kodir (2012:56), string adalah untaian karakter dengan panjang tertentu yang dapat diperlakukan sebagai tipe dasar dalam pemrograman yang disusun dari elemen-elemen bertipe karakter. Algoritma Pencocokan String (String Matching) Menurut Munir (2005:56), algoritma pencocokan string merupakan algoritma untuk melakukan pencarian string yang disebut pattern (n) terhadap string yang disebut teks (m) dengan syarat n < m. Preprocessing Menurut Surahman (2013:2), preprocessing merupakan tahapan melakukan analisis kebenaran arti dan kebenaran susunan untuk mempersiapkan teks menjadi data yang akan mengalami pengolahan lebih lanjut. Algoritma Boyer-Moore Menurut Pratama (2008:1), Algoritma Boyer-Moore merupakan algoritma yang melakukan pencocokan string mulai dari kanan (belakang) sehingga pergerakkan pattern melompat lebih jauh untuk menghindari perbandingan karakter pada string yang diperkirakan gagal. Algoritma Knuth-Morris-Pratt Menurut Munir (2006:25), Algoritma Knuth-Morris-Pratt adalah algoritma yang melakukan proses awal (preprocessing) terhadap pattern dengan menghitung fungsi pinggiran. Fungsi Pinggiran (Border Function) Menurut Munir (2007:28), fungsi pinggiran adalah fungsi yang mengindikasikan pergesran pattern terbesar yang mungkin dilakukan dengan menggunakan perbandingan yang dibentuk sebelum pencarian string. Algoritma Rabin-Karp Menurut Mutiara (2007:3), Algoritma Rabin-Karp merupakan algoritma perbandingan antar pola karakter dan teks dari kiri ke kanan dengan memanfaatkan hash function.
2
Hash Menurut Baedlowi (2005:2), hash merupakan sebuah fungsi yang mengubah setiap string menjadi bilangan yang menjadi sebuah nilai khas dari string tersebut. Metode Perbandingan Eksponensial Menurut Marimin (2005:20), Metode Perbandingan Eksponensial merupakan salah satu metode untuk menentukan urutan prioritas alternatif keputusan dengan kriteria jamak yang memiliki prosedur yaitu menyusun alternatif-alternatif, menentukan kriteria perbandingan, menentukan tingkat kepentingan dari setiap kriteria keputusan, melakukan penilaian terhadap semua alternatif pada setiap kriteria, menghitung skor atau nilai total setiap alternatif, dan menentukan urutan prioritas keputusan.
HASIL DAN PEMBAHASAN Dalam melakukan penelitian ini disiapkan satu studi kasus yang sama, yaitu penyelesaian pencocokan single pattern terhadap teks yang ada dengan menggunakan ketiga algoritma tersebut, Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp. Dengan begitu, peneliti bisa mendapatkan kriteria yang sama dari hasil masing-masing penyelesaian ketiga algoritma tersebut untuk selanjutnya hasil berupa nilai yang diperoleh akan dihitung menggunakan Metode Perbandingan Eksponensial. Peneliti menyiapkan studi kasus yaitu misalkan pattern yang dicari adalah gcagagag yang memiliki panjang 8 karakter dan teksnya adalah gcatcgcagagagtatacagtacg dengan panjang 24 karakter. Dari studi kasus tersebut masing-masing akan diselesaikan dengan tiga algoritma yaitu Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp. Cara Kerja Algoritma Boyer Moore Untuk melakukan pencarian dengan Algoritma Boyer-Moore maka dicari terlebih dahulu nilai dari pre-Boyer-Moore Bad Character (PreBmBc) yang hasilnya dimasukkan ke tabel BmBc berikut : Tabel 1. BmBc a
c
g
t
1
6
2
8
Setelah didapatkan hasil BmBc, kita lakukan prosedur pre-Boyer-Moore Good Suffix (BmGs), dari perhitungan tersebut hasilnya dimasukkan pada tabel preBmGs berikut ini : Tabel 2. PreBmGs 0
1
2
3
4
5
6
7
g
c
a
g
a
g
a
g
3
1
0
0
2
0
4
0
8
Selanjutnya dilakukan pencarian nilai Boyer-Moore Good Suffix (BmGs), hasil dari perhitungan BmGs dimasukkan ke dalam tabel seperti di bawah ini : Tabel 3. BmGs 0
1
2
3
4
5
6
7
g
c
a
g
a
g
a
g
7
7
7
2
7
4
7
1
Setelah ditemukan nilai BmBc dan BmGs, maka siap dilakukan percobaan dari studi kasus yang ada. Percobaan pertama dilakukan peletakkan pattern pada teks dari kiri ke kanan dan dilakukan pencocokan dari kanan ke kiri. Tabel 4. Percobaan 1 Boyer-Moore g
c
a
t
c
g
c
a
.
.
.
.
.
.
.
g
g
a
g
a
g
t
a
t
a
c
a
g
t
a
c
g
Shift by 1 (bmGs[7]=bmBc[a]-8+8) Untuk yang pertama kita akan mengecek ketidakcocokan terlebih dahulu yaitu karakter terakhir atau paling kanan dari pattern yaitu g tidak cocok dengan huruf a pada teks seperti tabel di diatas, jika ada ketidakcocokan maka kita lakukan perhitungan seperti rumus diatas yaitu bmBc[karakter teks yang dibandingkan dengan posisi karakter pattern terkanan yang tidak cocok] – jumlah karakter pattern + karakter pattern terkanan yang tidak cocok. Maka akan menjadi bmBc[a] – 8 + 8. Masukkan nilai a sesuai tabel BmBc, maka bmBc = 1 – 8 + 8 = 1. Kita bandingkan dengan nilai bmGs, itu artinya terdapat 7 karakter yang tidak perlu dibandingkan lagi sehingga nilai bmGs[7] sesuai tabel BmGs nilai 7 adalah 1 maka hasil bmGs = bmBc = 1 yang artinya shift by 1 sama dengan dilakukannya pergeseran sebanyak satu kali. Tabel 5. Percobaan 2 Boyer-Moore g
c
a
t
c
g
c
a
g
.
.
.
.
.
g
A
G
a
g
a
g
t
a
t
a
c
a
g
t
a
c
g
Shift by 4 (bmGs[5]=bmBc[c]-8+6) Sama seperti perhitungan pada percobaan pertama yaitu bmGs[5] = bmBc[c] – 8 + 6. Masukan nilai dari tabel BmBc dan BmGs menjadi bmGs = 4 dan bmBc = 6 – 8 - 6 = 4 sehingga dilakukan pergeseran sebanyak empat kali. Tabel 6. Percobaan 3 Boyer-Moore g
c
a
t
c
g
c
a
g
a
g
a
4
g
t
a
t
a
c
a
g
t
a
c
g
G
C
A
G
A
G
A
G
Shift by 7 (bmGs[0]) Pada percobaan ketiga, pencocokan yang dilakukan dari kanan ke kiri antara pattern dan teks terdapat delapan karakter yang cocok yang artinya semua karakter cocok. Maka hanya dilakukan perhitungan bmGs[0] dengan nilai 7 sesuai tabel BmGs. Pergeseran dilakukan sebanyak tujuh kali. Tabel 7. Percobaan 4 Boyer-Moore g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
.
.
.
.
.
g
A
G
t
a
c
g
Shift by 4 (bmGs[5]=bmBc[c]-8+6) Sama seperti perhitungan pada percobaan sebelumnya yaitu bmGs[5] = bmBc[c] – 8 + 6. Masukan nilai dari tabel BmBc dan BmGs menjadi bmGs = 4 dan bmBc = 6 – 8 - 6 = 4 sehingga dilakukan pergeseran sebanyak empat kali. Tabel 8. Percobaan 5 Boyer-Moore g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
a
c
g
.
.
.
.
.
.
a
G
Shift by 7 (bmGs[6]) Pada percobaan kelima, pergeseran pattern sudah sampai akhir karakter teks, sehingga pergeseran dianggap selesai. Kesimpulan dari percobaan di atas dirangkum dalam tabel sebagai berikut : Tabel 9. Nilai Kriteria Boyer-Moore No
Kriteria Perbandingan
Nilai
1
Jumlah percobaan sampai terjadi kecocokan pattern pada teks
3
2
Jumlah percobaan pattern sampai akhir teks
5
3
Jumlah karakter pattern yang dibandingkan pada teks
17
Cara Kerja Algoritma Knuth-Morris-Pratt Dengan studi kasus yang sama yang sudah ditentukan di atas, maka pencarian dengan Algoritma Knuth-Morris-Pratt dapat diawali dengan menentukan nilai dari Knuth-Morris-Pratt Next (KmpNext) seperti tabel berikut ini:
5
Tabel 10. KmpNext 0
1
2
3
4
5
6
7
8
g
c
a
g
a
g
a
g
-1
0
0
-1
1
-1
1
-1
1
Setelah mendapatkan nilai KmpNext maka kita bisa memulai pencocokan string dengan cara meletakkan pattern mulai dari kiri ke kanan pada teks dan memulai pencocokan string dari kiri ke kanan juga. Tabel 11. Percobaan 1 Knuth-Morris-Pratt g
c
a
t
c
g
c
a
G
C
A
g
.
.
.
.
g
a
g
a
g
t
a
t
a
c
a
g
t
a
c
g
Shift by 4 (3-kmpNext[3]) Belum terjadi kecocokan pattern pada teks di percobaan pertama, ketidakcocokan dimulai pada karakter keempat dan tiga karakter pertama cocok. Sesuai dengan rumus, jumlah karakter pattern yang cocok dengan teks – kmpNext[nilai dari jumlah karakter pattern yang cocok pada tabel KmpNext] maka nilainya 3 – (-1) = 4 yang artinya shift by 4 sama dengan bergeser empat kali. Tabel 12. Percobaan 2 Knuth-Morris-Pratt g
c
a
t
c
g
c
a
g
a
g
a
G
.
.
.
.
.
.
.
g
t
a
t
a
c
a
g
t
a
c
g
Shift by 1 (0-kmpNext[0]) Bergeser lagi, seperti perhitungan pertama maka sesuai dengan rumus, diperoleh nilai 0 – (-1) = 1 yang artinya shift by 1 sama dengan bergeser satu kali. Tabel 13. Percobaan 3 Knuth-Morris-Pratt g
c
a
t
c
g
c
a
g
a
g
a
g
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
a
c
g
Shift by 7 (8-kmpNext[8]) Terjadi kecocokan pattern pada teks di percobaan kedua, beergeser lagi, seperti perhitungan sebelumnya maka sesuai dengan rumus, diperoleh nilai 8 – (1) = 7 yang artinya shift by 7 sama dengan bergeser tujuh kali.
6
Tabel 14. Percobaan 4 Knuth-Morris-Pratt g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
.
c
.
.
.
.
.
.
t
a
c
g
Shift by 1 (1-kmpNext[1]) Bergeser lagi, seperti perhitungan sebelumnya maka sesuai dengan rumus, diperoleh nilai 1 – (0) = 1 yang artinya shift by 1 sama dengan bergeser satu kali. Tabel 15. Percobaan 5 Knuth-Morris-Pratt g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
g
.
.
.
.
.
.
.
a
c
g
Shift by 1 (0-kmpNext[0]) Bergeser lagi, seperti perhitungan sebelumnya maka sesuai dengan rumus, diperoleh nilai 0 – (-1) = 1 yang artinya shift by 1 sama dengan bergeser satu kali. Tabel 16. Percobaan 6 Knuth-Morris-Pratt g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
a
g
.
.
.
.
.
.
.
c
g
Shift by 1 (0-kmpNext[0]) Bergeser lagi, seperti perhitungan sebelumnya maka sesuai dengan rumus, diperoleh nilai 0 – (-1) = 1 yang artinya shift by 1 sama dengan bergeser satu kali. Tabel 17. Percobaan 7 Knuth-Morris-Pratt g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
a
c
g
.
.
.
.
.
.
.
g
Shift by 1 (0-kmpNext[0]) Bergeser lagi, seperti perhitungan sebelumnya maka sesuai dengan rumus, diperoleh nilai 0 – (-1) = 1 yang artinya shift by 1 sama dengan bergeser satu kali. Tabel 18. Percobaan 8 Knuth-Morris-Pratt g
c
a
t
c
G
C
A
G
A
G
A
Shift by 1 (0-kmpNext[0])
7
G
t
a
t
a
c
a
g
t
a
c
g
g
.
.
.
.
.
.
.
Pada percobaan kedelapan, karakter terakhir pattern sudah sampai pada karakter terakhir teks sehingga pergeseran dianggap selesai. Kesimpulan dari percobaan di atas dirangkum dalam tabel sebagai berikut : Tabel 19. Nilai Kriteria Knuth-Morris-Pratt No
Kriteria Perbandingan
Nilai
1
Jumlah percobaan sampai terjadi kecocokan pattern pada teks
3
2
Jumlah percobaan pattern sampai akhir teks
8
3
Jumlah karakter pattern yang dibandingkan pada teks
18
Cara Kerja Algoritma Rabin-Karp Dengan studi kasus yang sama yang sudah ditentukan di atas, pencarian dengan Algoritma Rabin-Karp terlebih dahulu menghitung nilai hash dari karakter pattern kemudian baru melakukan pencarian. Untuk nilai hash karakter pattern gcagagag = 25757. Percobaan dilakukan dengan menyamakan nilai hash dari pattern dengan karakter dari teks, jika tidak cocok akan terus dilanjutkan pergeseran, jika cocok maka akan dicocokan karakter per karakter pattern dan teks, dan pencocokan akan dilakukan sampai akhir karakter teks seperti pada tabel-tabel berikut ini : Tabel 20. Percobaan 1 Rabin-Karp g
c
a
t
c
g
c
a
.
.
.
.
.
.
.
.
g
a
g
a
g
t
a
t
a
c
a
g
t
a
c
g
c
a
g
t
a
c
g
c
a
g
t
a
c
g
Hash (y[0..7]) = 25979 Tabel 21. Percobaan 2 Rabin-Karp g
c
a
t
c
g
c
a
g
.
.
.
.
.
.
.
.
a
g
a
g
t
a
t
a
Hash (y[1..8]) = 25693 Tabel 22. Percobaan 3 Rabin-Karp g
c
a
t
c
g
c
a
g
a
.
.
.
.
.
.
.
.
g
a
g
Hash (y[2..9]) = 26139
8
t
a
t
a
Tabel 23. Percobaan 4 Rabin-Karp g
c
a
t
c
g
c
a
g
a
g
.
.
.
.
.
.
.
.
a
g
t
a
t
a
c
a
g
t
a
c
g
c
a
g
t
a
c
g
Hash (y[3..10]) = 27549 Tabel 24.Percobaan 5 Rabin-Karp g
c
a
t
c
g
c
a
g
a
g
a
.
.
.
.
.
.
.
.
g
t
a
t
a
Hash (y[4..11]) = 25499 Tabel 25. Percobaan 6 Rabin-Karp g
c
a
t
c
g
c
a
g
a
g
a
g
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
a
c
a
g
a
c
a
a
c
c
t
a
c
g
t
a
c
g
g
t
a
c
g
a
g
t
a
c
g
a
g
t
a
c
g
Hash (y[5..12]) = 25757 Tabel 26. Percobaan 7 Rabin-Karp g
c
a
t
C
G
C
A
G
A
G
A
G
t
.
.
.
.
.
.
.
.
a
t
Hash (y[6..13]) = 25262 Tabel 27. Percobaan 8 Rabin-Karp g
c
a
t
C
G
C
A
G
A
G
A
G
t
a
.
.
.
.
.
.
.
.
t
Hash (y[7..14]) = 25277 Tabel 28. Percobaan 9 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
.
.
.
.
.
.
.
.
Hash (y[8..15]) = 25838 Tabel 29. Percobaan 10 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
9
G
t
a
t
a
.
.
.
.
.
.
.
.
Hash (y[9..16]) = 25405 Tabel 30. Percobaan 11 Rabin-Karp g
c
a
t
C
G
C
A
G
A
G
A
G
t
a
t
a
c
.
.
.
.
.
.
.
.
a
g
t
a
c
g
g
t
a
c
g
t
a
c
g
Hash (y[10..17]) = 26077 Tabel 31. Percobaan 12 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
.
.
.
.
.
.
.
.
Hash (y[11..18]) = 25883 Tabel 32. Percobaan 13 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
.
.
.
.
.
.
.
.
Hash (y[12..19]) = 27037 Tabel 33. Percobaan 14 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
.
.
.
.
.
.
.
.
a
c
g
c
g
g
Hash (y[13..20]) = 27822 Tabel 34. Percobaan 15 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
a
.
.
.
.
.
.
.
.
Hash (y[14..21]) = 26045 Tabel 35. Percobaan 16 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
Hash (y[15..22]) = 27357
10
G
t
a
t
a
c
a
g
t
a
c
.
.
.
.
.
.
.
.
Tabel 36. Percobaan 17 Rabin-Karp g
c
a
t
c
G
C
A
G
A
G
A
G
t
a
t
a
c
a
g
t
a
c
g
.
.
.
.
.
.
.
.
Hash (y[16..23]) = 25121 Dari percobaan Rabin-Karp diatas, maka dapat disimpulkan sebagai berikut : Tabel 37. Nilai Kriteria Rabin-Karp No
Kriteria Perbandingan
Nilai
1
Jumlah percobaan sampai terjadi kecocokan pattern pada teks
6
2
Jumlah percobaan pattern sampai akhir teks
17
3
Jumlah karakter pattern yang dibandingkan pada teks
8
Metode Perbandingan Eksponensial Langkah-langkah penerapan Metode Perbandingan Eksponensial pada analisis perbandingan Algoritma Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp adalah sebagai berikut : 1. Menentukan Alternatif Alternatif yang dipilih adalah Algoritma Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp. 2. Menentukan Kriteria Tabel 38. Penentuan Kriteria Simbol Kriteria
Kriteria
Keterangan
K1
Jumlah percobaan sampai Pada percobaan keberapa terjadi kecocokan pattern terjadi kecocokan pattern pada pada teks. teks
K2
Jumlah percobaan sampai akhir teks
K3
pattern Jumlah percobaan yang dilakukan dalam pencocokan pattern sampai selesai akhir teks.
Jumlah karakter pattern yang Jumlah karakter pattern yang dibandingkan dari dibandingkan awal pencocokan pattern sampai akhir teks.
11
3. Menentukan Bobot Kriteria Tabel 39. Pembobotan Kriteria Simbol Kriteria
Persentase Pengaruh Kriteria
Bobot Range (0-1)
Simbol Bobot
K1
50%
0,5
B1
K2
30%
0,3
B2
K3
20%
0,2
B3
Keterangan
Pada percobaan keberapa pattern pada teks.
terjadi kecocokan
Jumlah percobaan yang dilakukan dalam pencocokan pattern sampai selesai akhir teks. Jumlah karakter pattern yang dibandingkan dari awal pencocokan pattern sampai akhir teks.
4. Pemberian Nilai pada Setiap Kriteria Tabel 40. Pemberian Nilai pada Setiap Kriteria Simbol Kriteria Alternatif K1
K2
K3
Algoritma Boyer-Moore
3
5
17
Algoritma Knuth-Morris-Pratt
3
8
18
Algoritma Rabin-Karp
6
17
8
5. Menghitung Skor Tabel 41. Perhitungan Skor Algoritma Boyer-Moore Algoritma Boyer-Moore Kode Kriteria
Nilai (N)
Kode Bobot
Bobot (B)
Perhitungan (N)B
Hasil
K1
3
B1
0,5
(3)0,5
1,62
K2
5
B2
0,3
(5)0,3
1,73
K3
17
B3
0,2
(17)0,2
1,76
Total Nilai = ∑(N)B
12
5,09
Tabel 42. Perhitungan Skor Algoritma Knuth-Morris-Pratt Algoritma Knuth-Morris-Pratt Kode
Kode Nilai (N)
Kriteria
Perhitungan Bobot (B)
Hasil
(N)B
Bobot
K1
3
B1
0,5
(3)0,5
1,87
K2
8
B2
0,3
(8)0,3
1,73
K3
18
B3
0,2
(18)0,2
1,78
Total Nilai = ∑(N)B
5,38
Tabel 43. Perhitungan Skor Algoritma Rabin-Karp Algoritma Rabin-Karp Kode
Kode Nilai (N)
Kriteria
Perhitungan Bobot (B)
Hasil
(N)B
Bobot
K1
6
B1
0,5
(6)0,5
2,34
K2
17
B2
0,3
(17)0,3
2,45
K3
8
B3
0,2
(8)0,2
1,52
Total Nilai = ∑(N)B
6,31
6. Menentukan Prioritas Keputusan Tabel 44. Prioritas Keputusan Alternatif
Total Nilai
Rangking
Algoritma Boyer-Moore
5,09
1
Algoritma Knuth-Moriss-Pratt
5,38
2
Algoritma Rabin-Karp
6,31
3
13
PENUTUP Dari penelitian di atas, dapat disimpulkan bahwa dalam analisis perbandingan antara Algoritma Boyer-Moore, Knuth-Morris-Pratt, dan Rabin-Karp dengan satu studi kasus yang sama yaitu pencocokan single pattern terhadap teks menggunakan Metode Perbandingan Eksponensial, maka Algoritma Boyer-Moore menjadi algoritma terbaik dengan jumlah nilai 5,09, dilanjutkan dengan Algoritma Knuth-Morris-Pratt dengan jumlah nilai 5,38 dan yang terakhir Algoritma Rabin-Karp dengan jumlah nilai 6,31. Algoritma Boyer-Moore dengan jumlah nilai terkecil yaitu 5,09 menjadi yang terbaik karena semakin kecil jumlah nilai yang diperoleh, maka semakin baik kinerja algoritma tersebut dalam melakukan pencocokan string.
DAFTAR PUSTAKA Baedlowi, Najib. 2005. String Matching dengan Menggunakan Algoritma Rabin-Karp. Bandung : Laboratorium Ilmu dan Rekayasa Komputasi Departemen Teknik Informatika Institut Teknologi Bandung. Kodir, Abdul. 2012. Algoritma dan Pemrograman Menggunakan Java. Yogyakarta : Andi. Marimin. 2005. Teknik dan Aplikasi Pengambilan Keputusan dengan Kriteria Majemuk. Jakarta : Grasindo. Munir, Rinaldi. 2005. Algoritma dan Pemograman dalam Bahasa Pascal dan C. Bandung : Informatika Bandung. Munir, Rinadi. 2006. Diktat Kuliah Strategi Algoritmik. Bandung : Program Studi Teknik Informatika Institut Teknologi Bandung. Munir, Rinadi. 2007. Diktat Kuliah Strategi Algoritmik. Bandung : Program Studi Teknik Informatika Institut Teknologi Bandung. Mutiara, A. Benny. 2007. Aplikasi Anti Plagiatisme dengan Algoritma Karp-Rabin pada Penulisan Ilmiah Universitas Gunadarma. Jakarta : Jurusan Teknik Informatika Fakultas Teknologi Industri Universitas Gunadarma. Pratama, Satya Fajar. 2008. Pencocokan DNA Pattern dengan Algoritma Boyer-Moore. Bandung : Makalah IF2251 Strategi Algoritmik Program Studi Teknik Informatika Institut Teknologi Bandung. Sjukani, Moh. 2010. Algoritma (Algoritma & Struktur Data 1) dengan C, C++, dan Java. Jakarta : Mitrawacanamedia. Surahman, Ade Mirza. 2013. Perancangan Sistem Penentuan Similarity Kode Program pada Bahasa C dan Pascal dengan Menggunakan Algoritma Rabin-Karp. Pontianak : Program Studi Teknik Informatika Fakultas Tenik Universitas Tanjungpura.
14