• Tidak ada hasil yang ditemukan

Algoritma Pencocokan String

BAB 2 TINJAUAN PUSTAKA

2.2 Landasan Teori

2.2.6 Algoritma Pencocokan String

Menurut cara pembacaan teks, algoritma pencocokan string dapat dibedakan atas dua cara pembacaan :

a. Kiri ke Kanan

Alogoritma pencarian dengan teknik ini sangat banyak. Hampir sebagian besar algoritma pencarian menggunakan cara pembacaan teks dari kiri ke kanan. b. Kanan ke Kiri

Dalam Algoritma ini, terdapat algoritma Boyer-Moore yang dianggap merupakan salah satu algoritma yang utama dan algoritma standar dalam pencocokan string.

Sampai saat ini terdapat banyak algoritma pencocokan string, ada sekitar 35 algoritma yang bisa digunakan, baik merupakan algoritma yang diciptakan maupun berupa pengembangan dari algoritma yang sudah ada. Untuk kompleksitas waktu beberapa algoritma yang akan dibahas, dapat dilihat pada tabel 2.1.

Secara umum, istilah yang terdapat dalam pencocokan string antara lain teks dan pattern. teks (text) adalah (long) string yang panjangnya n. pattern yaitu string dengan panjang m karakter (m < n) yang akan dicari di dalam teks

Tabel 2.1 Perbandingan Beberapa Algoritma Pencocokan String

Algoritma Fase Preprocessing Fase Pencarian

Brute Force 0 (Tidak ada) O (mn)

Shift Or O (m + α) O (n)

Knuth Morris Pratt O (m) O (n + m) Boyer Moore O (m + α) O (n / m), O(n)

Rabin Karp O (m) O (mn)

2.2.6.1Brute Force

Algoritma Brute Force merupakan algoritma paling lempang untuk menyelesaikan persoalan pencocokan string.

Karakteristik algoritma Brute Force :

a. Tidak perlu fase prepocessing (tahap sebelum melakukan search atau pencocokan string).

b. Selalu berpindah tepat 1 langkah ke kanan.

c. Perbandingan dapat dilakukan pada urutan apa saja. d. Fase pencarian memiliki kompleksitas O (mn) e. Perbandingan karakter yang terjadi diharapkan 2n

Algoritma Brute Force melakukan pencarian pada setiap posisi di dalam teks antara 0 dan n-m, tidak peduli apakah terjadi pengulangan pola atau tidak. Kemudian, setelah setiap percobaan, pattern di geser tepat 1 posisi ke kanan.

2.2.6.2Shift Or

Algoritma Shift Or yang juga dikenal dengan nama shift-and, Bitap atau Baeza-Yates-Gonnet adalah algoritma pencarian fuzzy string. Algoritma Shift Or untuk pencarian string ditemukan oleh Balint Domolki pada tahun 1964, kemudian dikembangkan oleh R.K Shyamasundar pada tahun 1977 sebelum ditemukan kembali untuk pencarian string fuzzy oleh Menber dan Wu pada tahun 1991, berdasarkan kerja yang dilakukan oleh Ricardo Baeza-Yates dan Gaston Gonnet. Karakterikstik utama algoritma Shift Or :

b. Algoritma ini efisien jika panjang pattern tidak lebih dari ukuran memori untuk menyimpan 1 word ( 8bit) di dalam komputer yang digunakan.

c. Fase prepocessing memerlukan waktu dengan kompleksitas O (m + σ)

d. Fase pencarian dengan kompleksitas O (n)

e. Dapat digunakan untuk pendekatan pencarian string .

2.2.6.3Knuth Morris Pratt (KMP)

Algoritma Knuth-Morris-Pratt (KMP) bergerak dari kiri ke kanan seperti algortima Brute Force tetapi memilik kemampuan yang lebih baik dalam hal melakukan pergeseran pattern. Rancangan algoritma Knuth-Morris-Pratt mengikuti analisis dari algoritma Morris dan Pratt yang sebelumnya telah ditemukan terlebih dahulu oleh J.H Morris (jr) dan V.R Pratt pada tahun 1970. Bersama dengan D.E Knuth, algoritma ini menjadi Knuth-Morris-Pratt dengan berbagai perbaikan dari algoritma sebelumnya.

Karakteristik utama algorima KMP :

a. Kompleksitas ruang dan waktu untuk fase Prepocessing adalah O (m) b. Kompleksitas waktu untuk fase pencarian : O (n+m)

Pada algoritma KMP dikenal adanya fungsi pinggiran (Border Function) yang didefinisikan sebagai ukuran terpanjang dari pattern yang juga akhiran dari pattern tersebut.

2.2.6.4Boyer Moore

