BAB 2 TINJAUAN PUSTAKA
2.1. Definisi Algoritma
2.1.1 Algoritma Istilah algoritma algorithm berasal dari kata “algoris” dan “ritmis”, yang pertama
kali diungkapkan oleh Abu Ja’far Mohammed Ibn Musa al Khowarizmi 825 M dalam buku Al-Jabr Wa-al Muqabla. Dalam bidang pemrograman algoritma
didefenisikan sebagai suatu metode khusus yang tepat dan terdiri dari serangkaian langkah yang terstruktur dan dituliskan secara matematis yang akan dikerjakan untuk
menyelesaikan suatu masalah dengan bantuan komputer.Jogiyanto, 2005
Terdapat beberapa defenisi yang diberikan untuk kata algoritma antara lain:
a Algoritma adalah sekelompok aturan untuk menyelesaikan perhitungan yang
dilakukan oleh tangan atau mesin. b
Algoritma adalah langkah demi langkah sebuah prosedur berhinggga yang dibutuhkan untuk menghasilkan sebuah penyelesaian.
c Algoritma adalah urutan langkah-langkah perhitungan yang
mentrasformasikan dari nilai masukan menjadi keluaran. d
Algoritma adalah urutan operasi yang dilakukan terhadap data yang terorganisasi dalam struktur data.
e Algoritma adalah sebuah program abstrak yang dapat dieksekusi secara fisik
oleh mesin. f
Algoritma adalah sebuah model perhitungan yang akan dilakukan oleh komputer. eko, 2008.
2.2 String
String dalam ilmu komputer dapat diartikan dengan sekuens dari karakter. Walaupun sering juga dianggap sebagai data abstrak yang menyimpan sekuens nilai data, atau
biasanya berupa bytes yang mana merupakan elemen yang digunakan sebagai pembentuk karakter sesuai dengan encoding karakter yang disepakati seperti ASCII,
ataupun EBCDIC. Hubungan string dengan tulisan ini adalah bahwa karakteristik dari musik
yang akan disimpan dalam database dapat dianggap serupa dengan string. Hal ini akan memudahkan desainer dalam membangun sistem pencocokan audio dari sampel
audio yang akan dikonversi terlebih dahulu menjadi serupa dengan string ataupun deretan bytes. Konversi inilah yang nantinya akan dibandingkan langsung dengan
informasi karakteristik yang disimpan dalam database.
2.2.1. String Matching
String matching adalah pencarian sebuah pattern pada sebuah teks Ronald L. Rivest dkk. 1994. Prinsip kerja algoritma string matching adalah sebagai berikut:
1. Memindahkan teks dengan bantuan sebuah window yang ukurannya sama dengan
panjang pattern. 2.
Menempatkan window pada awal teks. 3.
Membandingkan karakter pada window dengan karakter dari pattern. Setelah pencocokan baik hasilnya cocok atau tidak cocok, dilakukan shift ke kanan pada
window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut mekanisme sliding-window. Rama, 2013.
Algoritma string matching mempunyai tiga komponen utama, yaitu: 1.
Pattern, yaitu deretan karakter yang akan dicocokkan dengan teks, dinyatakan dengan x[0..m-1], panjang pattern dinyatakan dengan m.
2. Teks, yaitu tempat pencocokan pattern dilakukan, dinyatakan dengan y[0..n-
1], panjang teks dinyatakan dengan n. 3.
Alfabet, yang berisi semua simbol yang digunakan oleh bahasa pada teks dan pattern
, dinyatakan dengan Σ dengan ukuran dinyatakan dengan Asize.
2.2.2 Algoritma Knuth Morris Pratt String Matching
Algoritma Knuth Morris Pratt merupakan salah satu algoritma yang sering digunakan untuk menyelesaikan masalah pencocokan string. Algoritma ini adalah
penyempurnaan dari algoritma pencocokan string dengan menggunakan algoritma brute force. Pada algoritma brute force, setiap kali ditemukan ketidak cocokan pattern
dengan teks, maka pattern akan digeser satu ke kanan. Sedangkan pada algoritma Knuth-Morris-Pratt, kita memelihara informasi yang digunakan untuk melakukan
jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran angka lebih jauh, tidak hanya satu karakter seperti pada algoritma brute
force. Dengan algoritma Knuth Morris Pratt ini, waktu pencarian dapat dikurangi secara signifikan. Algoritma Knuth Morris Pratt ini dikembangakan oleh D. E. Knuth,
bersama-sama dengan J. H. Morris dan V. R. Pratt.
Algoritma Knuth-Morris-Prath memelihara informasi yang digunakan saat melakukan pergeseran. Informasi ini digunakan untuk melakukan pergeseran yang
lebih jauh, tidak seperti brute force yang melakukan pergeseran perkarakter. Pergeseran dilakukan berdasarkan suffix kesamaan suffix dan prefix dalam pattern dan
yang ditemukan di dalam teks. Dalam algoritma Knuth Morris Pratt ini kita akan menemui beberapa definisi yang nantinya akan digunakan dalam algoritma ini.
2.2.3 Fungsi Pinggiran
Algoritma Knuth Morris Pratt melakukan proses awal atau preproccesing terhadap pattern P dengan menghitung fungsi pinggiran dalam literatur lain menyebut fungsi
overlap, fungsi failure, dsb yang mengindikasikan pergeseran s terbesar yang mungkin dengan menggunakan perbandingan yang dibentuk sebelum pencarian
string. Fungsi pinggiran hanya bergantung pada karakter-karakter di dalam pattern, dan bukan pada karakter - karekter di dalam teks yang dicari. Oleh karena itu, kita
dapat melakukan perhitungan fungsi awalah sebelum pencarian string dilakukan. Fungsi pinggiran bj didefinisikan sebagai ukuran awalan terpanjang dari P yang
merupakan akhiran dari P[1..j]. Sebagai contoh, tinjau pattern P = abcabd. Nilai F untuk setiap karakter di dalam P adalah sebagai berikut.
Tabel 2.1 Fungsi Pinggiran Untuk Pattern abcabd j
1 2
3 4
5 6
Pj A
b c
a b
d Bj
1 1
2
Di bawah ini adalah algoritma untuk menghitung fungsi pinggiran. procedure HitungPinggiran
input m : integer, P : array[1..m] of char,output b : array[1..m] of integer
{ Menghitung nilai b[1..m] untuk pattern P[1..m] }
Deklarasi
k,q : integer
Algoritma:
b[1] 0 q 2
k 0
for q 2 to m do
while k 0 and P[q] P[k+1] do
k b[k] endwhile
if P[q]=P[k+1] then k k+1
endif b[q]=k
endfor Keterangan :
Fungsi tersebut akan menghasilkan output berupa array integer yang merupakan angka-angka pinggiran untuk setiap posisi iterasi pada pattern. Barulah kemudian
dapat diproses pencocokkan antara pattern dan teks yang diberikan.
2.2.4 Fungsi Pembandingan String
Kemudian cara untuk melakukan pencocokan string dengan menggunakan algoritma Knuth Morris Pratt adalah sebagai berikut. Misal kita akan mencocokan teks T =
abcabcabd dan kita mempunyai pattern P = abcabd. 123456789 Teks = abcabcabd
Pattern = abcabd Mula-mula kita hitung fungsi pinggiran dari pattern P tersebut. Fungsi
pinggiran P = abacabd tertera seperti table 1 di atas. Kemudian lakukan langkah- langkah berikut. Samakan ujung kiri pattern dengan ujung kiri teks. Karakter-karakter
pada karakter 1-5 sama, tetapi pada posisi ke 6 tidak sama. Hal itu karena karakter ke 6 pada teks yaitu c tidak sama dengan karakter ke 6 pada pattern yaitu d. Untuk
mencocokan kembali, kita harus menggeser pattern. Jika dalam brute force kita akan menggeser pattern 1 karakter ke kanan. Namun jika menggunakan algoritma Knuth
Morris Pratt jumlah pergeseran pattern ditentukan oleh pinggiran dari awalan P yang bersesuaian. Pada contoh di atas, awalan yang bersesuaian adalah abcab, dengan
panjang l = 5. Pinggiran terpanjang untuk string P[1..5] adalah ab yang panjangnya adalah b5 = 2. Jarak pergeseran adalah l – b = 5 – 2 = 3. Jadi, pattern P digeser
sejauh 3 karakter dan perbandingan dilakukan mulai pada posisi j = 3 dihitung dari awal pattern. Kukuh, 2013 .
j 1
2 3
4 5
6 P[j]
A b
c a
b d
bj 1
2 Teks: abcabcabd
Pattern: abcabd ↑
j = 3 Telah itu kita kembali membandingkan karakter per karekter seperti di proses
sebelumnya sampai kita menemukan teks yang sama dengan pattern hingga karakter terakhir. Algoritma Knuth Morris Pratt selengkapnya adalah sebagai berikut:
procedure KMPsearchinput m,n:integer, input P : array[1..m] of char,input T :
array[1..n] of char, output idx : integer
{ Mencari kecocokan pattern P di dalam
teks T dengan algoritma Knuth-Morris- Pratt. Jika ditemukan P di dalam T,
lokasi awal kecocokan disimpan di dalam peubah idx.
Masukan: pattern P yang panjangnya m dan teks T yang panjangnya n.
Teks T direpresentasika sebagai string array of character
Keluaran: posisi awal kecocokan idx. Jika P tidak ditemukan, idx = -
1. }
Deklarasi
i, j : integer ketemu : boolean
b : array[1..m] of integer procedure HitungPinggiraninput m :
integer, P : array[1..m] of char, output b : array[1..m] of integer
{ Menghitung nilai b[1..m] untuk pattern P[1..m] }
Algoritma:
HitungPinggiranm, P, b j 0
i 1 ketemu false
while i n and not ketemu do whilej 0 and P[j+1] T[i] do
j b[j] endwhile
if P[j+1]=T[i] then j j+1
endif if j = m then
ketemu true else
i i+1 endif
endwhile if ketemu then
idx i-m+1 { catatan: jika indeks array dimulai dari 0, maka idx i-m }
else idx -1
endif Thomas, 2007
2.2.4 Klasifikasi Pencocokan String
Pencocokan string string matching secara garis besar dapat dibedakan menjadi dua yaitu :
1. Exact string matching, merupakan pencocokan string secara tepat dengan susunan
karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama. Contoh : kata step akan menunjukkan kecocokan hanya
dengan kata step. 2.
Inexact string matching atau Fuzzy string matching, merupakan pencocokan string secara samar, maksudnya pencocokan string dimana string yang
dicocokkan memiliki kemiripan dimana keduanya memiliki susunan karakter yang berbeda mungkin jumlah atau urutannya tetapi string-string tersebut
memiliki kemiripan baik kemiripan tekstualpenulisan approximate string
matching atau kemiripan ucapan phonetic string matching. Inexact string matching masih dapat dibagi lagi menjadi dua yaitu :
a. Pencocokan string berdasarkan kemiripan penulisan approximate string
matching merupakan pencocokan string dengan dasar kemiripan dari segi penulisannya jumlahah karakter, susunan karakter dalam dokumen.Tingkat
kemiripan ditentukan dengan jauh tidaknya beda penulisan dua buah string yang dibandingkan tersebut dan nilai tingkat kemiripan ini ditentukan oleh
pemrogram programmer. Contoh : compuler dengan compiler, memiliki jumlahah karakter yang
sama tetapi ada dua karakter yang berbeda. Jika perbedaan dua karakter ini dapat ditoleransi sebagai sebuah kesalahan penulisan maka dua string
tersebut dikatakan cocok. b.
Pencocokan string berdasarkan kemiripan ucapan phonetic string matching merupakan pencocokan string dengan dasar kemiripan dari segi
pengucapannya meskipun ada perbedaan penulisan dua string yang dibandingkan tersebut.
Contoh step dengan step dari tulisan berbeda tetapi dalam pengucapannya mirip sehingga dua string tersebut dianggap cocok. Contoh yang lain adalah step, dengan
steppe, sttep, stepp, stepe. Exact string matching bermanfaat jika pengguna ingin mencari string dalam dokumen yang sama persis dengan string masukan. Tetapi jika
pengguna menginginkan pencarian string yang mendekati dengan string masukan atau terjadi kesalahan penulisan string masukan maupun dokumen objek pencarian, maka
inexact string matching yang bermanfaat. Pada Implementasi Algoritma Knuth Morris Pratt untun mencari kata atau
istilah pada komputer berbasis Android maka masuk dalam klasifikasi pencocokan string Exact string matching yang merupakan pencocokan string secara tepat dengan
susunan karakter dalam string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama
2.3 Mobile Device
Mobile Device merupakan suatu alat yang digunakan oleh pemakai untuk meminta informasi yang dibutuhkan, dimana informasi dapat diberikan dalam bentuk suara,
gambar, dan text. Informasi yang diinginkan dapat dicari melalui fasilitas untuk mengakses internet seperti GPRS atau wireless. Pada umumnya perangkat mobile atau
mobile device lebih praktis karena bersifat mudah dibawa portable daripada perangkat teknologi lainnya. Agus, 2011
Meningkatnya pemakaian peranti mobile mobile device telah merevolusi kegiatan-kegiatan yang bersifat tradisional menjadi lebih sederhana dan mudah
dengan penggunaan perangkat mobile. Mobilitas yang tinggi tidak menjadi penghalang lagi, karena saat ini peranti mobile sudah dapat mengakses server atau
pusat data. Peranti mobile sekarang tidak hanya berfungsi sebagai pencatat jadwal dan buku alamat. Fungsi peranti mobile sudah berkembang pesat dan idealnya siap
mengganti dokumen berbasis kertas. Mobile device dapat dibagi berdasarkan jumlah kegunaannya menjadi dua jenis yaitu:
1. Single purpose
Mobile device dengan single purpose digunakan untuk satu tujuan saja. contoh: navigation box yang terdapat pada mobil atau truk pengangkut barang.
2. Multi purpose
Mobile device dengan multi purpose dapat digunakan untuk mengakses berbagai macam informasi yang diinginkan, contoh : Smart phone, handphone,
PDA, Laptop.
Aplikasi kamus komputer yang akan penulis rancang menggunakan perangkat mobile jenis multi purpose yaitu handphone, di mana handphone yang digunakan
harus mendukung sistem operasi Android.
2.4 Android