Algoritma Turbo Boyer Moore

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