• Tidak ada hasil yang ditemukan

ANALISIS DAN PERANCANGAN SISTEM

3.3 Analisis Sistem

Sistem yang akan dibangun adalah aplikasi kamus digital. Kamus ini akan memberikan informasi tentang makna kata maupun contoh penggunaan dalam kalimat yang mengandung kata tersebut dalam dua versi yaitu, menurut kamus umum bahasa Inggris dan kamus khusus istilah teknologi informasi. Kamus yang dibangun merupakan kamus ekabahasa, yang menggunakan hanya satu bahasa saja pada kata masukan dan defenisinya, yaitu bahasa Inggris. Kamus ini juga akan ditambahi dengan fitur autocomplete yang akan mempermudah pengguna dalam mengetikkan kata yang diinginkan. Fitur ini akan menampilkan prediksi kata yang pengguna ingin tulis tanpa harus menuliskan kata atau frasa tersebut secara lengkap pada kolom pencarian.

Analisis sistem ini berisi penerapan algoritma Boyer-Moore untuk menampilkan autocomplete yang disertai dengan flowchart, perhitungan algoritma Boyer-Moore, dan perancangan antarmuka sistem.

3.3.1 Penerapan algoritma Boyer-Moore untuk menampilkan autocomplete

Pertama-tama, user akan menginputkan kata/huruf pada kolom pencarian. Setiap kali

user mengetikkan suatu kata/huruf yang dicari, secara langsung sistem akan menganggap kata tersebut sebagai sebuah string input yang akan dicocokkan dengan

string target yang merupakan kata yang diambil dari database. Pertama kali sistem akan mengambil semua kata yang terdapat pada database. Dari proses tersebut, akan diperoleh list kata yang selanjutnya secara otomatis dianggap sebagai string yang akan dicocokkan dengan input. Kemudian sistem akan mulai mencocokkan satu persatu dari list kata yang diperoleh dengan string input dimulai dari kata pertama pada list. Pada proses pencocokan, setiap kata akan diubah menjadi untaian karakter. Proses pencocokan dilakukan dengan menggunakan algoritma Boyer-Moore. Algoritma ini akan melakukan pergeseran string input sepanjang string target, dimana besar pergeseran ditentukan berdasarkan nilai pergeseran terbesar dari tabel bad-character

23

dan good-suffix. Selanjutnya, variabel pos akan diinialisasi sebagai variabel yang akan menyimpan nilai yang dihasilkan selama pencocokan berlangsung. Nilai variabel pos akan terus ter-update sampai pencocokan selesai. Apabila string input ditemukan pada

string target maka variabel pos akan bernilai sesuai dengan indeks posisi ditemukannya string input tersebut pada string target kemudian kata yang merupakan

string target tersebut akan ditampilkan sebagai word suggestion, sedangkan apabila

string input tidak ditemukan maka variabel pos akan bernilai -1 dan kata tersebut tidak akan ditampilkan sebagai word suggestion. Pencocokan akan terus dilakukan sampai pada kata terakhir pada list. Alur proses sistem tersebut dapat dilihat dalam flowchart

pada Gambar 3.1.

3.3.2 Perhitungan algoritma Boyer-Moore

Algoritma Boyer-Moore melakukan pencocokan string dengan menggunakan dua pendekatan yaitu pendekatan bad-character atau juga disebut Occurrence Heuristic(OH) dan pendekatan good-suffix atau juga disebut Match Heuristic(MH). Pendekatan tersebut bermaksud untuk menentukan jumlah pergeseran yang akan dilakukan pada saat pencocokan sampai ditemukannya string input pada string target dan selama string input belum ditemukan pada string target, string input akan terus digeser sepanjang string target.

Berikut adalah langkah-langkah perhitungan algoritma Boyer-Moore pada sistem ini : Misal :

input= ‘proc’

a. Mengambil list kata dari database

Setelah sistem menerima input, sistem akan mengambil semua kata pada