Algoritma Boyer-Moore dianggap sebagai algoritma pencocokan string yang paling efisien pada penggunaan biasa karena algoritma Boyer-Moore telah menjadi standar untuk pencarian string,

Berbagai versi algoritma ini digunakan dalam teks editor untuk perintah pencarian dan pergantian (find and replace)

Algoritma pencocokan string Boyer-Moore didasarkan atas dua teknik : 1) Teknik looking-glass, menemukan pattern di dalam teks dengan

2) Teknik character-jump, pergeseran karakter yang dilakukan saat terjadi ketidak cocokan

Karakteristik utama algoritma Boyer-Moore : a. Melakukan perbandingan dari kanan ke kiri

b. Fase persiapan/prepocessing membutuhkan kompleksitas waktu O (m + σ)

c. Fase pencarian : kompleksitas waktunya O (mn)

d. Pada kasus terburuk, sebanyak 3n karakter teks yang dibandingkan untuk pattern yang tak berulang. Kasus terbaik O (n/m).

2.2.6.5Rabin Karp

Rabin-Karp diciptakan oleh Michael O. Rabin dan Richard M. Karp pada tahun 1987 yang menggunakan fungsi hashing untuk menemukan pattern di dalam string teks. Algoritma Rabin-Karp adalah algoritma pencocokan string yang menggunakan fungsi hash sebagai pembanding antara string yang dicari (m) dengan substring pada teks (n). Algoritma Rabin-Karp didasarkan pada fakta jika dua buah string sama maka harga hash value-nya pasti sama. Akan tetapi ada dua masalah yang timbul dari hal ini, masalah pertama yaitu ada begitu banyak string yang berbeda, permasalahan ini dapat dipecahkan dengan meng-assign beberapa string dengan hash value yang sama. Masalah yang kedua belum tentu string yang mempunyai hash value yang sama cocok untuk mengatasinya maka untuk setiap string yang di-assign dilakukan pencocokan string secara Brute-Force. Kunci agar algoritma Rabin-Karp efisien, terdapat pada pemilihan hash value-nya. Salah satu cara yang terkenal dan efektif adalah memperlakukan setiap substring sebagai suatu bilangan dengan basis tertentu. [7]

Dalam buku String Search Algorithm, dijelaskan bahwa metode ini merupakan sebuah metode alternatif untuk menyelesaikan masalah string matching yang menggunakan fungsi hash. Metode ini melakukan suatu proses untuk mencari kesamaan pada sebuah pattern dengan sebuah text string. Karakteristik Algoritma Rabin-Karp. [1]

a. Menggunakan sebuah fungsi hashing

c. Untuk fase pencarian kompleksitasnya : O(mn) d. Waktu yang diperlukan O(n+m).

2.2.6.5.1 K-Grams

K-grams adalah rangkaian terms dengan panjang K. Kebanyakan yang digunakan sebagai terms adalah kata. K-grams merupakan sebuah metode yang diaplikasikan untuk pembangkitan kata atau karakter. Metode k-grams ini digunakan untuk mengambil potongan-potongan karakter huruf sejumlah k dari sebuah kata yang secara kontinuitas dibaca dari teks sumber hingga akhir dari dokumen. Berikut ini adalah contoh k-grams dengan k=5 :

a. Text : A do run run run, a do run run

b. Kemudian dilakukan penghilangan spasi : Adorunrunrunadorunrun c. Sehingga dihasilkan rangkaian 5-grams yang diturunkan dari teks : adoru dorun orunr runru unrun nrunr runru unrun nruna runad unado nador adoru dorun orunr runru unrun. [8]

2.2.6.5.2 Hashing

Hashing adalah suatu cara untuk mentransformasi sebuah string menjadi suatu nilai yang unik dengan panjang tertentu (fixed-length) yang berfungsi sebagai penanda string tersebut. Fungsi untuk menghasilkan nilai ini disebut fungsi hash, sedangkan nilai yang dihasilkan disebut nilai hash. Proses ini bertujuan untuk mencari nilai dari setiap kata yang telah di parsing. Untuk mendapatkan nilai hashing maka digunakan rumus hashing sebagai berikut

H = C1*a(k-1) + C2*a(k-2)+ C3*a(k-3) .. Ck*a( ) ... (2.1)

Keterangan :

H : Nilai hash

C1, C2, C3, Cn : Nilai ascii dari setiap huruf

a : Basis

k-1

Setelah proses hashing tahapan berikutnya yaitu melakukan proses perhitungan nilai hash yang sama. Perhitungan ini menggunakan rumus Dice Similarity Coeficient.

S = 2.C x 100 ... (2.2) (A+B)

Keterangan :

S : Nilai similarity

C : Jumlah k-gram dengan nilai hash yang sama A dan B : Jumlah dari kumpulan k-gram

2.2.7 Aplikasi-aplikasi Pendukung

Dokumen terkait