Implementasi Implementasi Algoritma Levenshtein Distance dan Algoritma Knuts Morris Pratt Dalam Fitur Word Complete pada Search Engine

BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi

Search Engine dalam pencarian kamus dirancang dengan menggunakan 2 algoritma yaitu algoritma Levenshtein Distance dan algoritma Knuth Morris Pratt untuk merealisasikan dalam pencarian dengan cara yang lebih cepat.dimana dalam pencarian tersebut terdiri dari sebuah teks text , yaitu sebuah long string yang panjang n karakter dan Pattern , dan sebuah string dengan panjang m karakter yang akan dicari dalam text . Algoritma Levenshtein merupakan algoritma yang digunakan untuk mencari jumlah operasi string yang paling sedikit untuk mentransformasikan suatu string menjadi string. Perhitungan edit distance dihitung oleh matriks yang digunakan unuk menghitung jumlah perbedaan string antara dua string . Levenshtein Distance jarak antara dua string didefinisikan sebagai jumlah minimum suntingan yang diperlukan untuk mengubah satu string ke yang lain, dengan diijinkan mengedit operasi yang penyisipan, penghapusan, atau penggantian karakter tunggal. Perhitungan jarak antara dua string ditentukan dari dua jumlah minimum operasi perubahan untuk membuat string A mejadi string B . Perhitungan jarak antara dua string ditentukan dari dua jumlah minimum operasi perubahan untuk membuat string A mejadi string B . ada 3 macam operasi utama yang dapat dilakukan algoritma ini yaitu: Universitas Sumatera Utara 4.1.1. Operasi penghapusan Operasi penghapusan dilakukan dengan menghapus karakter pada indeks tertentu untuk menyamakan string sumber S dengan string target T, misalnya S=bangkang dan T= bangka . Penghapusan dilakukan untuk karakter n pada indeks ke-7, penghapusan karakter g pada indeks ke-8, Operasi penghapusan tersebut menunjukkan tranformasi S ke T, ilustrasinya adalah sebagai berikut : String S 0 1 2 3 4 5 6 7 B A N G K A N G String T 0 1 2 3 4 5 B A N G K A Operasi Penghapusan Pada Algoritma Levenshtein Distance 0 1 2 3 4 5 6 7 B A N G K A N G 4.1.2. Operasi penyisipan Operasi penyisipan dilakukan dengan menyisipkan karakter pada indeks tertentu untuk menyamakan string sumber S dengan string target T, misalnya S= rentang dan T= barentang. Operasi penyisipan dapat dilakukan dengan menyisipkan b pada indeks 1, menyisipkan a pada indeks 2, Yang dapat diilustrasikan sebagai berikut: String S 0 1 2 3 4 5 6 R E N T A N G Universitas Sumatera Utara String T 0 1 2 3 4 5 6 7 8 B A R E N T A N G Operasi Penyisipan Pada Algoritma Levenshtein Distance 0 1 2 3 4 5 6 7 8 B A R E N T A N G 4.1.3. Operasi penukaran Operasi penukaran dilakukan dengan menukar karakter pada indeks tertentu untuk menyamakan string sumber S dengan string target T, misalnya S= peringas dan T= beringas. String S ditranformasikan menjadi T dengan melakukan penggantian substitusi pada posisi ke-1. Huruf P ditukar menjadi B. Prosesnya dapat diilustrasikan sebagai berikut: String S 0 1 2 3 4 5 6 7 P E R I N G A S String T 0 1 2 3 4 5 6 7 B E R I N G A S Algoritma ini berjalan mulai dari pojok kiri atas sebuah array dua dimensi yang telah diisi sejumlah string awal dan string target dan diberikan nilai cost . Nilai cost pada ujung bawah kanan menjadi nilai edit distance yang mengambarkan jumlah perbedaan dua string . 4.1.3.1.Potongan program Levenshtein Distance Public Function LevenshteinDistanceByVal s As String, ByVal t As String As Integer Dim n As Integer = s.Length Dim m As Integer = t.Length Universitas Sumatera Utara Dim dn + 1, m + 1 As Integer If n = 0 Then Return m Bila panjang teks=0 maka nilai distance adalah panjang pattern End If If m = 0 Then Return n Bila panjang pattern=0 maka nilai distance adalah panjang teks End If Dim i As Integer Initial distance, indeks karakter dalam string teks Dim j As Integer Initial distance, indeks karakter dalam string pattern For i = 0 To n Kolom di, 0 = i Next For j = 0 To m Baris d0, j = j Next For i = 1 To n For j = 1 To m Dim cost As Integer If tj - 1 = si - 1 Then cost = 0 Else cost = 1 End If di, j = Math.MinMath.Mindi - 1, j + 1, di, j - 1 + 1, di - 1, j - 1 + cost Substituting, Deleting, Inserting Next Next Return dn, m Return last distance End Function End Module Algoritma Knuth Morris Pratt KMP dikembangkan oleh D. E. Knuth, bersama dengan J. H. Morris dan V. R.Pratt. Untuk pencarian string dengan menggunakan algoritma Brute Force , setiap kali ditemukan ketidakcocokan pattern dengan teks, maka pattern akan digeser satu karakter ke kanan.Algoritma ini membandingkan pola dengan teks dari kiri ke kanan. pada algoritma Knuth Morris-Pratt , kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma KMP digunakan untuk bekerja pada arsitektur yang mendukung string paralel ukuran yang lebih besar. Algoritma menggunakan informasi tersebut untuk membuat pergeseran yang lebih jauh dan melakukan evaluasi waktu Secara sistematis, langkah-langkah yang dilakukan algoritma Knuth-Morris-Pratt pada saat mencocokkan string : 3. Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal teks. 4. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter di teks yang bersesuaian, sampai salah satu kondisi berikut dipenuhi: Universitas Sumatera Utara 4. Karakter di pattern dan di teks yang dibandingkan tidak cocok mismatch . 5. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan penemuan di posisi ini. 6. Algoritma kemudian menggeser pattern berdasarkan tabel, lalu mengulangi langkah 2 sampai pattern berada di ujung teks. Pencocokan karakter dari kiri ke kanan mencari prefix terpanjang dari P[0..j-1] yang juga merupakan suffix dari P [1..j-1], untuk menghindari pergeseran yang tidak perlu. Hasil dari pencarian prefix terpanjang disimpan dalam tabel yang disebut juga sebagai failure function . Misalkan panjang string yang telah diperiksa dan cocok = n dan nilai dari failure function adalah M, maka dilakukan pergeseran sebanyak n-m . Sebagai contoh, diberikan sejumlah karakter sebagai text = “bengap” dan yang Contoh penggunaan algoritma string matching KMP , yaitu : Teks : BENGAP Pattern : NGAP Cara kerja : String S B E N G A P Pattern P N G A P Langkah 1 : Bandingkan Pattern [1] dengan String [1] B E N G A P N G A P Pattern [1] tidak cocok dengan String [1], maka Pattern akan bergeser satu karakter ke kanan. Langkah 2 : Bandingkan Pattern [1] dengan String [2] B E N G A P Universitas Sumatera Utara N G A P Pattern [1] tidak cocok dengan String [2], maka Pattern akan bergeser satu karakter ke kanan. Langkah 3 : Bandingkan Pattern [1] dengan String [3] B E N G A P N G A P Pattern [1] cocok dengan String [3], maka Pattern berhenti. 4.1.3.2.Potongan Program Algoritma KMP Dim k As Integer = 0 For i As Integer = 0 To charArray.Length - 1 bila ke-i pada char array cocok dengan ke-k pada pattern array If charArrayi = patternArrayk Then k += 1 Else Bila tidak cocok..lanjut ke pattern selanjutnya Dim prefix As Integer = ArrayTransisik If prefix + 1 patternArray.Length AndAlso charArrayi patternArrayprefix + 1 Then k = 0 Else k = prefix End If End If string ditemukan apabila panjang char array sama dengan panjang pattern If k = patternArray.Length Then tambahkan pada array hasil hasil.Addi - patternArray.Length - 1 k = ArrayTransisik - 1 End If Next Return hasil End Function End Class 4.1.4. Perhitungan manual pencarian kata algoritma Levenshtein Distance dan Knuth Morris Pratt . 1. Algoritma Levenshtein Distance . Perhitungan manual pencarian kata Algoritma Levenshtein Distance adalah : Universitas Sumatera Utara a. Algoritma Levenshtein Distance memiliki nilai edit distance. b. Dimana setiap edit distance diberi cost 0 dan 1. c. Perhitungan dimulai dari indeks dimana kata yang dicari dengan kata yang ada didalam database. d. Setiap kata yang memiliki kesamaan data dalam database diberi cost = 0, sedangkan setiap substitusi, eliminasi, penambahan diberi cost = 1. Tabel 4.1. Hitung Manual Algoritma Levenshtein Distance k a l u 1 2 3 4 k 1 1 2 3 a 2 1 1 2 l 3 2 1 1 2. Algoritma Levenshtein Distance Pada Kamus Bahasa Sunda Perhitungan manual pencarian kata Algoritma Levenshtein Distance pada kamus bahasa sunda adalah : a. Input kata kuma dalam bahasa sunda b. Dimana algoritma Levenshtein Distance memiliki nilai edit distance. c. Dimana setiap edit distance diberi cost 0 dan 1. d. Perhitungan dimulai dari indeks dimana kata yang dicari dengan kata yang ada didalam database. e. Setiap kata yang memiliki kesamaan data dalam database diberi cost = 0, sedangkan setiap substitusi, eliminasi, penambahan diberi cost = 1. Tabel 4.2. Hitung Manual Algoritma Levenshtein Distance k u m a 1 2 3 4 k 1 1 2 3 u 2 1 1 2 m 3 2 1 1 Universitas Sumatera Utara 5. Algoritma Knuth Morris- Pratt KMP Perhitungan manual pencarian kata Algoritma Knuth Morris-Pratt KMP adalah : a. Algoritma Knuth Morris Pratt merupakan algoritma pencarian string dengan menambahkan nilai 1 buah karakter kesebelah kanan b. Knuth Morris Pratt mencocokkan karakter per karakter sampai pencarian dinyatakan cocok. A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A Universitas Sumatera Utara F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A A Z A L I A F A W N I A F A W N I A Universitas Sumatera Utara 6. Algoritma Knuth Morris-Pratt KMP Dalam Kamus Bahasa Sunda Perhitungan manual pencarian kata Algoritma Knuth Morris-Pratt KMP dalam kamus bahasa sunda adalah : a. Algoritma Knuth Morris Pratt merupakan algoritma pencarian string dengan menambahkan nilai 1 buah karakter kesebelah kanan b. Knuth Morris Pratt mencocokkan karakter per karakter sampai pencarian dinyatakan cocok. K U M A H A K U M A H A K U M A H A K U M A H A K U M A H A K U M A H A K U M A H A K U M A H A K U M A H A K U M A H A Universitas Sumatera Utara

4.2. Antarmuka Pengguna