database untuk dicocokkan dengan kata yang diinputkan user. Beberapa list kata yang akan dicocokkan diantaranya adalah ‘access’, ‘address’, ‘batch processing’,

‘client-server architecture’, ‘dynamic data exchange (DDE)’, dan

‘microprocessor’. Selanjutnya, pertama kali pencocokan dilakukan antara string input dengan kata pertama pada listkata yaitu ‘access’.

b. Menentukan nilai pergeseran dengan menggunakan pendekatan bad-characte dan

good-suffix.

1. Menghitung tabel bad-character

Langkah perhitungan bad-character yaitu dengan melakukan pencacahan mulai dari karakter paling kanan string input sampai karakter paling kiri, dimulai dengan 0. Nilai bad-character didapat dengan perhitungan sebagai berikut :

BmBc[y[i]] = n – 1 –i BmBc[y[3]] = 4 – 1 – 3 = 0

BmBc[y[2]] = 4 – 1 – 2 = 1

BmBc[y[1]] = 4 – 1 – 1 = 2

BmBc[y[0]] = 4 – 1 – 0 = 3

Dan untuk semua karakter yang tidak muncul pada string input, bernilai sesuai jumlah banyaknya karakter pada string input yaitu 4.

25

i 0 1 2 3

c p r o c *

BmBc[c] 3 2 1 0 4

2. Menghitung tabel good-suffix

Nilai pergeseran good-suffix digunakan ketika ketidakcocokan ditemukan pada karakter yang menyebabkan ketidakcocokan dilihat berdasarkan posisi karakter tersebut. Nilai dari setiap karakter yang ada pada pattern bergantung terhadap ada atau tidaknya perulangan akhiran(suffix) v pada pattern. Semakin banyak perulangan, maka akan semakin kecil nilai pergeseran. Untuk menentukan nilai- nilai tersebut, lebih dahulu menghitung nilai tabel suffix yang bertujuan untuk memberi tanda adanya perulangan akhiran.

Nilai-nilai pada tabel good-suffix ini dilakukan secara manual mengikuti pseudocode yang diberikan pada Bab 2.

i 0 1 2 3

c p r o c

suff[i] 0 0 0 4 BmGs[i] 4 4 4 1

c. Pencocokan string

Setelah didapat nilai pergeseran bad-character dan good-suffix, maka selanjutnya akan dilakukan pencocokan antara string input dan string target dengan melakukan pergeseran string input sepanjang string target. Besar pergeseran ini berdasarkan nilai pergeseran terbesar antara nilai pergeseran bad-character dan

good-suffix. Setelah string input ditemukan pada string target, maka akan diketahui indeks posisi penemuannya. Proses pencocokan ini dapat dijelaskan dalam contoh sebagai baerikut :

1. String input: ‘proc’

i 0 1 2 3

c p r o c *

BmBc[c] 3 2 1 0 3 BmGs[i] 4 4 4 1 -

Pencocokan 1:

Dapat dilihat ketidakcocokan terjadi pada karakter ‘e’ pada string target dan karakter ‘c’ pada string input. Dengan melihat tabel pergeseran, didapat nilai pergeseran yaitu :

BmBc[e] = 4

BmGs[3] = 1

Maka Pergeserannya, max(1, 4) = 4

Pencocokan 2 :

Selanjutnya, pencocokan berhenti. Dapat dilihat bahwa string ‘proc’ tidak

ditemukan pada string ‘access’.

2. String input : ‘proc’ String target: ‘address’

i 0 1 2 3 c p r o c * BmBc[c] 3 2 1 0 3 BmGs[i] 4 4 4 1 - a c c e s s p r o c a c c e s s p r o c

27

Pencocokan 1 :

BmBc[r] = 2

BmGs[3] = 1

Maka pergeserannya, max(1, 2) = 2

Pencocokan 2 :

BmBc[s] = 4

BmGs[3] = 1

Maka pergeserannya, max(1, 4) = 4

Pencocokan 3 :

