String Matching dibagi menjadi dua, yaitu exact string matching dan heuristic statistical matching. Exact matching digunakan untuk menemukan pattern yang berasal dari satu teks.
Contoh pencarian exact matching adalah pencarian kata “pelajar” dalam kalimat “ saya seorang pelajar” atau “saya seorang siswa”. Sistem akan memberikan hasil bahwa kata
pelajar dan siswa bersinonim. Algoritma exact matching diklasifisikan menjadi tiga bagian menurut arah pencariannya, yaitu :
1. Arah pencarian dari kiri ke kanan.
Algoritma yang termasuk dalam kategori ini adalah Brute Force, Morris dan Pratt yang kemudian dikembangkan oleh Knuth, Morris dan Pratt.
2. Arah pembacaan dari kanan ke kiri.
Algoritma yang termasuk dalam kategori ini adalah Boyer Moore yang kemudian dikembangkan menjadi algoritma Turbo Boyer Moore, Tuned Boyer Moore dan Zhu
Takaoka. 3.
Arah pencarian yang ditentukan oleh program. Algoritma yang termasuk dalam kategori ini adalah algoritma Colussi dan
Crochemore-Perrin. Heuristic matching adalah teknik yang digunakan untuk menghubungkan dua data
terpisah ketika exact matching tidak mampu mengatasi karena pembatasan pada data yang tersedia. Heuristic matching dapat dilakukan dengan perhitungan distance antara pattern
dengan teks. Exact dan heuristic matching memiliki kemiripan makna tetapi berbeda tulisan.
2.2.1.1 Algoritma Turbo Boyer Moore
Algoritma Turbo Boyer Moore adalah sebuah algoritma pencocokan pola tertentu terhadap suatu kalimat atau paragraf. Algoritma ini merupakan varian dari Algoritma Boyer Moore
yang memungkinkan terjadinya ‘lompatan’ melewati segmen yang tidak memerlukan preprosessing tambahan dengan kecepatan yang baik. Algoritma Turbo Boyer Moore
mengambil metode pencarian string boyer moore yaitu good suffix dan bad character suffix. Akan tetapi, Algoritma Turbo Boyer Moore berbeda dengan Algoritma Boyer Moore,
algoritma ini dimungkinkan terjadinya ‘lompatan’ melewati segmen mengingat faktor dari teks yang cocok dengan akhiran dari pattern selama attempt terakhir sehingga memanfaatkan
teknik turbo shift. Cara kerja algoritma Turbo Boyer Moore ini adalah :
Universitas Sumatera Utara
Pertama : inisialisasi, karena algoritma ini menggunakan good suffix shif dan bad character shif dari Algoritma Boyer Moore maka untuk inisialisasi dijalankan prosedur preBmBc dan
preBmGs seperti Algoritma Boyer Moore. Kedua : Melakukan proses pencocokan karakter pada pattern dengan karakter pada teks. Jika
terjadi ketidakcocokan maka dilakukan pergeseran terbesar berdasarkan tabel BmBc, tabel BmGs dan turbo shif.
Adapun Prinsip Kerja dari Algoritma Turbo Boyer Moore adalah sebagai berikut : 1.
Algoritma Boyer Moore mulai melakukan pencocokan pattern pada awal teks. 2.
Dari kanan ke kiri, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter pada teks yang bersesuaian sampai salah satu kondisi berikut dipenuhi:
a Di pattern dan di teks yang dibandingkan tidak cocok missmatch.
b Semua karakter di pattern cocok. Algoritma akan memberitahukan penemuan di
posisi ini. c
Algoritma kemudian menggeser pattern dengan memaksimalkan nilai pergeseran good suffix dan pergeseran bad character, lalu mengulangi langkah b sampai
patern berada di ujung teks. Untuk fase pencarian dalam algoritma Turbo Boyer Moore, proses yang dilakukan
hampir sama dengan fase pencarian pada Algoritma Boyer Moore. Yang membedakan adalah adanya variabel yang berfungsi untuk menampung nilai pergeseran apabila pada putaran
sebelumnya nilai yang diambil untuk pergeseran berasal dari tabel good suffix shift. Nilai ini nantinya akan digunakan sebagai nilai yang mungkin digunakan untuk pergeseran pattern.
Fase inisialisasi pada algoritma ini sama dengan fase inisialisasi pada algoritma Boyer Moore, yaitu mempunyai kompleksitas waktu dan ruang sebesar On + σ dengan σadalah besar
ruang alfabet. Sedangkan pada fase pencocokan, algoritma ini mempunyai kompleksitas waktu sebesar Om dengan jumlah pencocokan karakter pada algoritma ini adalah 2m.
Contoh : Teks : Titik Berat Benda
Pattern : Benda
Tabel 2.1 Tabel BmBc dan BmGs
Index 1
2 3
4 Pattern
B e n
d a
BmBc 4
3 2
1 BmGs
4 4
4 4
1
Universitas Sumatera Utara
Temu Pola 1 Tabel 2.2 Pergeseran karakter TBM 1
T I
T I
K B E
R A T B E
N D A 1
B E
N D A
Terlihat perbedaan pada index K : -
Geser BmBcK – m + index bawah + 1 = 5 – 5 + 5 = 5 -
BmGs[4] = 1 Sehingga geser pattern sebesar 5 nilai maksimal dari kedua perhitungan
Temu Pola 2 Tabel 2.3 Pergeseran karakter TBM 2
T I T I
K B E R A T
B E N D A
1 -
B E N D A
Terlihat perbedaan pada index R , maka : -
Geser BmBcR – m + index bawah + 1 = 5 – 5 + 4 = 4 -
BmGs[3] = 4 Sehingga geser pattern sebesar 4 nilai maksimal dari kedua perhitungan
Temu Pola 3 Tabel 2.4 Pergeseran karakter TBM 3
T I T I
K B E R A T
B E N D A 1
B E N D A
Terlihat perbedaan pada index E , maka : -
Geser BmBcE – m + index bawah + 1 = 3– 5 + 5 = 3 -
BmGs[4] = 1 Sehingga geser pattern sebesar 3 nilai maksimal dari kedua perhitungan
Universitas Sumatera Utara
Temu Pola 4 Tabel 2.5 Pergeseran karakter TBM 4
T I T I
K B E R A T
B E N D A -
- -
- -
B E N D A
Pada temu pola 4, tidak perlu dilakukan pergeseran lagi karena sudah sampai pada indeks terakhir.
2.2.1.2 Algoritma String Matching on Ordered Alphabets