Algoritma Maximal Shift Bahasa C

String matching adalah pencarian sebuah pattern pada sebuah teks. Prinsip kerja algoritma string matching adalah sebagai berikut Effendi, et al, 2013: 1. Memindai teks dengan bantuan sebuah window yang ukurannya sama dengan panjang pattern. 2. Menempatkan window pada awal teks. 3. Membandingkan karakter pada window dengan karakter dari pattern. Setelah pencocokan baik hasilnya cocok atau tidak cocok, dilakukan shift ke kanan pada window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut mekanisme sliding-window. Algoritma string matching mempunyai tiga komponen utama Effendi, et al, 2013, yaitu: 1. Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks, dinyatakan dengan x[0..m-1], panjang pattern dinyatakan dengan m. 2. Teks, yaitu tempat pencocokan pattern dilakukan, dinyatakan dengan y[0..n- 1], panjang teks dinyatakan dengan n. 3. Alfabet, yang berisi semua simbol yang digunakan oleh bahasa pada teks dan pattern , dinyatakan dengan ∑ dengan ukuran dinyatakan dengan ASIZE.

2.4. Algoritma Maximal Shift

Algoritma Maximal Shift adalah algoritma yang mencari pola dalam teks dengan cara pola dicari dari karakter yang memiliki nilai minShift yang terbesar hingga minShift yang terkecil. Sunday merancang sebuah algoritma dimana karater pola yang satu akan menyebabkan pergeseran yang lebih besar dan yang satu lainnya menyebabkan pergeseran yang lebih pendek. Tahapan proses dari algoritma Maximal shift terdiri dari memilah karakter pola dalam urutan penurunan pergeseran, membangun bad- charaters shift dan fungsi good-suffix Shif. Fungsi tersebut disesuaikan dengan urutan scanning karakter pola, Charras Lecroq, 2004. Langkah-langkah proses algoritma Maximal Shift yaitu: Universitas Sumatera Utara Proses pertama adalah prosedur perhitungan nilai minShift karakter pola yang akan digunakan untuk proses pengurutan. Dapat dilihat pada Tabel 2.1. . Tabel 2.1 Menentukan Nilai MinShift pada Contoh. Proses kedua adalah orderPattern yang digunakan untuk mengurutkan karakter pada pola dari nilai minShift tertinggi hingga terkecil pada pola. Jika menemukan karakter yang memiliki nilai minShift yang sama maka pengurutan didasarkan pada posisi pencarian dari kanan ke kiri, yaitu posisi karakter yang di temukan dahulu diurutkan lebih awal. Seperti pada Tabel 2.2. Tabel 2.2 OrdernPattern Maximal Shift pada Contoh. I 1 2 3 4 5 6 7 Pat[i].loc 3 2 7 6 5 4 1 Pat[i].c G A G A G A C G Proses ketiga adalah preQsBc yang mengitung nilai qsBc pada tiap-tiap karakter yang selanjutnya nilai tersebut kemungkinan akan digunakan untuk pergeseran pola dengan cara menetukan posisi karakter dalam pola dari kanan ke kiri dan jika ada karakter sama dalam pola maka posisi karakter yang pertama ditemukan yang dicatat. Seperti pada Tabel 2.3. Tabel 2.3 Perhitungan preqsBc pada Contoh i 1 2 3 4 5 6 7 x[i] G C A G A G A G minShift[i] 1 2 3 3 2 2 2 2 c A C G T qsBc[c] 2 7 1 9 Universitas Sumatera Utara Proses keempat adalah preAdatedGs yang menghitung nilai pada tiap posisi dan kemudian nilai inilah yang kemungkinan akan digunakan untuk pergeseran pada pola. Dapat dilihat pada Tabel 2.4. Tabel 2.4 Perhitungan adaptedGs pada Contoh. i 1 2 3 4 5 6 7 adaptedGs[i] 1 3 3 7 4 7 7 7 Universitas Sumatera Utara Gambar 2.1 Tahap pencarian algoritma Maximal Shift.

2.5. Algoritma Quick Search