• Tidak ada hasil yang ditemukan

Algoritma Boyer Moore dianggap sebagai algoritma pencocokkan string yang

paling efisien. Algoritma ini melakukan pencocokkan pola dari kanan ke kiri tetapi pergeseran tetap dari kiri ke kanan (Charras et al, 2004). Langkah-langkah yang

dilakukan algoritma boyer moore pada saat mencocokkan string adalah (Soleh,

2010/2011) :

1. Algoritma boyer moore mulai mencocokan pattern pada awal teks.

2. Dari kanan ke kiri, algoritma ini mencocokkan karakter per karakter pattern

dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi :

i. Karakter di pattern dan di teks yang dibandingkan tidak cocok.

ii. Semua karakter di pattern cocok. Kemudian algoritma akan

memberitahukan penemuan di posisi ini.

3. Algoritma kemudian menggeser pattern dengan memaksimalkan nilai

pergeseran good-suffix dan pergeseran bad-character, lalu mengulangi langkah 2

16

2.5.1 Pergeseran bad-character

Pergeseran bad-character adalah pergeseran yang dilakukan berdasarkan

karakter apa yang menyebabkan tidak cocok dan seberapa jauh karakter tersebut dari karakter paling akhir (Argakusumah dkk, 2014). Setiap karakter pada pattern

diberi nilai sesuai dengan ukuran jauhnya karakter tersebut dari karakter paling kanan

dari pattern dan untuk karakter yang tidak terdapat pada pattern diberi nilai sejumlah

karakter pada pattern (Tania, 2015). Pseudocode untuk pergeseran bad-character

(Argakusumah dkk, 2014) : Procedure prebadChars ( Input P : array[0..n-1] of char Input n : integer

Input/output badChars : array[0..n-1] of integer ) Deklarasi : i : integer Algoritma : for (i := 0 to Asize-1) badChars[i] := m; endfor for(i := 0 to m – 2) badChars[P[i]] := m – i – 1; endfor

2.5.2 Menghitung nilai bad-character

Pada subbab ini, digunakan pattern “senang” sebagai contoh perhitungan bad-character. Tahapan menghitung nilai bad-character dari pattern tersebut yaitu:

1. Lakukan pencacahan dari posisi terakhir pattern sampai ke posisi awal, dimulai dengan nilai pergeseran 0 (dalam pattern ini karakter “g”).

2. Mundur ke posisi sebelumnya, nilai pergeseran sebelumnya ditambah 1, karena karakter ”n” belum pernah ditemukan, maka nilai pergeserannya 1.

3. Mundur ke posisi sebelumnya, nilai pergeseran sebelumnya ditambah 1, karena karakter ”a” belum pernah ditemukan, maka nilai pergeserannya 2.

4. Mundur ke posisi sebelumnya, karena karakter “n” sudah pernah ditemukan maka nilai pergeseran sama dengan karakter “n” yang sebelumnya yaitu 1.

5. Mundur ke posisi sebelumnya, karena karakter “e” belum pernah ditemukan maka nilai pergeserannya adalah 4 (nilai pencacah pada karakter “e” ditambah 2 karena nilai pergeseran “n” pernah ditemukan).

17

6. Mundur ke posisi sebelumnya, nilai pergeseran sebelumnya ditambah 1, karena karakter ”s” belum pernah ditemukan, maka nilai pergeserannya 5.

Catatan : untuk karakter selain “s, e, n, a, g” nilai pergeserannya sebesar panjang pattern, yaitu 6 karakter (sepanjang pattern).

Nilai pergeseran dari bad-character yang sudah didapatkan :

Posisi 1 2 3 4 5 6

Pattern s e n a n g *

Nilai pergeseran bad-character 5 4 1 2 1 0 6

2.5.3 Pergeseran good-suffix

Pergeseran good-suffix adalah pergeseran yang dilakukan berdasarkan posisi ketidakcocokan karakter yang terjadi (Argakusumah dkk, 2014). Nilai pergeseran good-suffix digunakan ketika ketidakcocokan ditemukan berdasarkan karakter pada posisi keberapa yang menyebabkan ketidakcocokan. Nilai dari setiap karakter yang ada pada pattern bergantung terhadap ada atau tidaknya perulangan akhiran dari teks pada pattern. Semakin banyak perulangan, maka akan semakin kecil nilai pergeseran (Tania, 2015).

