ANALISIS DAN PERANCANGAN
2. Fungsi Kinerja Algoritma
3.4 Analisis Proses
3.4.1 Analisis Pencocokan String menggunakan Algoritma Brute Force dan Algoritma Optimal Mismatch
Algoritma Brute Force digunakan untuk pencocokkan pada setiap posisi dalam teks dari karakter pertama sampai karakter terakhir. Sesudah pencocokkan pertama terjadi, maka proses shift dilakukan dengan berpindah tepat satu posisi ke arah kanan (berpindah ke karakter kedua, ketiga dan seterusnya sampai ditemukan kecocokan). Algoritma Brute Force tidak memerlukan tahap praprocessing. Selama tahap pencarian, perbandingan karakter pada teks dapat selesai pada posisi manapun.
Pada algoritma Brute Force, didefenisikan T sebagai teks dan P sebagai pattern.
Kemudian dilakukan pencocokan oleh pattern terhadap teks. Untuk tahap pertama, dilakukan pencocokkan terhadap teks sepanjang karakter dari pattern. Apabila terjadi kecocokkan karakter pertama pada teks dan karakter pertama pada pattern, maka dimulailah proses pencocokkan pertama. Pada pencocokkan pertama, dilakukan pencocokkan pada karakter kedua pada masing-masing teks dan pattern. Apabila terjadi kecocokkan pada pencocokkan ini, maka lakukanlah untuk karakter-karakter selanjutnya.
Jika ketidakcocokkan terjadi, maka proses akan berlanjut pada tahap kedua.
Tahap kedua dilakukan dengan berpindah satu karakter ke karakter berikutnya ke arah kanan dari tahap pertama. Dilakukanlah pencocokkan karakter kedua dari teks dan karakter pertama pada pattern pada tahap sebelumnya. Jika ditemukan kecocokkan, maka dimulailah proses pencocokkan kedua. Selanjutnya lakukan pencocokan pada karakter ketiga pada teks dan karakter kedua pada pattern.Apabila terjadi kecocokan, lanjut ke karakter-karakter berikutnya dan apabila tidak terjadi ketidakcocokan, maka proses akan
berlanjut pada tahap ketiga, berpindah satu karakter ke arah kanan terhadap teks. Setelah tahap demi tahap dilakukan, sehingga ditemukanlah kecocokkan pada teks yang karakternya sama panjang terhadap karakter pada pattern. Kemudian proses berakhir saat karakter terakhir pada teks telah dilakukan pencocokkan terhadap karakter terakhir pada pattern yang sudah ditemukan atau tidaknya pattern pada teks.(Nababan, A. 2015).
Pada algoritma Optimal Mismatch, algoritma inimelakukan pencarian kata secara berurut pada tiap karakter pada kumpulan teks sehingga pencarian seperti ini sering disebut pencarian sekuensial (sequential search). Algoritma Optimal Mismatch mencari pola karakter mulai dari frekuensi yang paling sedikit hingga frekuensi yang paling banyak pada teks. Sebelum menggunakan Algoritma Optimal Mismatch, terdapat tiga tahap yang harus dilewati, antara lain sebagai berikut : (Handika, W. 2006)
4. Tahap pertama adalah prosedur pengurutan karakter pada pola. Dimana karakter pada pola atau yang biasa disebut order pattern berguna untuk mencari frekuensi tiap-tiap karakter pada teks, kemudian mengurutkan pola karakter mulai dari frekuensi terendah sampai frekuensi tertinggi. Jika terdapat dua atau lebih karakter yang berbeda tetapi memiliki frekuensi yang sama, maka pengurutan didasarkan pada posisi pencarian dari kanan ke kiri, yang berarti karakter yang pertama kali ditemukan terlebih dahulu diurutkan lebih awal. Penjelasan ini dapat dilihat pada gambar 3.3 berikut.
Tabel 3.3 Pola karakter setelah diurutkan
indeks 0 1 2 3 4
x[i] P U T R I
Pat[i].loc 3 2 0 1 4
Pat[i].c R T P U I
1. Tahap kedua adalah prosedur Quick Search bad character atau preQsBc yang menghitung nilai qsBc pada tiap tiap karakter yang selanjutnya nilai tersebut kemungkinan akan digunakan untuk pergeseran pada pola dengan cara menentukan posisi karakter dalam pola dari kanan ke kiri dan jika ada karakter yang sama dalam pola, maka posisi karakter yang pertama ditemukan yang dicatat. Penjelasan ini dapat dilihat pada gambar 3.4 berikut.
Tabel 3.4 Frequensi Karakter dan PreQsBc Algoritma Optimal Mismatch
Karakter D W I _ S U C A N P T R
Frequensi 1 1 4 2 1 2 1 1 1 1 1 1
QsBc 6 6 1 6 6 4 6 6 6 5 3 2
5. Tahap ketiga adalah pencarian nilai pergeseran karakter dalam teks menggunakan good suffix adapted. Dimana yang selanjutnya akan dimulai langkah-langkah pencarian dengan menggunakan Algoritma Optimal Mismatch dengan memulai pencarian string dengan cara mencocokkan pola sesuai dengan urutan yang ditentukan.Penjelasan ini dapat dilihat pada gambar 3.5 berikut.
Tabel 3.5 PreAdaptedGs Algoritma Optimal Mismatch
indeks 0 1 2 3 4 5
AdaptedGs[i] 1 4 4 4 4 4
Selanjutnya, berikut merupakan tahapproses pencocokkan kata yang telah dijelaskan di atas pada algoritma Brute Forcedan algoritma Optimal Mismatch, dimana T merupakan teks dan P merupakan pattern dalam mencocokan karakter.
Sebagai contoh :
Teks ( T ) = DWI_SUCIANI_PUTRI Pattern ( P ) = PUTRI
indeks 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
indeks 0 1 2 3 4 Pattern P U T R I
Langkah 1
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
langkah 1 pada Brute Force,tidak ditemukan ketidakcocokkan karakter ke-0 pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Pada algoritma Optimal Mismatch
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 1 pada algoritma Optimal Mismatch,Urutan pencarian dimulai dari karakter “i”
pada pattern yang ternyata tidak cocok dengan karakter “s” pada teks, maka dilakukkan pergeseran yang akan ditentukan oleh nilai :
QsBc [U] = 4 AdaptedGs [i] = 1 Nilai Geser = 0 Nilai Selisih = 12
Nilai yang akan dipakai untuk pergeseran adalah nilai yang lebih besar atau dalam hal ini adalah max(4,1) = 4
Langkah 2
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
langkah 2 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-1 pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Pada algoritma Optimal Mismatch
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 2 pada algoritma Optimal Mismatch,Urutan pencarian dimulai dari karakter “I”
pada pattern yang ternyata tidak cocok dengan karakter “A” pada teks, maka dilakukkan pergeseran yang akan ditentukan oleh nilai :
QsBc [N] = 6 AdaptedGs [i] = 1 Nilai Geser = 4 Nilai Selisih = 12
Nilai yang akan dipakai untuk pergeseran adalah nilai yang lebih besar atau dalam hal ini adalah max(6,1) = 6
Langkah 3
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah3 pada algortima Brute Force, tidak ditemukan ketidakcocokkan karakter ke-2 pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Pada algoritma Optimal Mismatch
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 3 pada algoritma Optimal Mismatch,Urutan pencarian dimulai dari karakter “I”
pada pattern yang ternyata tidak cocok dengan karakter “T” pada teks, maka dilakukkan pergeseran yang akan ditentukan oleh nilai :
QsBc [R] = 2 AdaptedGs [i] = 1 Nilai Geser = 10 Nilai Selisih = 12
Nilai yang akan dipakai untuk pergeseran adalah nilai yang lebih besar atau dalam hal ini adalah max(2,1) = 2
Langkah 4
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 4 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-3pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Pada algoritma Optimal Mismatch
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
Langkah 4 pada algoritma Optimal Mismatch,Urutan pencarian dimulai dari karakter “I”
pada pattern yang ternyata cocok dengan karakter “I” pada teks, maka pencarian dilanjutkan dengan mencari karakter “R” pada pattern yang ternyata juga cocok dengan karakter “R” pada teks, maka pencarian dilakukan lagi pada karakter “T” ,karakter “U”
dan karakter “P” pada pattern sehingga pencarian dianggap menemukan output yang sama pada sepanjang bagian karakter terakhir pada teks. Selanjutnya tidak dilakukkan pergeseran, sehingga nilai pergeseran menjadi :
Nilai Geser = 12 Nilai Selisih = 12
Karena nilai geser = 12 dan nilai selisih = 12, maka pencarian dianggap selesai.
Langkah 5
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 5 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-4pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 6
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 6 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-5pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 7
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 6 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-6 pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 8
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 8 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-7pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 9
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 9 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-8pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 10
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Pada langkah 10 algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-9pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 11
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 11 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-10pada teks dan karakter pertama pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 12
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 12 pada algoritma Brute Force, tidak ditemukan ketidakcocokkan karakter ke-11pada teks dan karakter ke-0 pada pattern maka dilakukkan pergeseran, patternberpindah satu kali ke karakter berikutnya ke arah kanan.
Langkah 13
Pada algoritma Brute Force
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Teks D W I _ S U C I A N I _ P U T R I
Pattern P U T R I
0 1 2 3 4
Langkah 13 pada algoritma Brute Force, ditemukan kecocokkan pada karakter ke-12 pada teks yang karakternya sama panjang terhadap karakter pada pattern. Maka proses berakhir saat karakter terakhir pada teks telah dilakukan pencocokkan terhadap karakter terakhir pada pattern yang sudah ditemukan.