Pencarian Fase Pemrosesan Awal

Untuk setiap i dimana 0 ≤ i ≤ m definisikan dua himpunan yang disjoint: Posi={k : 0 ≤ k ≤ i dan x[i] = x[i-k]} Negi={k : 0 ≤ k ≤ i dan x[i] ≠ x[i-k]} For 1 ≤ k ≤ m, biarkan hmin[k] menjadi nilai terkecil ℓ dimana ℓ ≥ k-1 dan k bukan elemen dari Negi untuk semua i dimana ℓ i ≤ m-1. For 0 ≤ ℓ ≤ m-1, biarkan kmin[ℓ] menjadi nilai terkecil k dimana hmin[k]= ℓ ≥ k jika ada k dan kmin [ℓ]=0 jika tidak ada k. For 0 ≤ ℓ ≤ m-1, biarkan rmin[ℓ] menjadi nilai terkecil k dimana r ℓ dan hmin[r]=r-1. Nilai dari h[0] diisi dengan m-1. Setelah itu, increment kmin [ℓ], semua indeks h[1], ..., h[d] dimana kmin[h[i ]] ≠ 0 dan isi rcGs[i] dengan kmin[h[i]] untuk 1 ≤ i ≤ d. lalu pilih indeks h[d+1], ... , h[m-1] untuk di-increment dan isi rcGs[i] dengan rmin[h[i]] untuk d i m. Percobaan Diketahui: Teks T, Pattern P: s = m = 8 Pemrosesan awal akan menghasilkan tabel rcBc dan rcGs. Fase Pencocokan Pattern: Percobaan ke-1 Shift by 1 rcBc[A][s], s = 8, and change s = 1 Percobaan ke-2 Shift by 2 rcGs[1], and change s = 2 Percobaan ke-3 Shift by 2 rcGs[1], and change s = 2 Percobaan ke-4 Shift by 7 rcGs[8], and change s = 7 Percobaan ke-5 Shift by 2 rcGs[1], and change s = 2 Percobaan ke-6 Shift by 5 rcBc[A][s], s = 2, and change s = 5 Untuk mencocokkan pattern GCAGAGAG pada GCATCGCAGAGAGT- ATACAGTACG memerlukan percobaan sebanyak 6 kali percobaan dengan jumlah perbandingan sebanyak 16 kali.

2.6 Kompleksitas Algoritma

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus efisien. Kemangkusan algoritma diukur dari berapa jumlah waktu dan ruang space memori yang dibutuhkan untuk menjalankanya. Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang[9]. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan n, yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang baik. Gambar di bawah ini membuktikan alasan memerlukan algoritma yang mangkus dimana ukuran masukan mempengaruhi waktu komputasi. Gambar 2.2 Waktu komputasi algoritma Pengukuran waktu yang diperlukan oleh sebuah algoritma adalah dengan menghitung banyaknya operasiinstruksi yang dieksekusi. Untuk mengetahui besaran waktu pada sebuah operasi tertentu, maka dapat dihitung dengan cara berapa waktu sesungguhnya untuk melaksakan algoritma tersebut.