19
Algoritma : goodsuffixn, P, goodsuffixes
prebadCharsn, P, badChars i := 0
while i = m
– n do j := n
– 1 while j = 0 n and T[i + j] = P[j] do
j := j – 1
endwhile if j 0 then
ketemu[i] := true; shift := goodsuffixes[0]
else badcharactershift := badChars[chartointT[i + j]]
– n + j + 1 goodsuffixesshift := goodsuffixes[j]
shift := maxbadcharactershift, goodsuffixesshift endif
i := i + shift endwhile
2.5.4 Menghitung nilai good-suffix
Pada subbab ini, digunakan pattern “senang” sebagai contoh perhitungan
good-suffix. Tahapan menghitung nilai good-suffix dari pattern tersebut yaitu : 1.
Pencocokkan dimulai dari karakter terakhir yaitu “g”, apabila karakter terakhir pada teks bukan “g” maka geser 1 posisi sehingga nilai pergeserannya 1,
berlaku untuk semua pattern yang dicari. Teks
s e
n a
n x
a b
c d
e f
Pattern s
e n
a n
g Pergeseran
s e
n a
n g
2. Jika karakter “g” sudah cocok, tetapi karakter sebelumnya bukan “n” maka
geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.
Teks s
e n
a x
g a
b c
d e
f Pattern
s e
n a
n g
Pergeseran s
e n
a n
g 3.
Jika karakter “ng” sudah cocok, tetapi karakter sebelumnya bukan “a” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks
tersebut bukan “senang”. Teks
s e
n x
n g
a b
c d
e f
20
Pattern s
e n
a n
g Pergeseran
s e
n a
n g
4. Jika karakter “ang” sudah cocok, tetapi karakter sebelumnya bukan “n”
maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.
Teks s
e x
a n
g a
b c
d e
f Pattern
s e
n a
n g
Pergeseran s
e n
a n
g 5.
Jika karakter “nang” sudah cocok, tetapi karakter sebelumnya bukan “e” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks
tersebut bukan “senang”. Teks
s x
n a
n g
a b
c d
e f
Pattern s
e n
a n
g Pergeseran
s e
n a
n g
6. Jika karakter “enang” sudah cocok, tetapi karakter sebelumnya bukan “s”
maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.
Teks x
e n
a n
g a
b c
d e
f Pattern
s e
n a
n g
Pergeseran s
e n
a n
g Nilai pergeseran dari good-suffix yang sudah didapatkan :
Posisi 1
2 3
4 5
6 Pattern
s e
n a
n g
Nilai pergeseran good-suffix 6
6 6
6 6
1
2.5.5 Pencarian dengan algoritma boyer moore
Sebelum melakukan pencarian dengan algoritma boyer moore, harus mencari nilai pergeseran bad-character dan pergeseran good-suffix dari pattern
terlebih dahulu. Pattern dan teks yang digunakan adalah : Pattern p : senang
Teks t : anak itu senang
21
Berdasarkan nilai pergeseran bad-character dan good-suffix yang sudah didapatkan pada sub bab 2.5.2 dan sub bab 2.5.4. Tahapan pencocokkan antara
pattern dengan teks sebagai berikut : Posisi
1 2
3 4
5 6
Pattern s
e n
a n
g Nilai pergeseran bad-character bc
5 4
1 2
1 6
Nilai pergeseran good-suffix gs 6
6 6
6 6
1 1.
Pencocokkan pertama, karakter “i” pada teks tidak cocok dengan karakter “g” pada pattern sehingga nilai pergeseran good-suffix 1, karena ketidakcocokan
pada karakter terakhir. K arakter “i” tidak ada pada pattern, maka nilai pergeseran
bad-character 6. Karena nilai pergeseran bad-character lebih besar, maka geser pattern sebanyak 6 karakter.
Teks a
n a
k i
t u
s e
n a
n g
Pattern s e
n a
n g
s e
n a
n g
2. Pencocokkan selanjutnya, karakter “n” pada teks tidak cocok dengan
karakter “g” pada pattern sehingga nilai pergeseran good-suffix 1, karena ketidakcocokan pada karakter terakhir. K
arakter “n” ada pada pattern, maka nilai pergeseran bad-character 1. Karena nilai pergeseran sama, maka geser pattern
sebanyak 1 karakter. Teks
a n
a k
i t
u s
e n
a n
g Pattern
s e
n a
n g
s e
n a
n g
3. Pencocokkan selanjutnya, karakter “a” pada teks tidak cocok dengan
karakter “g” pada pattern sehingga nilai pergeseran good-suffix 1, karena ketidakcocokan pada karakter terakhir. K
arakter “a” ada pada pattern, maka nilai pergeseran bad-character 2. Karena nilai pergeseran bad-character lebih besar,
maka geser pattern sebanyak 2 karakter. Teks
a n
a k
i t
u s
e n
a n
g Pattern
s e
n a
n g
22
s e
n a
n g
4. Pencocokkan selanjutnya, karena karakter pada pattern dan teks cocok,
maka pencocokkan dihentikan. Teks
a n
a k
i t
u s
e n
a n
g Pattern
s e
n a
n g
2.6 Pengujian