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