pencocokan karakter dari kanan, maka akan lebih banyak informasi yang didapat. Algoritma Boyer Moore termasuk algoritma string matching yang paling efisien dibandingkan
algoritma-algoritma string matching lainnya. Karena sifatnya yang efisien, banyak dikembangkan algoritma string matching dengan bertumpu pada konsep algoritma Boyer-
Moore Efendi Kurniadi 2013.
2.8.3.1 Ilustrasi Pencarian String Algortima Boyer-Moore
Teks : OKTAVIANIPRADITA Pattern : PRADITA
1. Mencari nilai suffix
Tabel 2.1 Suffix
Cara mencari : Pada indeks ke – 6 pada tabel suffix beri nilai dari panjang pattern yaitu “PRADITA”
mempunyai panjang karakter 7, maka tabel suffix indeks ke – 6 =7
Tabel 2.2 Proses Pencarian Suffix a
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke – 5 “A” banding “T”, hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke – 4 “A” banding “I”, hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke – 3 “A” banding “D”, hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke – 2 “A” banding “A”, hasil sama maka beri tanda - pada tabel suffix
i 1
2 3
4 5 6
X[i] P
R A
D I
T A
suffix
I 1
2 3
4 5 6
X[i] P
R A
D I
T A
Suffix 0 1
0 0 7
M = panjang pattern
Universitas Sumatera Utara
Tabel 2.3 Proses Pencarian Suffix b
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke – 1 “A” banding “R”, hasil tidak sama maka beri nilai 0 pada tabel suffix
Lalu bandingkan dari kanan ke kiri teks, indeks ke -6 dibandingkan dengan indeks ke – 0 “A” banding “P”, hasil tidak sama maka beri nilai 0 pada tabel suffix
Untuk mencari nilai indeks ke – 2 maka, masukkan rumus i – i – s = 2 – 2 – 1 = 2 – 1 = 1 :
Tabel 2.4 Proses Pencarian Suffix c
i 1
2 3
4 5 6
X[i] P
R A
D I
T A
suffix 0 1
0 0 7
S dalam rumus= jumlah berapa banyak pola yang sama pada keseluruhan teks i dalam rumus = indeks dalam pattern yang cocok yang ingin dicari nilai suffix-nya
2. Membuat tabel BmGs
Isi semua tabel BmGs dengan nilai panjang pattern yaitu 7
Tabel 2.5 Proses Pencarian BmGs
Lakukan pengecekan apakah hasil i + i hasil = suffix : Untuk indeks ke – 6 :
i + i hasil = suffix - 6 + 1 = 7 , 7 = nilai suffix maka sama i
1 2
3 4 5
6 X[i]
P R
A D
I T
A suffix 0
- 0 0
7
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
7
Universitas Sumatera Utara
Tabel 2.6 Proses Pencarian BmGs a
Lakukan pengecekan apakah hasil i + i hasil = suffix : Untuk indeks ke
– 5 : i + i hasil = suffix - 5 + 1 = 6, 6 tidak sama nilai suffix maka sama
Tabel 2.7 Proses Pencarian BmGs b
Lakukan pengecekan apakah hasil i + i hasil = suffix : Untuk indeks ke
– 4 : i + i hasil = suffix - 4 + 1 = 5, 5 tidak sama nilai suffix maka sama
Tabel 2.8 Proses Pencarian BmGs c
Lakukan pengecekan apakah hasil i + i hasil = suffix : Untuk indeks ke
– 3 : i + i hasil = suffix - 3 + 1 = 4, 4 tidak sama nilai suffix maka sama
Tabel 2.9 Proses Pencarian BmGs d
Lakukan pengecekan apakah hasil i + i hasil = suffix : i
1 2
3 4
5 6
X[i] P
R A
D I
T A
suffix 0 1
7 BmGs 7
7 7
7 7
7 7
i 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
7
i 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
7
i 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
7
Universitas Sumatera Utara
Untuk indeks ke – 2 :
i + i hasil = suffix - 2 + 1 = 3, 3 tidak sama nilai suffix maka sama
Tabel 2.10 Proses Pencarian BmGs e
Lakukan pengecekan apakah hasil i + i hasil = suffix : Untuk indeks ke
– 1 : i + i hasil = suffix - 1 + 1 = 2, 2 tidak sama nilai suffix maka sama
Tabel 2.11 Proses Pencarian Bmgs f
Lakukan pengecekan apakah hasil i + i hasil = suffix : Untuk indeks ke
– 0 : i + i hasil = suffix - 0 + 1 = 1, 1 tidak sama nilai suffix maka sama
Tabel 2.12 Proses Pencarian BmGs g
Masukkan rumus untuk mencari batas pencarian perhitungan nilai Bmgs : M
– 1 - i = 7 – 1 - 6 = 0 sebagai batas pertama Karena hanya terdapat 1 saja nilai pencocokan suffix maka perhitungan di atas
selesai Jika terdapat satu atau lebih lagi pencocokan nilai suffix yang sama maka lakukan
perhitungan dengan rumus m – 1 – i untuk batas selanjutnya. Karena tidak ada
untuk batas selanjutnya, maka : I
1 2
3 4
5 6
X[i] P
R A
D I
T A
suffix 0 1
7 BmGs 7
7 7
7 7
7 7
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
7
i 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
7
Universitas Sumatera Utara
Mulai menghitung untuk mengetahui batas kedua M - 2 = 7 - 2 = 5, yang artinya menghitung nilai untuk pencarian tabel Bmgs nya dimulai dari indeks ke
– 0 sampai indeks ke
– 5. Lalu masukkan rumus M - 1 – suffix-i = 0 -7 – 1 – 0 = 6 - artinya indeks yang
ingin diisi dengan nilai Bmgs -M
– 1 – i = 7 – 1 – 0 = 6 - niali Bmgs yang akan diisi pada indeks 6 , maka ubah nilai indeks ke
– 6 menjadi 6
Tabel 2.13 Proses Pencarian BmGs h
i = 1 M – 1 – suffix = 7 – 1 – 0 = 6 - artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 1 = 5 - nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 5
Tabel 2.14 Proses Pencarian BmGs i
i = 2 M – 1 – suffix = 7 – 1 – 1 = 5 - artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 2 = 4 - nilai Bmgs yang akan diisi pada indeks 5 , maka ubah
nilai indeks ke – 5 menjadi 4
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
6
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 7
5
Universitas Sumatera Utara
Tabel 2.15 Proses Pencarian BmGs j
i = 3 M – 1 – suffix = 7 – 1 – 0 = 6 - artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 3 = 3 - nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 3
Tabel 2.16 Proses Pencarian BmGs k
i = 4 M – 1 – suffix = 7 – 1 – 0 = 6 - artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 4 = 2 - nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 2
Tabel 2.17 Proses Pencarian BmGs l
i = 5 M – 1 – suffix = 7 – 1 – 0 = 6 - artinya indeks yang ingin diisi dengan nilai Bmgs
M – 1 – i = 7 – 1 – 5 = 1 - nilai Bmgs yang akan diisi pada indeks 6 , maka ubah
nilai indeks ke – 6 menjadi 1
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 4
5
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 4
3
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 4
2
Universitas Sumatera Utara
Tabel 2.17 Proses Pencarian BmGs m
3. Pembuatan tabel BmBc
Tabel 2.19 BmBc
I 1
2 3
4 5 6 X[i] P
R A
D I
T A Isi indeks paling akhir dengan tanda bintang dan isi tabel akhir dengan panjang
pattern 7
Tabel 2.20 Proses Pencarian BmBc a
X[i] P R A D I
T BmBc
7 Mencari batas pencarian nilai BmBc denga rumus M -2 = 7 – 2 = 5, berarti sampai
indeks ke – 5
Melakukan pencarian nilai BmBc sampai i = 5 dengan rumus M – 1 – i 7 – 1 – 0 = 6, untuk indeks ke - 0 i = 0
7 – 1 – 1 = 5, untuk indeks ke - 1 i = 1 7 – 1 – 2 = 4, untuk indeks ke - 2 i = 2
7 – 1 – 3 = 3, untuk indeks ke - 3 i = 3 7 – 1 – 4 = 2, untuk indeks ke - 4 i = 4
7 – 1 – 5 = 5, untuk indeks ke - 5 i = 5
Tabel 2.21 Proses Pencarian BmBc b
X[i] P R A D I
T BmBc
6 5 4 3 2 1 7
I 1
2 3
4 5
6 X[i]
P R
A D
I T
A suffix 0
1 7
BmGs 7 7
7 7
7 4
1
Universitas Sumatera Utara
4. Melakukan pencocokan string :
Tabel 2.22 Proses Pencocokan String
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 O K T A V I A N I P R
A D
I T
A
0 1 2 3 4 5 6 P R A D I T A
Lihat nilai BmBc pada tabel atas, yaitu “I” = 2 Masukkan rumus : 2 – M+1+i = 2 – 7+1+5 = -11
Lihat nilai BmGs untuk tabel kedua yaitu “T” = 4 Bandingakan nilai -11 dan 4, ambil nilai yang paling besar yaitu 4 untuk
pergeseran
Tabel 2.23 Proses Pencocokan String a
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 O K T A V I A N I P R
A D
I T
A
0 1 2 3 4 5 6 P R A D I T A
Lihat nilai BmBc pada tabel atas, yaitu “R” = 5 Masukkan rumus : 5 – M+1+i = 5 – 7+1+10 = -18
Lihat nilai BmGs untuk tabel kedua yaitu “A” = 1 Bandingakan nilai -18 dan 1, ambil nilai yang paling besar yaitu 1 untuk
pergeseran selanjutnya
Tabel 2.24 Proses Pencocokan String b
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 O K T A V I A N I P R
A D
I T
A
0 1 2 3 4 5 6 P R A D I T A
Lihat nilai BmBc pada tabel atas, yaitu “R” = 5 Masukkan rumus : 5 – M+1+i = 5 – 7+1+5 = -13
Lihat nilai BmGs untuk tabel kedua yaitu “T” = 4
Universitas Sumatera Utara
Bandingakan nilai -13 dan 4, ambil nilai yang paling besar yaitu 4 untuk pergeseran selanjutnya
Tabel 2.25 Proses Pencocokan String c
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 O K T A V I A
N I
P R
A D
I T
A
1 2
3 4
5 6
P R
A D
I T
A
5. Selesai
2.8.4 Algoritma Rabin-Karp