Algoritma Skip Search Algoritma String Matching pencocokan string

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