2.3.4. Macam Algoritma String Matching
Secara garis besar string matching dibedakan menjadi dua Binstock Rex dalam Syaroni Munir, 2004 : 2, yaitu:
1. Exact string matching
2. Inexact string matching atau Fuzzy string matching.
2.4. Exact String Matching
Exact string matching , merupakan pencocokan string secara tepat dengan
susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Bagian algoritma ini bermanfaat jika
pengguna ingin mencari string dalam dokumen yang sama persis dengan
string masukan.
Beberapa algoritma exact string matching yang mengemuka antara lain :
1. Brute Force
Analisis dengan metoda Brute Force adalah membandingkan karakter per karakter sampai ditemukannya pola yang dicari dari awal string sampai
dengan akhir string Sagita, 2006 :1 . Dengan asumsi bahwa teks berada di dalam array T[1..n] dan pattern
berada di dalam arrayP[1..m], maka algoritma brute force pencocokan string adalah sebagai berikut:
a. Mula-mula pattern P dicocokkan pada awal teks T.
b. Dengan bergerak dari kiri ke kanan, bandingkan setiap karakter di
dalam pattern P dengan karakter yang bersesuaian di dalam teks T
sampai:semua karakter yang dibandingkan cocok atau sama pencarian berhasil, atau dijumpai sebuah ketidakcocokan karakter
pencarian belum berhasil. c.
Bila pattern P belum ditemukan kecocokannya dan teks T belum habis, geser pattern P satu karakter ke kanan dan ulangi langkah 2.
Kekuatan dan Kelemahan Metode Brute Force.
Munir, 2004:6 a.
Kekuatan: 1
Metode brute force dapat digunakan untuk memecahkan hampir sebagian besar masalah wide applicability.
2 Metode brute force sederhana dan mudah dimengerti.
3 Metode brute force menghasilkan algoritma yang layak
untuk beberapa masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian matriks.
4 Metode brute force menghasilkan algoritma baku
standard untuk
tugas-tugas komputasi
seperti penjumlahanperkalian n buah bilangan, menentukan
elemen minimum atau maksimum di dalam tabel list. b.
Kelemahan: 1
Metode brute force jarang menghasilkan algoritma yang mangkus.
2 Beberapa algoritma brute force lambat sehingga tidak dapat
diterima.
3 Tidak sekontruktifsekreatif teknik pemecahan masalah
lainnya. Berikut ini adalah pseudecode dari algoritma brute force :
2. Knuth Morris Pratt
Algoritma KMP dikembangkan oleh D. E. Knuth, bersama-sama dengan J. H. Morris dan V. R. Pratt. Munir, 2004 : 8 Dengan algoritma KMP
procedure PencocokanStringinput P : string, T : string, n, m : integer,output idx : integer
{ Masukan: pattern P yang panjangnya m dan teks T yang panjangnya n. Teks T direpresentasika sebagai string array of character
Keluaran: lokasi awal kecocokan idx }
Deklarasi i : integer
ketemu : boolean Algoritma:
i
ketemu false
while i n-m and not ketemu do j
1 while j m and Pj = Ti+j do
j j+1
endwhile { j m or Pj Ti+j }
if j = m then{ kecocokan string ditemukan } ketemu
true else
i i+1 {geser pattern satu karakter ke kanan teks }
endif endfor
{ i n – m or ketemu }
if ketemu then idx
i+1 else
idx -1
endif
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.
Dalam Algoritma Knuth-Morris-Pratt KMP, untuk setiap karakter yang dibandingkan kita bisa memutuskan apakah berhasil atau gagal. Algoritma
KMP membangun sebuah mesin automata yang status-statusnya adalah status dari string yang sedang kita cari dan setiap status memiliki fungsi
berhasil dan gagal. Berhasil artinya status akan bergerak lebih mendekat ke status akhir dan gagal artinya status bisa jadi semakin jauh atau tetap
terhadap status akhir. Kita akan mendapatkan sebuah karakter dari text saat kita berhasil dalam membandingkan dan akan me-reuse karakter bila
kita gagal Sagita : 3. Berikut ini adalah pseudecode dari algoritma brute force :
procedure KMPsearchinput m, n : integer, input P : array[1..m] ofchar, input T : array[1..n] ofchar, output idx : integer
{ Mencari kecocokan pattern P di dalam teks T dengan algoritma Knuth-Morris-Pratt. Jika ditemukan P di dalam T, lokasi awal
kecocokan disimpan di dalam peubah idx. Masukan: pattern P yang panjangnya m dan teks T yang panjangnya
n. Teks T direpresentasika sebagai string array of character
Keluaran: posisi awal kecocokan idx. Jika P tidak ditemukan, idx = -1.
} Deklarasi
i, j : integer ketemu : boolean
b : array[1..m] ofinteger procedure HitungPinggiraninput m : integer, P : array[1..m] ofchar,
output b : array[1..m] ofinteger { Menghitung nilai b[1..m] untuk pattern P[1..m] }
3. Algoritma Boyer Moore