Pada Tabel 2.4, perbandingan karakter pertama x[1] = y[j+1] masih mengalami
ketidakcocokan. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k.
Tabel 2.5 Proses Pencocokan Algoritma Not So Naive di Percobaan Kelima
Pada Tabel 2.5, perbandingan karakter mengalami kecocokan x[1] == y[j+1]
dimulai dari perbandingan karakter W, I, J, dan A semua mengalami kecocokan, oleh sebab itu teks akan dikeluarkan. Namun, algoritma Not So Naive tidak
berhenti sampai disini. Algoritma Not So Naive akan melakukan percobaan terus sampai sisa teks lebih kecil daripada pola. Untuk percoabaan selanjutnya, posisi
pola akan digeser sebanyak 2 posisi sesuai dengan nilai variabel ell.
Tabel 2.6 Proses Pencocokan algoritma Not So Naive di Percobaan Keenam
Pada Tabel 2.6, perbandingan karakter pertama mengalami ketidakcocokan x[1]
= y[j+1]. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k. Namun dikarenakan sisa
teks telah lebih kecil daripada pola maka fase pencarian berhenti disini.
2.1.1.2 Algoritma Skip Search
Algoritma Skip Search merupakan salah satu algoritma pencocokan string, yang dipublikasikan secara luas oleh Charas, C et al., 1998. Cara kerja algoritma Skip
Search seperti algoritma Knuth Morris Pratt dengan mendeteksi jendela dari karakter yang ada dari kiri ke kanan dan menyimpannya ke dalam sebuah wadah
untuk menentukan titik awal dari jendela karakter tersebut Charas et al., Naser et al., 2012, 1998.
V 1
2 3
4 5
6 7
8 9
10 Teks
R I
C K
Y W
I J
A Y
A Pola
W I
J A
VI 1
2 3
4 5
6 7
8 9
10 Teks
R I
C K
Y W
I J
A Y
A Pola
W I
J A
Universitas Sumatera Utara
Jadi, terdapat suatu pola yang ingin kita cari dan kita inisialkan x dan memiliki panjang yang kita inisialkan dengan m. Teks yang ingin kita cari kita
inisialkan y dan memiliki panjang yang kita inisialkan dengan n. Untuk setiap simbol alfabet, sebuah wadah akan menyimpan semua posisi simbol dari x. Saat
sebuah simbol berulang sebanyak k di dalam teks, maka akan ada sebanyak k posisi yang sesuai dalam wadah simbol. Saat pola lebih pendek daripada alfabet
yang ada dalam teks, maka akan ada banyak tempat kosong dalam wadah. Dalam perulangan utama dari fase pencarian terdapat proses memeriksa
setiap teks simbol ke m, Yj yang nantinya iterasi utama nm. Untuk Yj, menggunakan setiap posisi yang ada di wadah z[Yj] untuk mendapatkan titik awal
yang memungkinkan p dari x di dalam y. Lalu dilakukan proses perbandingan x dengan y dari posisi p, simbol dengan simbol, sampai terjadi ketidakcocokan atau
seluruhnya cocok Charras et al., 1998. Algoritma Skip Search memiliki efisiensi dalam mencari huruf kecil dalam pola yang panjang Naser et al., 2012.
2.1.1.2.1 Fase Preprocessing Algoritma Skip Search
Tahap preprocessing Algoritma Skip Search terdiri dari tahap komputasi wadah untuk menampung seluruh karakter alfabet untuk c ∈ ∑
z[c] = { i; 0 ≤ i ≤ m-1 and x[i] = c}.
Ruang dan waktu kompleksitas dari fase preprocessing adalah O m+ Charras
Lecroq, 2004. Berikut diberikan contoh pada Tabel 2.7 untuk menunjukkan proses pencarian Algoritma Skip Search dengan pola WIJA yang akan dicari pada
teks RICKYWIJAYA.
Tabel 2.7 Tabel Teks dan Pola yang akan Dijadikan Contoh Kasus
Maka hasil dari fase preprocessing Algoritma Skip Search dapat dilihat di Tabel 2.8
1 2
3 4
5 6
7 8
9 10
Teks R
I C
K Y
W I
J A
Y A
Pola W
I J
A
Universitas Sumatera Utara
Tabel 2.8 Tabel Hasil preprocessing dari Algoritma Skip Search
2.1.1.2.2 Fase Pencarian Algoritma Skip Search
Dalam Fase Pencarian, algoritma Skip Search menggunakan aturan The Two Window Rule untuk menentukan batas sampai mana pola boleh digeser. Panjang
batas The Two Window Rule menggunakan rumus 2m-1 dimana m adalah panjang dari pola Bhandari Kumar, 2013. Lalu panjang dari hasil aturan The Two
Window Rule akan bernilai ganjil dan karakter yang terdapat di tengah panjang teks tersebutlah yang akan dilakukan proses pencocokan.
Gambar 2.1 Penentuan Panjang window dan Karakter Tengah yang akan
Digunakan dalam Proses Pencocokan 1
Dari Gambar 2.1 didapatkan batas panjang untuk pola digeser adalah dari urutan
0 huruf R sampai urutan 6 huruf I dan karakter yang akan digunakan dalam
proses pencocokan adalah karakter K. Namun, berdasarkan tabel 8 karakter K c
z[c] A
3 C
∅ I
1 J
2 K
∅ R
∅ W
Y ∅
Universitas Sumatera Utara
bernilai nol tidak ada dalam pola maka percobaan akan dilanjutkan dengan posisi jendela digeser sebanyak 4 posisi sesuai dengan panjang pola m.
Gambar 2.2 Penentuan Panjang window dan Karakter Tengah yang akan
Digunakan dalam Proses Pencocokan 2
Dari Gambar 2.2 didapatkan batas panjang untuk pola digeser adalah dari urutan 4 huruf W sampai urutan 10 huruf A dan karakter yang akan digunakan dalam
proses pencocokan adalah karakter J. Berdasarkan tabel 8 karakter J terdapat di
posisi 2 dalam pola, oleh karena itu pola akan langsung diposisikan menurut posisi J, dan dilakukan proses pencocokan dari urutan 5, 6, 7 dan 8. Dalam
pencocokan 2 ini, pola yang berisi karakter W, I, J, dan A mengalami kecocokan maka teks akan ditampilkan. Dan fase pencarian berhenti sampai disini. Ini
dikarenakan saat pola digeser sebanyak 4 posisi, panjang teks untuk dibandingkan hanya bersisa 3 dimana panjang pola lebih banyak daripada panjang teks yang
akan dicocokan.
2.2. Kompleksitas Algoritma