Selanjutnya, pencocokan berhenti. Dapat dilihat bahwa string ‘proc’ tidak ditemukan pada string ‘address’.

3. String input: ‘proc’

String target : ‘batch processing’

i 0 1 2 3 c p r o c * BmBc[c] 3 2 1 0 3 a d d r e s s p r o c a d d r e s s p r o c a d d r e s s p r o c

Pencocokan 1 :

BmBc[t] = 4

BmGs[2] = 4

Maka pergeserannya, max(4, 4) = 4

Pencocokan 2 :

BmBc[r] = 2

BmGs[3] = 1

Maka pergeserannya, max(2,1) = 2

Pencocokan 3 :

Pada pencocokan ke-3, ‘proc’ telah ditemukan pada indeks ke-6 pada string

target.

4. String input: ‘proc’

String target : ‘client-server architecture’

i 0 1 2 3 c p r o c * BmBc[c] 3 2 1 0 3 BmGs[i] 4 4 4 1 - b a t c h p r o c e s s i n g p r o c b a t c h p r o c e s s i n g p r o c b a t c h p r o c e s s i n g p r o c

29

Pencocokan 1 :

BmBc[e] = 4

BmGs[3] = 1

Maka pergeserannya, max(1, 4) = 4

Pencocokan 2 :

BmBc[s] = 4

BmGs[3] = 1

Maka pergeserannya, max(1, 4) = 4

Pencocokan 3 :

BmBc[e] = 4

BmGs[3] = 1

Maka pergeserannya, max(1, 4) = 4

Pencocokan 4 : BmBc[r] = 2 c l i e n t - s e r v e r a r c h i t e c t u r e p r o c c l i e n t - s e r v e r a r c h i t e c t u r e p r o c c l i e n t - s e r v e r a r c h i t e c t u r e p r o c c l i e n t - s e r v e r a r c h i t e c t u r e p r o c

Maka pergeserannya, max(1, 2) = 2

Pencocokan 5 :

BmBc[h] = 4

BmGs[3] = 1

Maka pergeserannya, max(1, 4) = 4

Pencocokan 6 :

BmBc[e] = 4

BmGs[3] = 4

Maka pergeserannya, max(4, 4) = 4

Pencocokan 7 :

BmBc[e] = 4

BmGs[3] = 4

Maka pergeserannya, max(4, 4) = 4

Pencocokan berhenti. string‘proc’ tidak ditemukan pada string target.

5. String input: ‘proc’

String target: ‘microprocessor’

c l i e n t - s e r v e r a r c h i t e c t u r e p r o c c l i e n t - s e r v e r a r c h i t e c t u r e p r o c c l i e n t - s e r v e r a r c h i t e c t u r e p r o c

31 i 0 1 2 3 c p r o c * BmBc[c] 3 2 1 0 3 BmGs[i] 4 4 4 1 - Pencocokan 1 : BmBc[r] = 2 BmGs[3] = 1

Maka pergeserannya, max(1, 2) = 2

Pencocokan 2 :

BmBc[p] = 3

BmGs[3] = 1

Maka pergeserannya, max(1, 3) = 3

Pencocokan 3 :

Pada pencocokan ke-3, ‘proc’ telah ditemukan pada indeks ke-5 pada string

target. m i c r o p r o c e s s o r p r o c m i c r o p r o c e s s o r p r o c m i c r o p r o c e s s o r p r o c

d. Menampilkan word suggestion

Setelah string input ditemukan pada string target, indeks posisi ditemukan string

tersebut akan dijadikan nilai indeks yang menandakan suatu pattern ditemukan pada text. Apabila string input tidak ditemukan pada kata yang dianggap sebagai

string target maka variabel pos akan bernilai -1 dan kata tersebut tidak akan ditampilkan sebagai word suggestion, sedangkan apabila string input ditemukan pada kata maka variabel pos akan bernilai sesuai indeks posisi penemuan string

tersebut dan kata tersebut akan ditampilkan sebagai word suggestion.

Dokumen terkait