Anda di halaman 1dari 3

INTEJELENSI BUATAN II TEKNIK INFORMATIKA

MATERI IV
LANJUTAN STRING MATCHING

❖ Algoritma Horspool

Algoritma Horspool adalah penyederhanaan dari algoritma Boyer-Moore yang dibuat oleh R.
Nigel Horspool. Menurut Horspool, R.N. (1980), masalah dalam pencarian teks ini adalah
mencari dalam teks yang besar untuk menemukan pattern pertama. Karena teks yang dicari bisa
sangat besar (memungkinkan ratusan ribu karakter) maka penting untuk menggunakan teknik
yang lebih efisien. Algoritma Horspool bekerja dengan metode yang hampir sama dengan
algoritma Boyer-Moore namun tidak melakukan lompatan berdasarkan karakter pada pattern
yang ditemukan tidak cocok pada teks.

Terdapat dua tahap pada pencocokan string menggunakan algoritma Horspool yaitu:
1. Tahap praproses
Pada tahap ini, dilakukan observasi pattern terhadap teks untuk membangun sebuah tabel
bad-match yang berisi nilai shift ketika ketidakcocokan antara pattern dan teks terjadi.
Secara sistematis, langkah-langkah yang dilakukan algoritma Horspool pada tahap praproses
adalah:
a. Algortima Horspool melakukan pencocokan karakter ter-kanan pada pattern.
b. Setiap karakter pada pattern ditambah ke dalam tabel bad-match dan dihitung nilai shift-
nya.
c. Karakter yang berada pada ujung pattern tidak dihitung dan tidak dijadikan karakter ter-
kanan dari karakter yang sama dengannya.
d. Apabila terdapat dua karakter yang sama dan salah satunya bukan karakter terkanan,
maka karakter dengan indeks terbesar yang dihitung nilai shift-nya.
e. Algoritma Horspool menyimpan panjang dari pattern sebagai panjang nilai shift secara
default apabila karakter pada teks tidak ditemukan dalam pattern.
f. Nilai (value) shift yang akan digunakan dapat dicari dengan perhitungan panjang dari
pattern dikurang indeks terakhir karakter dikurang 1, untuk masing-masing karakter,
𝑣𝑎𝑙𝑢𝑒 = length -1 –index.
2. Tahap pencarian
Secara sistematis, langkah-langkah yang dilakukan algoritma Horspool pada tahap praproses
adalah:
a. Dilakukan perbandingan karakter paling kanan pattern terhadap window.
b. Tabel bad-match digunakan untuk melewati karakter ketika ketidakcocokan terjadi.
c. Ketika ada ketidakcocokan, maka karakter paling kanan pada window berfungsi sebagai
landasan untuk menentukan jarak shift yang akan dilakukan.
d. Setelah melakukan pencocokan (baik hasilnya cocok atau tidak cocok) dilakukan
pergeseran ke kanan pada window.
e. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks atau ketika
pattern cocok dengan teks.

Berikut adalah contoh penggunaan dari algoritma Horspool untuk pencarian pattern dalam teks
:
Teks = STMIK BUDI DARMA MEDAN
Pattern = DARMA
Penyelesaian :

STMIK BUDI DARMA MEDAN Soeb Arifin, M.Kom


INTEJELENSI BUATAN II TEKNIK INFORMATIKA
1. Penentuan tabel bad-match
a. Penentuan Tabel bad-match
Rumus Value = ( length -1 –index)
Jumlah pattren = 5

Indeks 0 1 2 3 4 -

Pattren D A R M A *

Value 4 3 2 1 3 5

a. Karakter pertama adalah “D” dengan Index = 0


Value = (5 - 1 - 0 = 4) maka nilai karakter “D” = 4
b. Karakter pertama adalah “A” dengan Index = 1
Value = (5 - 1 - 1 = 3) maka nilai karakter “A” = 3
c. Karakter pertama adalah “R” dengan Index = 2
Value = (5 - 1 - 2 = 2) maka nilai karakter “R” = 2
d. Karakter pertama adalah “M” dengan Index = 3
Value = (5 - 1 - 3 = 1) maka nilai karakter “M” =1
e. Karakter pertama adalah “A” dengan Index = 4
Value = (5 - 1 - 4 = 1) maka nilai karakter “A” =0
Jika ada krakter yang sama muncul maka di ambil nilai tebesar pada nila OH.
Untuk karakter yang tidak dikenali diberikan nilai value dengan jumlah pattren=5

Indeks 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Teks S T M I K B U D I D A R M A M E D A N

Indeks 0 1 2 3 4 -

Pattren D A R M A *

Value 4 3 2 1 3 5

Indeks Langkah 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Teks S T M I K B U D I D A R M A M E D A N

Pattren 1 D A R M A
2 D A R M A
3 D A R M A
4 D A R M A

Keterangan :
Langkah 1:
Pattern A tidak cocok dengan Teks K, maka pergeseran selanjutnya berdasarkan

STMIK BUDI DARMA MEDAN Soeb Arifin, M.Kom


INTEJELENSI BUATAN II TEKNIK INFORMATIKA
nilai dari tabel bad-match. Pada tabel bad-match karakter K tidak terdapat pada tabel,
sehingga pergeseran selajutnya adalah sebanyak jumlah karakter yang ditak ada
yaitu 5.
Langkah 2:
Pattern A tidak cocok dengan Teks I, maka pergeseran selanjutnya berdasarkan nilai
dari tabel bad-match. Pada tabel bad-match karakter K tidak terdapat pada tabel,
sehingga pergeseran selajutnya adalah sebanyak jumlah karakter yang ditak ada
yaitu 5.
Langkah 3:
Pattern A cocok dengan Teks M, maka pergeseran selanjutnya berdasarkan nilai dari
tabel bad-match. Pada tabel bad-match karakter M terdapat pada tabel, sehingga
pergeseran selajutnya adalah sebanyak jumlah karakter yaitu 1.
Langkah 4:
Pattern A cocok dengan Teks A, maka pergeseran selanjutnya dimundurkan satu
langkah. Pattern M cocok dengan Teks M , lalu dimundurkan satu langkah, Pattern
R cocok dengan Teks R, lalu dimundurkan satu langkah, Pattern A cocok dengan
Teks A, lalu dimundurkan satu langkah, Pattern D cocok dengan Teks D, Maka
pattern DARMA telah cocok dengan teks DARMA maka pencarian berhenti..
Latihan
Lakukan pencarian Kata berikut ini:
Teks =
AKU KAMU (3 Hurup Nama Awal) SUKA (4 Hurup Nama Awal) SAMA (5
Hurup Nama Awal)
Pattern = ( 4 Hurup setelah hurup awal nama)

STMIK BUDI DARMA MEDAN Soeb Arifin, M.Kom

Anda mungkin juga menyukai