Untuk menentukan nilai tersebut, hitung lebih dahulu nilai tabel suffix yang bertujuan untuk memberi tanda adanya perulangan akhiran. Dari tabel suffix inilah tabel good-suffix akan didapat. Nilai pada tabel suffix akan memberitahu posisi perulangan sehingga saat proses perhitungan tabel good-suffix dapat diketahui seberapa banyak pergeseran yang akan dilakukan untuk pencocokkan selanjutnya (Tania, 2015). Pseudocode mencari nilai suffix (Argakusumah dkk, 2014) :

Procedure suffixes (

Input P : array[0..n-1] of char Input n : integer

Input/output suff : array[0..n-1] of integer ) Deklarasi : f, g, i : integer Algoritma : suff [n - 1] := n; g := n – 1; for (i := n – 2 downto 0) { if ( i > g and (suff [i + n – 1 - f] < i – g)) suff[i] := suff[i + n – 1 – f ]; else if (i < g)

18 g := i; endif f := i; while (g >= 0 and P[g] = P[g + n – 1 – f]) --g; endwhile suff [i] = f – g; endif endfor

Pseudocode pergeseran good-suffix (Argakusumah dkk, 2014) : Procedure goodsuffix (

Input P : array[0..n-1] of char Input n : integer

Input/output goodsuffixes : array[0..n-1] of integer )

Deklarasi : i, j : integer

suff : array [0..RuangAlpabet] of integer Algoritma : suffixes(x,n,suff); for( i := 0 to m-1) goodsuffixes[i] := n endfor j := 0 for (i := n – 1 downto 0) if (suff[i] = i + 1) for (j := j to n – 2 – i) if (goodsuffixes[j] = n) goodsuffixes[j] := n – 1 – i endif endfor endif endfor for(i = 0 to n – 2) goodsuffixes[n – 1 suff[i]] := n – 1 – i; endfor

Setelah diperoleh nilai bad-character dan good-suffix, algoritma boyer moore akan menggunakan nilai maksimum antara kedua nilai tersebut untuk melakukan pergeseran saat pencocokkan (Tania, 2015). Pseudocode algoritma

boyer moore (Argakusumah dkk, 2014) :

Procedure BoyerMooreSearch ( Input m, n : integer

Input P : array[0..n-1] of char Input T : array[0..m-1] of char

output ketemu : array[0..m-1] of boolean )

Deklarasi : i, j, shift, goodsuffixesshift, badcharactershift : integer goodsuffixes : array[0..255] of integer

19 Algoritma : goodsuffix(n, P, goodsuffixes) prebadChars(n, P, badChars) i := 0 while (i <= m – n) do j := n – 1

while (j >= 0 n and T[i + j] = P[j]) do j := j – 1 endwhile if (j < 0) then ketemu[i] := true; shift := goodsuffixes[0] else badcharactershift := badChars[chartoint(T[i + j])] – n + j + 1 goodsuffixesshift := goodsuffixes[j]

shift := max(badcharactershift, goodsuffixesshift) endif

i := i + shift

endwhile

2.5.4 Menghitung nilai good-suffix

Pada subbab ini, digunakan pattern “senang” sebagai contoh perhitungan good-suffix. Tahapan menghitung nilai good-suffix dari pattern tersebut yaitu :

1. Pencocokkan dimulai dari karakter terakhir yaitu “g”, apabila karakter terakhir pada teks bukan “g” maka geser 1 posisi sehingga nilai pergeserannya 1, berlaku untuk semua pattern yang dicari.

Teks s e n a n x a b c d e f

Pattern s e n a n g

Pergeseran s e n a n g

2. Jika karakter “g” sudah cocok, tetapi karakter sebelumnya bukan “n” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.

Teks s e n a x g a b c d e f

Pattern s e n a n g

Pergeseran s e n a n g

3. Jika karakter “ng” sudah cocok, tetapi karakter sebelumnya bukan “a” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.

20

Pattern s e n a n g

Pergeseran s e n a n g

4. Jika karakter “ang” sudah cocok, tetapi karakter sebelumnya bukan “n” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.

Teks s e x a n g a b c d e f

Pattern s e n a n g

Pergeseran s e n a n g

5. Jika karakter “nang” sudah cocok, tetapi karakter sebelumnya bukan “e” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.

Teks s x n a n g a b c d e f

Pattern s e n a n g

Pergeseran s e n a n g

6. Jika karakter “enang” sudah cocok, tetapi karakter sebelumnya bukan “s” maka geser pattern sebanyak 6 karakter sehingga nilai pergeserannya 6, karena teks tersebut bukan “senang”.

Teks x e n a n g a b c d e f

Pattern s e n a n g

Pergeseran s e n a n g

Nilai pergeseran dari good-suffix yang sudah didapatkan :

Posisi 1 2 3 4 5 6

Pattern s e n a n g

Nilai pergeseran good-suffix 6 6 6 6 6 1

2.5.5 Pencarian dengan algoritma boyer moore

Sebelum melakukan pencarian dengan algoritma boyer moore, harus mencari nilai pergeseran bad-character dan pergeseran good-suffix dari pattern terlebih dahulu. Pattern dan teks yang digunakan adalah :

Pattern (p) : senang

21

Berdasarkan nilai pergeseran bad-character dan good-suffix yang sudah didapatkan pada sub bab 2.5.2 dan sub bab 2.5.4. Tahapan pencocokkan antara pattern dengan teks sebagai berikut :

Posisi 1 2 3 4 5 6

Pattern s e n a n g *

Nilai pergeseran bad-character (bc) 5 4 1 2 1 0 6 Nilai pergeseran good-suffix (gs) 6 6 6 6 6 1

1. Pencocokkan pertama, karakter “i” pada teks tidak cocok dengan karakter “g” pada pattern sehingga nilai pergeseran good-suffix 1, karena ketidakcocokan pada karakter terakhir. Karakter “i” tidak ada pada pattern, maka nilai pergeseran bad-character 6. Karena nilai pergeseran bad-character lebih besar, maka geser pattern sebanyak 6 karakter.

Teks a n a k i t u s e n a n g

Pattern s e n a n g

s e n a n g

2. Pencocokkan selanjutnya, karakter “n” pada teks tidak cocok dengan karakter “g” pada pattern sehingga nilai pergeseran good-suffix 1, karena ketidakcocokan pada karakter terakhir. Karakter “n” ada pada pattern, maka nilai pergeseran bad-character 1. Karena nilai pergeseran sama, maka geser pattern sebanyak 1 karakter.

Teks a n a k i t u s e n a n g

Pattern s e n a n g

s e n a n g

3. Pencocokkan selanjutnya, karakter “a” pada teks tidak cocok dengan karakter “g” pada pattern sehingga nilai pergeseran good-suffix 1, karena ketidakcocokan pada karakter terakhir. Karakter “a” ada pada pattern, maka nilai pergeseran bad-character 2. Karena nilai pergeseran bad-character lebih besar, maka geser pattern sebanyak 2 karakter.

Teks a n a k i t u s e n a n g

22

s e n a n g 4. Pencocokkan selanjutnya, karena karakter pada pattern dan teks cocok, maka pencocokkan dihentikan.

Teks a n a k i t u s e n a n g

Pattern s e n a n g

2.6 Pengujian

2.6.1 Pengujian Black Box

Pengujian ini mengarah kepada persyaratan fungsional perangkat lunak. Pengujian memungkinkan penguji mendapatkan serangkaian kondisi input yang memenuhi persyaratan fungsional suatu program. Pengujian berusaha menemukan kesalahan dengan kategori seperti fungsi yang salah, kesalahan antarmuka, kesalahan struktur data, kesalahan kinerja atau kesalahan inisialisasi. Pengujian black box biasanya dilakukan pada tahap akhir pengujian (Nugroho dkk, 2009).

2.6.2 Pengujian White Box

Pengujian ini adalah metode desain kasus uji yang menggunakan struktur kontrol desain prosedural untuk memperoleh kasus uji. Untuk pengujian pada aplikasi multimedia Gegendingan Bali ini menggunakan jenis pengujian white box basis path testing. Basispathtesting memungkinkan untuk mengukur kompleksitas logis dari rancangan procedural dan bisa digunakan sebagai pedoman untuk menetapkan jalur eksekusi dasar (basis set) (Nugroho dkk, 2009).

Jenis ini menggunakan notasi flow graph yang menggambarkan aliran kontrol logika. Untuk menentukan jalur independen dari graph digunakan nilai kompleksitas siklomatis (ukuran kuantitatif terhadap kompleksitas suatu program (Nugroho dkk, 2009). Ada 3 cara mencari kompleksitas siklomatis :

1. Jumlah region flow graph

2. Kompleksitas siklomatis V(G) untuk flow graph G dihitung V(G) = jumlah edge – jumlah node + 2

3. V(G) = jumlah node predikat pada flow graph + 1

Nilai dari cyclomatic complexity (Aivosto, 2013), sebuah cyclomatic complexity tinggi menunjukan prosedur kompleks yang sulit dipahami, tes dan

23

pengelolaan. Pada tabel 2.6 menjelaskan hubungan nilai cyclomatic complexity dengan risiko dalam prosedur.

Tabel 2. 6 Hubungan cyclomaticcomplexity dengan risiko (Aivosto, 2013)

CC Jenis prosedur Risiko

1-4 prosedur sederhana Rendah

5-10 Prosedur stabil dan terstruktur Rendah

11-20 Prosedur yang lebih kompleks Sedang

21-50 Prosedur yang kompleks dan mengkhawatirkan Tinggi >50 Kesalahan rawan, sangat merepotkan, prosedur tak

teruji

Sangat tinggi

2.6.3 Stress Testing

Pengujian ini dilakukan untuk melawan program pada keadaan abnormal. Pengujian ini mengeksekusi sistem dalam kondisi kuantitas sumber daya yang abnormal (Nugroho dkk, 2009). Pada pengujian ini menggunakan perangkat lunak untuk pengujian web yang bernama webserver stress tool. Pengujian ini akan memastikan bahwa pengguna mengakses web akan merasa nyaman dan tidak terganggu. Jakob Nielsen menyarankan ambang batas kinerja untuk website seperti pada tabel 2.7.

Tabel 2. 7 Tabel ambang batas kinerja untuk website (Paessler) Waktu tunggu pengguna

saat mengakses

Reaksi Pengguna

< 0,1 detik Pengguna merasa bahwa sistem bereaksi seketika < 1,0 detik Pengguna tidak terganggu. Pengguna tidak senang

dengan menunggu, tapi pengguna masih fokus pada halaman web saat ini

< 10 detik Menunggu mendekati 10 detik, penelitian menunjukkan bahwa kemungkinan gangguan pengguna sangat meningkat

> 10 detik Pengguna kemungkinan besar terganggu dari situs yang diakses dan kehilangan minat

24

Pengujian dilakukan dengan metode Click Test, tes ini diuji dengan melakukan klik pada web. Tes ini selesai ketika jumlah klik yang diuji untuk web oleh setiap pengguna terpenuhi. Tes ini cocok untuk menguji urutan halaman web tertentu.

2.6.4 Pengujian Input Data

Pengujian input data ini adalah tindakan untuk menguji edit dan kontrol dalam pemasukan data, misalnya : validasi dan cek digit. Ada beberapa pengujian saat input data seperti pengecekan karakter, pengecekan nilai numerik, pengecekan digit, pengujian batas, pengujian kelogisan, kompatibilitas internal, cek data silang, transaksi ganda dan lain sebagainya (Supriyanto, 2005).

2.6.5 Penilaian Relevansi

Penilaian relevansi dimaksudkan untuk menyatakan dokumen mana yang dinilai sesuai atau tepat dari dokumen-dokumen yang telah ditemukan dari proses temu balik informasi. Ada dua hal penting yang biasanya digunakan sebagai acuan dalam mengukur kemampuan suatu Sistem Temu Balik Informasi (STBI) yaitu perolehan (recall) dan ketepatan (precision/presisi) (Hasugian, 2006).

Perolehan berhubungan dengan kemampuan sistem untuk memanggil dokumen yang relevan sedangkan ketepatan berkaitan dengan kemampuan sistem untuk tidak memanggil dokumen yang tidak relevan. Recall sebenarnya sulit diukur karena jumlah seluruh dokumen yang relevan dalam database sangat besar. Oleh karena itu presisi-lah yang biasanya menjadi salah satu ukuran yang digunakan untuk menilai keefektifan suatu STBI (Hasugian, 2006). Menghitung presisi menggunakan rumus :

� � = � � � �

Rentang nilai ketepatan yang digunakan adalah 0 sampai 1, dengan toleransi 2 digit dibelakang koma. Ada tiga kelas presisi yaitu : presisi tinggi, sedang dan rendah. Tolak ukur yang digunakan untuk menyatakan kategori tersebut ialah skala interval dengan mencari selisih kemungkinan angka presisi tertinggi (1) dengan kemungkinan angka presisi terendah (0) kemudian dibagi 3 sesuai kategori penilaian, riilnya adalah (1-0) : 3 = 0,33 (Hasugian, 2006).

Dokumen terkait