2.4. Algoritma
Istilah algoritma digunakan dalam ilmu komputer untuk menggambarkan metode pemecahan masalah yang terbatas, deterministik, dan efektif yang cocok untuk
implementasi sebagai program komputer Sedgewick et al, 2011. Algoritma yang akan di implementasikan pada penelitian ini adalah algoritma
String Matching yaitu algoritma Brute Force dan algoritma Knuth-Morris-Pratt
KMP . Hal ini dikarenakan menurut banyak peneliti komputer menganggap bahwa
String matching adalah pencarian sebuah pattern pada sebuah teks. Menurut Munir
2004 algoritma string matching adalah algoritma yang ditujukan untuk melakukan pencocokan sub string pada string besar.
2.4.1. Algoritma Pencocokan String String Matching
Algoritma pencocokan string merupakan komponen dasar dalam pengimplementasian berbagai perangkat lunak praktis yang sudah ada. String matching digunakan untuk
menemukan satu atau lebih string yang disebut dengan pattern string yang akan dicocokkan ke dalam text dalam string yang disebut dengan text string yang di-
input Charras Lecroq, 2004.
Menurut Singla dan Garg 2012, ada dua teknik utama dalam algoritma string matching
yaitu exact matching dimana hasil pencocokannya mengandung string yang sama persis dengan string yang di-input, contohnya pada algoritma Needleman
Wunsch , algoritma Smith Waterman, algoritma Knuth-Morris-Pratt, algoritma Boyer-
Moore-Horspool dan approximate matching dimana hasil pencocokannya
mengandung string yang tidak harus persis dengan string yang di-input, contohnya pada algoritma Fuzzy String Searching, algoritma Rabin Karp, algoritma Brute Force.
2.4.2. Klasifikasi Algoritma Pencocokan String String Matching
Menurut Christian Charras dan Thierry Lecroq 2004:12-14 yang diterjemahkan oleh Serupa Creative Commons yang dilansir dari situs Wikipedia 2013 tentang
Algoritma Pencocokan String, Algoritma pencocokkan string dapat diklasifikasikan menjadi tiga bagian menurut arah pencariannya, yaitu :
a. Dari arah yang paling alami, dari kiri ke kanan, yang merupakan arah untuk
membaca, algoritma yang termasuk kategori ini adalah:
Universitas Sumatera Utara
1. Algoritma Brute Force
2. Algoritma dari Morris dan Pratt, yang kemudian dikembangkan
oleh Knuth, Morris, dan Pratt. b.
Dari kanan ke kiri, arah yang biasanya menghasilkan hasil terbaik secara praktikal, contohnya adalah Algoritma dari Boyer dan Moore, yang kemudian
banyak dikembangkan, menjadi algoritma turbo Boyer Moore, Algoritma Tuned
Boyer Moore, dan algoritma Zhu-Takaoka. c.
Dan kategori terakhir, dari arah yang ditentukan secara spesifik oleh algoritma tersebut, arah ini menghasilkan hasil terbaik secara teoritis, algoritma yang
termasuk kategori yaitu Algoritma Colussi dan Algoritma Crochemore-Perrin.
2.4.3. Algoritma Brute Force
Charras dan Lecroq 2004 meneliti bahwa algoritma Brute Force digunakan dalam pengecekan pada setiap kedudukan dalam text dari karakter pertama hingga karakter
akhir. Seusai pengecekan karakter pertama terjadi, maka proses shift dilakukan dengan berpindah tepat satu posisi ke arah kanan berpindah ke karakter kedua, ketiga dan
seterusnya. Algoritma Brute Force tidak memerlukan tahap praproses. Selama tahap pencarian, pembadingan karakter pada text dapat selesai pada posisi manapun.
Berikut merupakan coding algoritma Brute Force dalam bahasa C. void BF char x, int m, char y, int n {
int i, j;
Searching for j = 0; j = n
– m { for i = 0; i m x[i] == y[i + j]; ++i;
if i = m OUTPUTj;
} }
Universitas Sumatera Utara
Pada algoritma Brute Force, diberikan y sebagai text dan x sebagai pattern. Maka dilakukanlah proses pencocokan pattern pada text-nya. Untuk tahap pencocokan
pertama, dilakukan pencocokan terhadap text sepanjang karakter dari pattern. Apabila match
karakter pertama pada text dan karakter pertama pada pattern, maka dimulailah proses pencocokan pertama. Pada pencocokan pertama ini, dilakukanlah pencocokan
pada karakter kedua untuk masing-masing text dan pattern. Apabila ditemukan match pada pencocokan ini, maka lakukanlah pencocokan untuk karakter-karakter
selanjutnya. Jika mismatch terjadi, maka proses berlanjut pada tahap pencocokan kedua.
Tahap pencocokan kedua dilakukan dengan berpindah satu karakter ke arah kanan dari tahap pencocokan pertama. Dilakukanlah pencocokan karakter kedua dari
text dan karakter pertama pada pattern awal pada tahap sebelumnya. Jika ditemukan
match pada pencocokan ini, maka dimulailah proses pencocokan kedua. Selanjutnya lakukan pencocokan pada karakter ketiga pada text dan karakter kedua pada pattern.
Apabila match, lanjutkan ke karakter-karakter berikutnya dan apabila mismatch, lakukan tahap pencocokan ketiga. Untuk memulai tahap pencocokan ketiga,
berpindahlah satu karakter ke arah kanan terhadap text. Tahap demi tahap dilakukan pada proses pencocokan hingga ditemukan match
pada text yang karakternya sama panjang terhadap karakter pada pattern. Proses berakhir saat karakter terakhir pada text telah dilakukan pencocokan ditemukan atau
tidaknya pattern pada text. Sebagai
contoh, diberikan
sejumlah karakter
sebagai text
= GCATCGCAGAGAGTATACAGTACG dan yang akan dicocokkan adalah pattern =
GCAGAGAG sebagaimana dikutip pada Carras dan Lecroq 2004. Gambar 2.1 dan gambar 2.2 berikut akan menggambarkan proses pencocokan yang telah dijelaskan
sebelumnya pada algoritma Brute Force dimana y merupakan text dan x merupakan pattern
. Setelah dilakukan tahap pencocokan sepanjang karakter pada pattern, proses shift
dilakukan dengan berpindah tepat satu karakter ke arah kanan terhadap text.
Universitas Sumatera Utara
Gambar 2.1 Ilustrasi tahap pencarian algoritma brute force
Universitas Sumatera Utara
Gambar 2.2 Ilustrasi tahap pencarian algoritma brute force lanjutan
Universitas Sumatera Utara
Menurut Fandi Pradhana 2012 pseudocode pada Algoritma Brute Force adalah sebagai berikut :
Public static int BruteForce string text, string pattern {
Int n = text.length; cari panjangnya text Int m = pattern.length; cari panjangnya pattern
Int j; For int i = 0; i = n-m; i++ {
J = 0; While j m text.charAti+j == pattern.charAtj
J++; Ifj == m
Return i; kecocokan ditemukan di i }
Return -1; tidak ada yang cocok }
Pada fungsi Brute Force Panjang teks di masukkan ke dalam variabel n, Panjang pattern dimasukkan ke variabel m, dilakukan pengulangan untuk
membandingkan karakter dimulai dari 0 sampai n-m, di dalam pengulangan tersebut dilakukan perbandingan karakter pada text dan pattern. Jika ditemukan kecocokan di
kembalikanlah nilai i, jika tidak di kembalikan nilai -1.
2.4.4. Algoritma Knuth-Morris-Pratt