APLIKASI ANALISIS DAN UJI PERBANDINGAN ALGORITHMA KNUT MORRIS PRATT ( KMP ) DAN BOOYER MOORE ( BM ) UNTUK PENCARIAN POLA KATA DALAM FILE TEKS.
KNUT MORRIS PRATT ( KMP ) DAN BOOYER MOORE ( BM ) UNTUK PENCARIAN POLA KATA DALAM FILE TEKS
SKRIPSI
Oleh :
ARFIN SAKA ADIENATA PUTRA 0734010128
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL "VETERAN" JAWA TIMUR
2012
Hak Cipta © milik UPN "Veteran" Jatim :
(2)
APLIKASI ANALISIS DAN UJI PERBANDINGAN ALGORITHMA KNUT MORRIS PRATT ( KMP ) DAN BOOYER MOORE ( BM )
UNTUK PENCARIAN POLA KATA DALAM FILE TEKS
SKRIPSI
Diajukan Untuk Memenuhi Sebagian Persyaratan Dalam Memperoleh Gelar Sarjana Komputer
Program Studi Teknik Informatika
Oleh :
ARFIN SAKA ADIENATA PUTRA 0734010128
PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JAWA TIMUR
(3)
i
Pertama-tama penulis panjatkan puji syukur atas kehadiran Allah S.W.T
karena atas rahmat dan karunia-Nyalah akhirnya laporan tugas akhir ini dapat
penulis selesaikan. Tak lupa pula shalawat dan salam penulis panjatkan kepada
Nabi akhir zaman Muhammad S.A.W, karena berkat perjuangan-Nyalah karunia
Iman dan Islam senantiasa menjadi inspirasi bagi penulis.
Adapun maksud penulisan Laporan Tugas Akhir ini adalah sebagai
gambaran terhadap apa yang penulis kerjakan pada Tugas Akhir. Selain itu juga
laporan ini sebagai syarat untuk pelaksanaan mata kuliah Tugas Akhir dalam
menyelesaikan program studi strata satu (S-1) di Universitas Pembangunan
Nasional “Veteran” Jawa Timur.
Penulis menyadari sepenuhnya masih terdapat banyak kekurangan dalam
penyelesaian penulisan laporan Tugas Akhir ini. Namun penulis berusaha
menyelesaikan laporan ini dengan sebaik mungkin. Segala kritik saran yang
bersifat membangun sangat diharapkan dari semua pihak, guna perbaikan dan
pengembangan di masa yang akan datang. Akhirnya besar harapan penulis agar
laporan ini dapat diterima dan berguna bagi semua pihak.
Surabaya, Februari 2012
Penulis
Hak Cipta © milik UPN "Veteran" Jatim :
(4)
UCAPAN TERIMAKASIH
Ucapan terimakasih ini saya persembahkan sebagai perwujudan rasa
syukur atas terselesaikannya Laporan Tugas Akhir. Ucapan terima kasih ini saya
tujukan kepada :
1. Allah SWT, karena berkat Rahmat dan berkahNya kami dapat menyusun
dan menyelesaikan Laporan Tugas Akhir ini hingga selesai.
2. Bapak Ir. Sutiyono, MT selaku Dekan Fakultas Teknologi Industri UPN
“Veteran” Jawa Timur.
3. Ibu Dr. Ir. Ni Ketut Sari, MT selaku Ketua Jurusan Teknik Informatika
UPN “Veteran” Jawa Timur.
4. Ibu Hj. Asti Dwi Irfianti, S.Kom, M.Kom selaku Dosen Pembimbing
Pertama yang telah meluangkan begitu banyak waktu, tenaga, dan pikiran
serta sabar dalam membimbing penulis dari awal hingga terselesaikannya
Laporan Tugas Akhir ini.
5. Ibu Dr. Ir. Ni Ketut Sari, MT selaku Dosen Pembimbing Kedua yang telah
meluangkan begitu banyak waktu, tenaga, dan pikiran serta sabar dalam
membimbing penulis dari awal hingga terselesaikannya Laporan Tugas
Akhir ini.
6. Bapak Agus Hermanto, S.Kom selaku dosen yang memberikan ide –
(5)
iii
7. Kedua orang tua tercinta atas semua doa, dukungan, serta harapannya pada
saat penulis melakukan Tugas Akhir sampai terselesaikannya penyusunan
Laporan Tugas Akhir ini.
8. Kakak saya Mbak Nilla dan suami (Mas Fery) beserta anaknya, Mbak Ita
dan Suami (Mas Rudy) yang tidak bosan-bosannya membantu dan selalu
memberikan motivasi serta semangat kepada penulis mulai dari awal
sampai terselesaikannya Tugas Akhir ini.
9. Keponakan saya Justine Raditya Abid Putra ( Abiie ) yang selalu
memberikan keceriaan dan kelucuan dari tingkahnya yang bisa
memberikan refresh otak penulis jika penulis mengalami kepenatan atau
kebuntuan pada tugas akhir ini.
10. Sahabat terbaik yang pernah saya miliki: Yayuk (Anggi), Ndha (Ennanda),
dan Cungkring ( Septian ), Cucky ( S. Lucky ), Gondrong ( Duwi M. )
yang tidak bosan-bosannya untuk membantu dan mendengarkan keluh
kesah penulis setiap saat serta selalu memberikan motivasi agar cepat
menyelesaikan tugas akhir ini, dan sekarang gantian kamu odek yang
harus cepat-cepat menyelesaikan tugas akhirmu.
11. Sang Motivator: Eko “ The Chief of Spaghetti “ , Sigit32 ( Sigit R. ),
Atenk ( Rizal Rangga A. ) karena kalian bertigalah yang mampu membuat
penulis semangat untuk mengejar ketertinggalan sehingga tugas akhir ini
selesai juga dan terimakasih yang tak terhingga atas semua bantuan, saran,
dan doanya selama ini kawan-kawan terbaikku.
Hak Cipta © milik UPN "Veteran" Jatim :
(6)
12. Teman - teman seangkatan dan seperjuangan teknik informatika, teman -
teman Sedan Puti ’01 dan semua teman-teman yang tidak bisa disebutkan
satu persatu. Terimakasih banyak karena telah membantu penyelesaian
Tugas Akhir ini
Sebagai manusia penulis mempunyai keterbatasan dan kekurangan. Oleh
karena itu, dibutuhkan kritik dan saran dalam memperbaiki penulisan laporan ini.
Surabaya, Februari 2012
(7)
v
KATA PENGANTAR ... i
UCAPAN TERIMAKASIH ... ii
DAFTAR ISI ... v
DAFTAR GAMBAR ... viii
DAFTAR TABEL ... x
BAB I PENDAHULUAN 1.1 Latar Belakang Masalah... 1
1.2 Perumusan Masalah... 2
1.3 Batasan Masalah... 3
1.4 Tujuan Penelitian... 3
1.5 Manfaat Penelitian... 3
1.6 Metodologi Penelitian... 4
1.7 Sistematika Penulisan... 5
BAB II TINJAUAN PUSTAKA 2.1 Algorithma dan Pemrograman ………... 7
2.2 Algorithma Knut Morris Pratt ……... 8
2.3 Algorithma Booyer – Moore ………... 11
2.4 Rekayasa Perangkat Lunak ………... 16
2.5 Pengujian Perangkat Lunak …... 19
Hak Cipta © milik UPN "Veteran" Jatim :
(8)
2.6 Flow Map …………... 20
2.7 Embarcadero Delphi 2010 ………... 21
2.8 Penanganan Database pada Delphi ... 26
2.9 Interaksi Manusia dan Komputer ... 27
2.9.1 Tujuan Interaksi Manusia dan Komputer ... 28
2.9.2 Media Antarmuka manusia dan Komputer ... 29
2.9.3 Sub Bidang Studi Interaksi Manusia dengan Komputer ... 30
2.9.4 Aturan Desain Antarmuka ……… 31
BAB III ANALISA PERMASALAHAN 3.1 Alur Kegiatan Penelitian ... 32
3.2 Bahan Penelitian ……... 33
3.2.1 Algorithma Knut Morris Pratt …...………... 33
3.2.2 Algorithma Booyer – Moore …..……... 36
3.3 Analisis Perbandingan... 38
3.3.1 Perbandingan Booyer Moore ... 38
3.3.2 Perbandingan Knut Morris Pratt ... 39
3.3.3 Hasil Perbandingan ... 39
3.4 Diagram Alur Sistem ………... 40
3.5 Spesifikasi Perangkat Yang Dipergunakan ... 41
(9)
vii
4.1 Implementasi Hasil Perancangan ………... 43
4.2 Implementasi Prosedur Knut Morris Pratt... 43
4.3 Implementasi Prosedur Booyer – Moore ... 44
4.4 Pengujian Aplikasi ... 46
4.4.1 Percobaan 1 …..……… 48
4.4.2 Percobaan 2 …..……… 49
4.4.3 Percobaan 3 …..……… 50
4.4.4 Percobaan 4 …..……… 52
4.4.5 Percobaan 5 …..……… 53
4.4.6 Percobaan 6 …..……… 54
4.4.7 Percobaan 7…..………. 55
4.4.8 Percobaan 8 ..……… 56
4.4.9 Percobaan 9 ..……….... 57
4.4.10 Percobaan 10 …..……….. 58
4.5 Tabel Hasil Percobaan ………... 59
BAB V PENUTUP 5.1 Kesimpulan... 61
5.2 Saran ………. 62
DAFTAR PUSTAKA... ... 63
Hak Cipta © milik UPN "Veteran" Jatim :
(10)
DAFTAR TABEL
Tabel 2.1 Jenis – jenis File dalam Delphi …………... 26
Table 3.1 Perolehan Waktu Hasil Pengujian... 38 Tabel 4.1 Hasil Percobaan ………. 60
(11)
viii
Gambar 2.1 Pondasi RPL ………... 17
Gambar 2.2 Tampilan Awal Delphi …... 23
Gambar 2.3 Daftar Komponen Palet Standar Delphi ... 24
Gambar 2.4 Daftar Komponen Palet Additional ... 24
Gambar 2.5 Daftar Komponen Palet Win 32 ... 24
Gambar 2.6 Daftar Komponen Palet System ... 25
Gambar 2.7 Komponen Palet Dialog ... 25
Gambar 2.8 Membuat Aplikasi Sederhana dengan Delphi ... 25
Gambar 3.1 Alur Kegiatan Penelitian ... 32
Gambar 3.2 Grafik Booyer Moore... 38
Gambar 3.3 Grafik Knut Morris Pratt... 39
Gambar 3.4. Diagram Alur Pencarian Pola String... 40
Gambar 3.5 Perancangan Antar Muka ………... 42
Gambar 3.6 Perancangan Grafik Antar Muka ………. ... 42
Gambar 4.1 Tampilan Awal Aplikasi ... 46
Gambar 4.2 Tampilan Menginputkan File Teks ... 47
Gambar 4.3 Tampilan File Teks Sudah Diinputkan ... 47
Gambar 4.4 Percobaan 1 String yang Dicari “ sangkuriang “ ... 48
Gambar 4.5 Percobaan 1 pada algorithma Knut Morris Pratt ... 48
Gambar 4.6 Percobaan 2 String “ sumbi “ ... 49
Gambar 4.7 Percobaan 2 String “ sumbi “ ... 50
Hak Cipta © milik UPN "Veteran" Jatim :
(12)
Gambar 4.8 Percobaan 3 String “ Dayang “ ………... 50
Gambar 4.9 Percobaan 3 String “ Dayang “ ………... 51
Gambar 4.10 Percobaan 4 String “ tumang “ ... 52
Gambar 4.11 Percobaan 4 String “ tumang “ ... 52
Gambar 4.12 Percobaan 5 String “ Tumang “ ………... 53
Gambar 4.13 Percobaan 5 String “ Tumang “ ………... 53
Gambar 4.14 Percobaan 6 String “ jama “ ... 54
Gambar 4.15 Percobaan 6 String “ jama “ ... 54
Gambar 4.16 Percobaan 7 String “ jawa Barat “... 55
Gambar 4.17 Percobaan 7 String “ jawa Barat “ …... 55
Gambar 4.18 Percobaan 8 String “ JawaBarat “ ……... 56
Gambar 4.19 Percobaan 8 String “ JawaBarat “ …... 56
Gambar 4.20 Percobaan 9 String “ Jawa Barat “ ... 57
Gambar 4.21 Percobaan 9 String “ Jawa Barat “ ... 58
Gambar 4.22 Percobaan 10 String “ perahu “ …... 58
(13)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Judul : Aplikasi Analisa Dan Uji Perbandingan
Algorithma Knut Morris Pratt ( KMP ) Dan Boyer
Moore ( BM ) Untuk Pencarian Pola Kata Dalam
File Teks
Dosen pembimbing I : Hj. Asti Dwi Irfianti, S.Kom, M.Kom Dosen Pembimbing II : Dr. Ir. Ni Ketut Sari, MT
Penulis : Arfin Saka Adienata Putra
ABSTRAK
Penggunaan komputer yang makin pesat pada saat ini menyebabkan terjadinya penumpukan data dalam jumlah besar. Hal ini menimbulkan masalah dalam pencarian file data tertentu, data yang disimpan seringkali lupa penempatannya sehingga mempersulit proses pencarian.
String pattern matching merupakan salah satu teknik pencarian data dengan cara mencocokkan pola yang diinputkan oleh user dengan isi file ( yang juga berupa string ). Teknik ini sangat membantu proses pencarian file berdasarkan isi yang terkandung dalam file tersebut berdasarkan kata kuncinya. Algoritma yang digunakan dalam proses pencocokan string antara lain Algoritma Brute Force, Algoritma Knuth-Morris-Pratt (KMP), Algoritma Boyer-Moore (BM), Algoritma Karp-Rabin, dan Algoritma Shift Or.
Pada Tugas Akhir kali ini penulis akan membandingkan antara algorithma Knuth-Morris-Pratt (KMP) dengan algoritma Boyer-Moore (BM) guna mengetahui manakah yang terbaik diantara kedua algorithma tersebut.
Kata kunci : String Pattern Matching, algorithma Knut Morris Prat , algoritma Boyer-Moore (BM), algoritma Karp-Rabin, dan algoritma Shift Or.
Hak Cipta © milik UPN "Veteran" Jatim :
(14)
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Seiring dengan berkembangnya ilmu pengetahuan dan teknologi
tentang perangkat keras akhir-akhir ini, maka berkembang pula ilmu tentang
rekayasa perangkat lunak. Berbagai macam bentuk metode dan algorithma
pemrograman mulai ditemukan untuk meningkatkan kinerja komputasi dan
sekaligus memecahkan masalah-masalah yang sudah ada maupun masalah
yang baru.
Dampak positip dari perkembangan tersebut adalah semakin
bervariasinya perangkat lunak yang dapat mempermudah pekerjaan dalam
kehidupan sehari-hari. Mulai dari sistem operasi hingga hiburan dan
interkoneksi global sudah bukan hal yang sulit.
Salah satu perangkat lunak yang berkembang dan paling banyak
digunakan oleh komputer adalah program untuk penyuntingan dokumen.
Kendala yang paling umum dan sering dijumpai dalam proses penyuntingan
dokumen tersebut yaitu menemukan kata tertentu untuk mengetahui dimana
letak kata tersebut. Contoh yang dapat kita amati lainnya adalah pencarian
string pada data DNA (data genomic), yang berfungsi untuk mengetahui
kemiripan suatu makhluk hidup dengan makhluk hidup lain ataupun juga
mengetahui manfaat dari suatu protein tertentu dengan melakukan
perbandingan pada protein yang terdapat di bank data protein. Oleh karena
(15)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. dapat diatasi dengan metode String pattern matching atau pencocokan pola
string. [4].
String pattern matching merupakan salah satu teknik pencarian kata dengan cara mencocokan pola yang diinputkan oleh user dengan isi file
(yang juga berupa string). Teknik ini sangat membantu proses pencarian
kata berdasarkan input user yang terkandung dalam file tersebut, sehingga
proses editing dokumen menjadi lebih mudah.
Algoritma string pattern matching terdapat beberapa macam, baik
yang termasuk dalam kategori metode heuristic maupun brute force.
Masing-masing algorithma mempunyai kelebihan dan kekurangan.
Berdasarkan uraian tersebut, maka dalam Tugas Akhir kali ini penulis akan
membuat aplikasi yang membandingkan kinerja dari algorithma KMP (Knut
Morris Prat) dengan BM (Booyer Moore), untuk mengetahui manakah yang lebih baik diantara keduanya.
1.2. Perumusan Masalah
Rumusan masalah yang digunakan dalam tugas akhir ini adalah :
1. Bagaimana membuat aplikasi perbandingan kinerja pencarian pola kata
menggunakan algorithma Knut Morris Pratt ( KMP ) dan Booyer Moore
( BM ) ?
2. Bagaimana melakukan analisa perbandingan kinerja pencarian pola kata
tersebut menggunakan algorithma Knut Morris Pratt ( KMP ) dan
Booyer Moore ( BM ) ?
Hak Cipta © milik UPN "Veteran" Jatim :
(16)
3
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
1.3. Batasan Masalah
Agar pembahasan dan penyusunan Tugas Akhir ini dapat dilakukan
secara terarah dan tidak menyimpang serta sesuai dengan apa yang
diharapkan, maka perlu ditetapkan batasan-batasan dari masalah yang
dihadapi, yaitu :
1. Format file yang dipergunakan sebagai uji coba adalah file teks
(ekstensi .txt).
2. Aplikasi dibangun dengan menggunakan algoritma Knut Morris Pratt
( KMP ) dan Booyer Moore ( BM )
3. Aplikasi dibangun dengan menggunakan Developer Embarcadero
studio 2010.
4. Aplikasi dapat berjalan pada sistem operasi Microsoft Windows Xp ,
Windows Vista atau Windows Seven.
1.4. Tujuan
Tujuan yang ingin dicapai pada pengerjaan tugas akhir ini adalah
melakukan pengujian dan perbandingan algorithma Knut Morris Pratt
( KMP ) dan Booyer Moore ( BM ) untuk mengetahui algoritma mana yang
lebih baik dalam pencarian pola kata.
(17)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Manfaat yang diperoleh dari pengerjaan tugas akhir ini adalah
mempermudah user ( pengguna komputer ) mencari kata dengan hasil
akurasi yang lebih baik dan efisien dalam menggunakan aplikasi ini.
1.6. Metodologi Penelitian
Adapun metode penelitian yang dipergunakan dalam pengerjaan tugas
akhir ini adalah :
a. Studi Literatur
Mencari referensi dan bahan pustaka tentang teori-teori yang
berhubungan dengan permasalahan yang akan dikerjakan dalam tugas
akhir ini.
b. Studi Kasus
Mencari contoh-contoh kasus serupa yang berhubungan dengan
permasalahan dalam tugas akhir ini.
c. Analisis dan Perancangan
Membuat analisa berdasarkan data-data yang sudah dimiliki, membuat
model dan merancang alur penyelesaian berdasarkan algoritma Knut
Morris Pratt ( KMP ) dan Booyer Moore ( BM ). Perancangan aplikasi dimulai dengan perancangan antar muka aplikasi, kemudian merancang
detail algoritma Knut Morris Pratt ( KMP ) dan Booyer Moore ( BM ).
d. Implementasi Program
Mengimplementasikan teknik algoritma yang akan digunakan. Detail
mengenai implementasi program dilakukan sesuai hasil analisis dan
perancangan aplikasi pada tahapan sebelumnya.
Hak Cipta © milik UPN "Veteran" Jatim :
(18)
5
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. e. Pengujian Aplikasi
Pengujian dilakukan pada aplikasi yang telah dibuat. Menguji validitas
dan efektifitas algoritma yang diterapkan pada aplikasi.
f. Evaluasi dan Penarikan kesimpulan
Evaluasi dilakukan untuk mengetahui kinerja algorithma pencari pola
string sesuai algorithma yang dipergunakan, selanjutnya dilakukan
penarikan kesimpulan.
1.7. Sistematika Penulisan
Sistematika penulisan tugas akhir ini disusun untuk memberikan
gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan
tugas akhir ini adalah sebagai berikut :
BAB I PENDAHULUAN
Bab ini berisi latar belakang masalah, identifikasi masalah,
maksud dan tujuan yang ingin dicapai, batasan masalah,
metodologi penelitian yang diterapkan dalam memperoleh dan
mengumpulkan data, waktu dan tempat penelitian, serta
sistematika penulisan.
BAB II TINJAUAN PUSTAKA
Membahas berbagai konsep dasar dan teori-teori yang
berkaitan dengan topik masalah yang diambil dan hal-hal
(19)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
BAB III ANALISIS DAN PERANCANGAN
Menganalisis masalah dari model penelitian untuk
memperlihatkan keterkaitan antar variabel yang diteliti serta
model matematis untuk analisisnya.
BAB IV IMPLEMENTASI DAN PENGUJIAN
Membahas mengenai pengimplementasian aplikasi yang telah
dibuat ke perangkat yang akan digunakan serta melakukan
pengujian terhadap aplikasi yang telah diimplementasikan
tersebut.
BAB V PENUTUP
Berisi kesimpulan dan saran yang sudah diperoleh dari hasil
penulisan tugas akhir.
Hak Cipta © milik UPN "Veteran" Jatim :
(20)
BAB II
TINJAUAN PUSTAKA
2.1. Algorithma dan Pemrograman
Dalam matematika dan komputasi, algoritma atau algoritme
merupakan kumpulan perintah untuk menyelesaikan suatu masalah.
Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga
akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap
masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum
menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua
kondisi awal yang memenuhi kriteria, dalam hal ini berbeda
dengan heuristik. Algoritma sering mempunyai langkah pengulangan
(iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan)
sampai tugasnya selesai. Sedangkan pemrograman itu sendiri adalah proses
menulis, menguji dan memperbaiki (debug), dan memelihara kode yang
membangun sebuah program komputer. Kode ini ditulis dalam
berbagai bahasa pemrograman. Tujuan dari pemrograman adalah untuk
memuat suatu program yang dapat melakukan suatu perhitungan atau
“pekerjaan” sesuai dengan keinginan si pemrogram. Untuk dapat melakukan
pemrograman, diperlukan keterampilan dalam algoritma, logika, bahasa
pemrograman, dan di banyak kasus, pengetahuan-pengetahuan lain
(21)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
2.2. Algorithma Knuth Morris Pratt
Algoritma Knuth – Morris - Pratt adalah salah satu algoritma
pencarian string, dikembangkan secara terpisah oleh Donald E. Knuth pada
tahun 1967 dan James H. Morris bersama Vaughan R. Pratt pada tahun
1966, namun keduanya mempublikasikannya secara bersamaan pada tahun
1977.
Jika kita melihat algoritma brute force lebih mendalam, kita
mengetahui bahwa dengan mengingat beberapa perbandingan yang
dilakukan sebelumnya kita dapat meningkatkan besar pergeseran yang
dilakukan. Hal ini akan menghemat perbandingan, yang selanjutnya akan
meningkatkan kecepatan pencarian.
Perhitungan penggeseran pada algoritma ini adalah sebagai berikut, bila
terjadi ketidakcocokkan pada saat pattern sejajar dengan teks[i..i + n − 1],
kita bisa menganggap ketidakcocokan pertama terjadi di
antara teks[i + j] dan pattern[j], dengan 0 < j < n. Berarti, teks[i..i + j − 1]
= pattern[0..j − 1] dan a = teks[i + j] tidak sama dengan b = pattern[j].
Ketika kita menggeser, sangat beralasan bila ada sebuah awalan v dari
pattern akan sama dengan sebagian akhiran u dari sebagian teks. Sehingga
kita bisa menggeser pattern agar awalan v tersebut sejajar dengan akhiran
dari u.
Dengan kata lain, pencocokkan string akan berjalan secara efisien bila
kita mempunyai tabel yang menentukan berapa panjang kita seharusnya
(22)
9
pattern. Tabel 1` harus memuat next[j] yang merupakan posisi
karakter pattern[j] setelah digeser, sehingga kita bisa menggeser pattern
sebesar j − next[j] relatif terhadap teks. [5].
Secara sistematis, langkah-langkah yang dilakukan algoritma
Knuth-Morris-Pratt pada saat mencocokkan string :
1. Algoritma Knuth-Morris-Pratt mulai mencocokkan pattern pada awal
teks.
2. Dari kiri ke kanan, algoritma ini akan mencocokkan karakter per
karakter pattern dengan karakter di teks yang bersesuaian, sampai salah
satu kondisi berikut dipenuhi :
a. Karakter di pattern dan di teks yang dibandingkan tidak cocok
(mismatch).
b. Semua karakter di pattern cocok. Kemudian algoritma akan
memberitahukan penemuan di posisi ini.
3. Algoritma kemudian menggeser pattern berdasarkan tabel next, lalu
mengulangi langkah no. 2 sampai pattern berada di ujung teks. [5].
Pseudocode
Berikut adalah pseudocode algoritma Knuth-Morris-Pratt pada fase
pra-pencarian :
procedure preKMP(
input P : array[0..n-1] of char, input n : integer,
(23)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. )
Deklarasi: i,j: integer Algoritma i := 0;
j := kmpNext[0] := -1; while (i < n) {
while (j > -1 and not(P[i] = P[j])) j := kmpNext[j];
i:= i+1; j:= j+1;
if (P[i] = P[j])
kmpNext[i] := kmpNext[j]; else
kmpNext[i] := j; endif
endwhile
Dan berikut adalah pseudocode algoritma Knuth-Morris-Pratt pada fase
pencarian :
procedure KMPSearch( input m, n : integer,
input P : array[0..n-1] of char, input T : array[0..m-1] of char,
output ketemu : array[0..m-1] of boolean )
Deklarasi:
i, j,next: integer
kmpNext : array[0..n] of interger Algoritma:
preKMP(n, P, kmpNext) i:=0
(24)
11
j:=0
while (j < n and T[i+j] = P[j]) do j:=j+1
endwhile if(j >= n) then ketemu[i]:=true; endif
next:= j - kmpNext[j] i:= i+next
endwhile
2.3. Algorithma Booyer - Moore
Algoritma Booyer - Moore adalah salah satu algoritma pencarian
string, dipublikasikan oleh Robert S. Boyer, dan J. Strother Moore pada
tahun 1977.
Algoritma ini dianggap sebagai algoritma yang paling efisien pada
aplikasi umum. Tidak seperti algoritma pencarian string yang ditemukan
sebelumnya, algoritma Booyer-Moore mulai mencocokkan karakter dari
sebelah kanan pattern. Ide dibalik algoritma ini adalah bahwa dengan
memulai pencocokkan karakter dari kanan, dan bukan dari kiri, maka akan
lebih banyak informasi yang didapat.
Misalnya ada sebuah usaha pencocokan yang terjadi pada teks[i..i + n −
1], dan anggap ketidakcocokan pertama terjadi di
antara teks[i + j] dan pattern[j], dengan 0 < j < n. Berarti, teks[i + j +
1..i + n − 1] = pattern[j + 1..n − 1] dan a = teks[i + j] tidak sama
(25)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. sebelum b dan v adalah sebuah awalan dari pattern, maka
penggeseran-penggeseran yang mungkin adalah :
1. Penggeseran good-suffix yang terdiri dari mensejajarkan
potongan teks[i + j + 1..i + n − 1] = pattern[j + 1..n − 1] dengan
kemunculannya paling kanan di pattern yang didahului oleh karakter
yang berbeda dengan pattern[j]. Jika tidak ada potongan seperti itu,
maka algoritma akan mensejajarkan akhiran v dari teks[i + j + 1..i + n −
1] dengan awalan dari pattern yang sama.
2. Penggeseran bad-character yang terdiri dari
mensejajarkan teks[i + j] dengan kemunculan paling kanan karakter
tersebut di pattern. Bila karakter tersebut tidak ada di pattern, maka
pattern akan disejajarkan dengan teks[i + n + 1].
Secara sistematis, langkah-langkah yang dilakukan algoritma Boyer-Moore
pada saat mencocokkan string adalah :
1. Algoritma Boyer-Moore mulai mencocokkan pattern pada awal teks.
2. Dari kanan ke kiri, algoritma ini akan mencocokkan karakter per
karakter pattern dengan karakter di teks yang bersesuaian, sampai salah
satu kondisi berikut dipenuhi :
a. Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch).
b. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan penemuan di posisi ini.
(26)
13
3. Algoritma kemudian menggeser pattern dengan memaksimalkan nilai
penggeseran good-suffix dan penggeseran bad-character, lalu
mengulangi langkah 2 sampai pattern berada di ujung teks. [3].
Berikut adalah pseudocode algoritma Boyer-Moore pada fase pra-pencarian :
procedure preBmBc(
input P : array[0..n-1] of char, input n : integer,
input/output bmBc : array[0..n-1] of integer )
Deklarasi: i: integer Algoritma:
for (i := 0 to ASIZE-1) bmBc[i] := m; endfor
for (i := 0 to m - 2) bmBc[P[i]] := m - i - 1; endfor
procedure preSuffixes(
input P : array[0..n-1] of char, input n : integer,
input/output suff : array[0..n-1] of integer )
Deklarasi:
f, g, i: integer Algoritma:
(27)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. g := n - 1;
for (i := n - 2 downto 0) {
if (i > g and (suff[i + n - 1 - f] < i - g)) suff[i] := suff[i + n - 1 - f];
else
if (i < g) g := i; endif f := i;
while (g >= 0 and P[g] = P[g + n - 1 - f]) --g;
endwhile
suff[i] = f - g; endif
endfor
procedure preBmGs(
input P : array[0..n-1] of char, input n : integer,
input/output bmBc : array[0..n-1] of integer )
Deklarasi: i, j: integer
suff: array [0..RuangAlpabet] of integer preSuffixes(x, n, suff);
for (i := 0 to m-1) bmGs[i] := n endfor
(28)
15
for (i := n - 1 downto 0) if (suff[i] = i + 1) for (j:=j to n - 2 - i) if (bmGs[j] = n)
bmGs[j] := n - 1 - i endif
endfor endif endfor
for (i = 0 to n - 2)
bmGs[n - 1 - suff[i]] := n - 1 - i; endfor
Dan berikut adalah pseudocode algoritma Boyer-Moore pada fase pencarian :
procedure BoyerMooreSearch( input m, n : integer,
input P : array[0..n-1] of char, input T : array[0..m-1] of char,
output ketemu : array[0..m-1] of boolean )
Deklarasi:
i, j, shift, bmBcShift, bmGsShift: integer BmBc : array[0..255] of interger
BmGs : array[0..n-1] of interger Algoritma:
preBmBc(n, P, BmBc) preBmGs(n, P, BmGs) i:=0
(29)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. j:=n-1
while (j >=0 n and T[i+j] = P[j]) do j:=j-1
endwhile if(j < 0) then ketemu[i]:=true; endif
bmBcShift:= BmBc[chartoint(T[i+j])]-n+j+1 bmGsShift:= BmGs[j]
shift:= max(bmBcShift, bmGsShift) i:= i+shift
2.4. Rekayasa Perangkat Lunak
Rekayasa perangkat lunak telah berkembang sejak pertama kali
diciptakan pada tahun 1940-an hingga kini. Fokus utama pengembangannya
adalah untuk mengembangkan praktek dan teknologi untuk meningkatkan
produktivitas para praktisi pengembang perangkat lunak dan kualitas
aplikasi yang dapat digunakan oleh pemakai.
Menurut IEEE, RPL adalah aplikasi yang pendekatannya sistematis,
disiplin, bisa terukur untuk pengembangan operasional dan pembuatan
software.
Pondasi RPL adalah lapisan proses, karena terkait dengan teknologi dan
waktu pengembangan. Proses mendefinisikan framework Key Prosess Are
(KPA) yang harus dibuat untuk penekanan teknologi RPL yang efektif.
(30)
17
Yang termasuk metode : analisa, desain, pembuatan program, pengujian
dan perawatan. Tool padA RPL digunakan untuk memberikan dukungan
otomatisasi atau semi otomatis pada proses dan metode. Sistem yang biasa
digunakan untuk mendukung pengembangan disebut Computer Aided
Software Enginering (CASE). CASE mengkombinasikan software, hardware dan database RPL ( berisi informasi mengenai analisa, desain, pembuatan program dan pengujian ).
Gambar 2.1. Pondasi RPL
Rekayasa adalah analisa, desain, pembuatan, verifikasi dan manajemen
teknis (atau sosial). Tanpa memandang entitas yang harus direkayasa, ada
beberapa pertanyaan yang harus dijawab :
1. Problem apa yang harus dicarikan solusinya ?
2. Apa saja karakteristik entitas yang digunakan untuk menyelesaikan
persoalan tersebut.
3. Bagaimana entitas (dan solusinya) dapat direalisasikan ?
4. Bagaimana entitas akan dibangun ?
5. Pendekatan apa yang akan digunakan untuk mencegah terjadinya
kesalahan desain dan pembuatan entitas?
6. Bagaimana entitas akan didukung selama mungkin, pada saat ada
permintaan koreksi, adaptasi dan pengembangan oleh user.
A Quality Focus Tools Method Process
(31)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Pekerjaan yang berhubungan dengan RPL bisa dikategorikan ke dalam
3 fase umum tanpa memandang area aplikasi, ukuran proyek atau
kompleksitas. Fase tersebut yaitu :
1. Definition Phase
Selama fase ini, software developer berusaha untuk
mengidentifikasi informasi apa saja yang harus diproses, apa saja
fungsi dan kinerja yang digunakan, tingkah laku sistem yang
diharapkan, apa saja interface yang harus dibuat, apa saja kendala
desain yang ada, dan kriteria validasi yang diperlukan untuk
mendefinisikan kesuksesan sistem.
2. Development Phase
Selama fase ini, software developer berusaha untuk
mendefinisikan bagaimana data disusun, bagaimana fungsi bisa
diimplementasikan sesuai dengan arsitektur software, bagaimana
prosedur detil untuk implemetasi, bagaimana karakter interface,
bagaimana hasil desain bisa ditranslasikan ke bahasa pemrograman
dan bagaimana cara pengujiannya.
Ada tiga aktivitas teknis yang selalu terjadi:
a. Desain Software
b. Pembuatan Program
c. Pengujian Software
3. Maintenance Phase
Difokuskan pada perubahan sehubungan dengan adanya
(32)
19
customer. Ada 4 tipe perubahan : 1. Correction
Mengubah software untuk memperbaiki kesalahan-kesalahan
yang ada.
2. Adaption
Modifikasi yang dilakukan terhadap software dikarenakan
adanya perubahan lingkungan eksternal (misal: CPU, sistem
operasi, aturan bisnis, karakter produk eksternal).
3. Enhancement
Pada saat software dipakai, user meminta tambahan-tambahan
fungsi. Sehingga software dikembangkan dari kebutuhan
semula.
4. Prevention
Sering disebut software re-enginering, harus dilakukan untuk
memungkinkan software bisa sesuai dengan keinginan end
user. Pada fase ini dilakukan perubahan - perubahan ke program komputer, sehingga program tersebut bisa dikoreksi,
beradaptasi dan dikembangkan dengan mudah. [1].
2.5. Pengujian Perangkat Lunak
Pengembangan sistem perangkat lunak melibatkan sederetan aktivitas
produksi di mana peluang terjadinya kesalahan manusia sangat besar.
Kesalahan dapat mulai terjadi pada permulaan proses di mana sasaran
(33)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. pengembangan selanjutnya. Karena ketidakmampuan manusia untuk
melakukan dan berkomunikasi dengan sempurna, maka pengembangan
perangkat lunak harus selalu diiringi dengan aktivitas jaminan kualitas.
Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas
Perangkat Lunak, dan mempresentasikan kajian pokok dari spesifikasi,
desain, dan pengkodean. Dengan meningkatnya visibilitas perangkat lunak
sebagai suatu elemen sistem, dan biaya yang muncul akibat kegagalan
perangkat lunak, maka memotivasi dilakukakannya perencanaan yang baik
melalui pengujian yang teliti.
Adalah hal yang wajar jika organisasi pengembangan Perangat Lunak
meningkatkan 30 – 40 % usaha proyek pengembangan Perangkat Lunak
pada tahap pengujian. [1].
2.6. Flow Map
Flow Map adalah diagram yang menunjukan aliran data berupa
formulir -formulir ataupun keterangan berupa dokumentasi yang
mengalir atau beredar dalam suatu sistem. Notasi yang digunakan dalam
suatu flow map merupakan penggabungan notasi flow chart program.
Hal-hal yang harus diperhatikan dalam menggambarkan flow map
adalah sebagai berikut :
1. Penggambaran flow map dimulai dari atas halaman ke bagian
bawah, kemudian dari kiri kebagian kanan
2. Penggambaran flow map dilakukan berdasarkan pembagian atau
(34)
21
3. Dalam flow map harus jelas dimana awal suatu status informasi,
kemudian dimana akhir silkus
4. Semua bagian siklus informasi harus jelas Menggunakan kertas
kerja yang jelas sesuai dengan yang akan dilakukan dalam sistem
5. Semua sub sistem yang digambarkan, harus mengalami siklus
informasi
6. Jika penggambaran suatu siklus informasi terpotong, maka gunakan
penghubung antar bagian.
2.7. Embarcadero Delphi 2010
Delphi merupakan alat bantu pengembangan aplikasi yang berbasis visual. Perangkat ini merupakan hasil pengembangan dari bahasa
pemrograman pascal yang diciptakan oleh Niklaus Wirth. Pada masa itu,
Wirth bermaksud membuat bahasa pemrograman tingkat tinggi sebagai alat
bantu mengajar logika pemrograman komputer kepada para mahasiswanya.
Bahasa pemrograman pascal ini kemudian dikembangkan oleh Borland
yang merupakan salah satu perusahaan software menjadi sebuah tools
dengan dibuatkan kompiler dan dijual ke pasar dengan nama TURBO
PASCAL. [2].
Seiring dengan ditemukannya metode pemrograman berorientasi obyek,
bahasa pemrograman pascal berevolusi menjadi object pascal dan
dikembangkan oleh Borland dengan nama Borland Delphi.
Keberhasilan Borland dalam mengembangkan Delphi menjadikan salah
(35)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Visual Basic yang dikeluar Microsoft di kemudian hari. Lingkungan
pengembangan Delphi yang mudah, intuitif dan memudahkan pemakai,
berhasil melampaui popularitas rivalnya, yaitu Visual Basic, sehingga
pernah menyandang predikat “VB-Killer”.
Karena tuntutan perkembangan teknologi, Borland berganti nama
menjadi Code Gear, tetapi tetap mempergunakan nama Delphi untuk tools
yang berbasis object pascal ini. Tidak lama kemudian Code Gear diakuisisi
oleh Embarcadero dan namanya pun berubah menjadi Embarcadero RAD
Studio dengan tetap mempertahankan Delphi sebagai salah satu tools-nya.
Beberapa kelebihan yang dimiliki oleh Embarcadero Delphi 2010 ini
antara lain : [2].
1. Delphi dibangun dengan menggunakan arsitektur native compiler,
sehingga proses kompilasi instruksi menjadi bahasa mesin menjadi
lebih cepat.
2. Semua file yang disertakan saat proses kompilasi, digabungkan
menjadi satu sesuai dengan arsitektur native compiler, sehingga
mengurangi ketergantungan terhadap library ataupun file - file
pendukung lainya, sesuai dengan prinsip build once, runs
everywhere.
3. Delphi mempunyai kemampuan selective object linking, sehingga
apabila terdapat pemanggilan sebuah library dan ternyata tidak
terdapat instruksi dalam library tersebut yang dipergunakan dalam
system, maka secara otomatis, kompiler tidak akan menyertakan library tersebut dalam proses kompilasinya. Hal ini berbeda dengan
(36)
23
tools lain yang tidak mempunyai kemampuan seperi itu. Dengan
adanya kemampuan tersebut, maka file eksekusi yang dihasilkan
delphi menjadi lebih optimal.
4. Lingkungan pengembangan Delphi sangat intuitif karena semua
komponen yang menjadi alat utama desain visual telah ditampilkan
saat pertama kali langsung dapat diamati oleh user dan dapat
digunakan secara langsung.
Berikut ini adalah tampilan Delphi :
Gambar 2.2. Tampilan awal Delphi
Dalam delphi seperti halnya bahasa visual lainnya menyediakan
komponen. Komponen adalah “jantung” bagi pemograman visual.
Componen Palette telah terbagi menjadi berbagai jenis komponen, diantaranya adalah Standard, Additional, Win32, System, dan beberapa
lainnya. Berikut ini adalah uraian yang komponen palet yang paling sering
(37)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Gambar 2.3. Daftar komponen palet standard Delphi
Tampak pada palet standard diatas (dengan urutan dari kiri ke kanan),
adalah frame, main menu, pop up menu, label, edit text, memo, button,
check box, radio button, list box, combo box, scroll bar, group box, radio
group, panel dan action list.
Gambar 2.4. Daftar komponen palet additional
Pada palet additional terdapat komponen bit button, speed button, mask
edit, string grid, draw grid, image, shape, bevel, scroll box, list box, splitter,
static text, tlink label, control bar, application events, value list edit, labeled
edit, buttoned edit, color box, color list box, category button, button group,
dock tab set, tab set, tray icon, flow panel, grid panel, balloon hint, category
group dan action manager.
Gambar 2.5. Daftar komponen palet win 32
Pada palet win 32 terdapat komponen tab control, page control, image
list, rich edit, track bar, progress bar, up down, hot key, animate, date time
picker, month calendar, tree view, list view, header control, status bar, tool
(38)
25
Gambar 2.6. Daftar komponen palet system
Komponen yang terdapat dalam palet system adalah timer, paint box,
media player, ole container, comadmin dialog, DDE Client Conv, DDE
Client Item, DDE Server Conv dan DDE Server Item.
Gambar 2.7. Komponen Palet Dialog
Komponen yang terdapat dalam palet dialog adalah open dialog, save
dialog, open picture dialog, save picture dialog, open text file dialog, save
text file dialog, font dialog, color dialog, print dialog, printer setup dialog,
find dialog, replace dialog, page setup dialog.
Gambar 2.8. Membuat aplikasi sederhana dengan Delphi
Sebuah proyek Delphi akan terdiri dari berberapa file. Ada file yang
(39)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Karena setiap aplikasi terdiri dari beberapa file. Sangat disarankan agar
menyimpan, sebuah aplikasi pada sebuah folder. Berbagai jenis file yang
dibuat saat membangun aplikasi menggunakan Delphi adalah sebagai
berikut : [2].
Tabel 2.1. Jenis-jenis file dalam Delphi
Jenis File Keterangan
.dproj File proyek, fungsinya untuk linking object
.dfm File form, fungsinya menyimpan nilai properti form
.pas File unit, berisi source code prosedur dan fungsi
.dpk File package, berisi instalasi komponen
.res File resource
.cfg File konfigurasi proyek
.dof File pilihan proyek
.dcu Hasil kompilasi file .pas
.exe File executable (yang dapat dijalankan)
.~* File cadangan (back up)
2.8. Penanganan Database pada Delphi
Implementasi database pada prinsipnya dibagi menjadi dua, yaitu :
a. Model pertama mengemas seluruh data yang terkait dalam sebuah
database ke dalamsebuah berkas. Model seperti ini dijumpaipada Access, Interbase, dan kebanyakan Server SQL lainnya.
(40)
27
b. Model kedua menggunakan sejumlah berkas untuk menyimpan data,
indeks, dan hal-hal lainyang terkait dengan database. Biasanya
keseluruhan berkas ini disimpan pada direktori yang sama. Foxpro,
dBase, dan Paradox termasuk dalam kategori ini.
Pada form, sumber data diakses melalui komponen yang merupakan
turunan dari kelas TdataSet. Melalui form, pada prinsipnya kita dapat
memanipulasi databse (membaca, menyimpan, menampilkan, dan
sebagainya). Bagaimana halnya dengan Delphi, Delphi juga menyediakan
berbagai cara untuk mengakses database. Salah satu diantaranya adalah
melalui BDE (Borland Database Engine). Melalui BDE anda dapat
mengakses sejumlah sumber data seperti dBASE, Paradox, Foxpro, dan
Accsess. [2].
2.9. IMK ( Interaksi Manusia dan Komputer )
Interaksi manusia dan komputer adalah disiplin ilmu yang mempelajari
hubungan antara manusia dan komputer yang meliputi perancangan,
evaluasi, dan implementasi antarmuka pengguna komputer agar mudah
digunakan oleh manusia. Ilmu ini berusaha menemukan cara yang paling
efisien untuk merancang pesan elektronik. Sedangkan interaksi manusia dan
komputer sendiri adalah serangkaian proses, dialog dan kegiatan yang
dilakukan oleh manusia untuk berinteraksi dengan komputer yang keduanya
saling memberikan masukan dan umpan balik melalui sebuah antarmuka
(41)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. terjadi pada saat input maupun output atau biasanya disebut interface
(antarmuka). IMK memberikan arahan bagi perancang interface untuk
dapat memahami apa yang baik bagi user. [8].
2.9.1. Tujuan interaksi manusia dengan komputer
Tujuan utama disusunnya berbagai cara interaksi manusia dan
komputer adalah untuk mempermudah manusia dalam
mengoperasikan komputer dan mendapatkan berbagai umpan balik
yang perlukan selama bekerja pada sebuah sistem komputer. Kita
harus dapat mengetahui hal-hal apa saja yang dibutuhkan dan
diinginkan user sehingga kita harus tahu kebiasaan apa saja yang
digunakan user dalam menggunakan sebuah system dan juga alat
bantunya. Hal ini sangatlah penting, karena sebagus apa pun
program yang kita buat, dan secanggih apa pun alat yang kita
gunakan, jika itu tidak sesuai dengan kebiasaan user tersebut maka
program dan alat bantu tersebut tidak akan pernah diterima oleh
user tersebut. Oleh karena itu, kita harus dapat membuat program
yang (user friendly). Sebagai contoh, misalnya sebuah komputer
lengkap dipasang pada sebuah tempat yang tidak nyaman bagi
seorang pengguna yang menggunakan. Atau keyboard yang
digunakan pada komputer tersebut tombol-tombolnya keras
(42)
29
2.9.2. Media Antarmuka Manusia dan komputer
a. Media Tekstual
Adalah bentuk sederhana dialog atau komunikasi antara
manusia dan komputer yang hanya berisi teks dan kurang
menarik. Salah satu contoh antarmuka manusia dan komputer
berbentuk teks yang menggunakan bahasa pemrograman
PASCAL adalah readln dan writeln. [8].
b. Media GUI ( graphical User Interface )
Adalah bentuk dialog atau komunikasi antara manusia dan
komputer yang berbentuk grafis dan sangat atraktif. Contoh
antarmuka manusia dan komputer yang berbentuk grafis
menggunakan pemrograman visual (Visual Basic, Visual
Foxpro, Delphi dan lain-lain). [8].
2.9.3. Sub Bidang Studi Interaksi Manusia Dengan Komputer
Ada beberapa sub-bidang studi yang berhubungan dengan
interaksi dengan komputer : [8]
a. Teknik Elektronika dan Ilmu Komputer : merupakan aspek
yang berhubungan dengan hardware dan software yang dapat
memberikan kenyamanan terhadap pengguna. Kriteria
interface software yang bagus yaitu mudah dioperasikan,
(43)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. b. Psikologi : sebagai perancang system kita harus dapat
mengetahui dan memahami sifat dan kebiasaan baik pengguna.
c. Perancangan Grafis dan tipografi : memanfaatkan
gambar/image sebagai media komunikasi.
d. Ergonomik : aspek fisik dan lingkungan yang akan
memberikan kenyamanan bagi pengguna yang biasanya
menggunakan computer dalam waktu lama.
e. Antropologi : dapat memberikan padangan mendalam tentang
tata kerja berkelompok yang masing-masing anggota
memberikan kontribusi sesuai bidangnya.
f. Linguistik : bahasa yang digunakan dalam berkomunikasi
dengan computer misalnya bahasa grafis, bahasa alami, bahasa
menu atau bahasa perintah.
g. Sosiologi : mengenai struktur sosial suatu masyarakat tentang
kekhawatiran manusia akan terjadinya pengambil alihan
pekerjaan oleh mesin / komputer / otomatisasi.
Bagi para perancangnya alat fisik interaksi antarmuka
komputer sering diuji, sehingga memungkinkan pertukaran
informasi. Beberapa aspek yang menjadi fokus dalam perancangan
(44)
31
a. Metodologi dan proses yang digunakan dalam perancangan
sebuah antarmuka.
b. Metode implementasi antarmuka.
c. Metode evaluasi dan perbandingan antarmuka.
d. Pengembangan antarmuka baru.
e. Mengembangkan sebuah deskripsi dan prediksi atau teori dari
sebuah antarmuka baru.
2.9.4. Aturan Desain Antarmuka
Adapun beberapa aturan dalam mendesain antarmuka sebagai
berikut :
a. Upayakan untuk konsistensi.
b.
Memungkinkan pengguna sering untuk menggunakan jalan pintasc.
Penawaran informatif umpan balikd.
Desain dialog untuk menghasilkan penutupan.e.
Penawaran kesalahan pencegahan dan penanganan kesalahan sederhana.f.
Izin tindakan pemulihan.g.
Dukungan internal lokus kontrol(45)
32
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
BAB III
ANALISA PERMASALAHAN
3.1. Alur Kegiatan Penelitian
Gambar 3.1. Alur Kegiatan Penelitian
Studi Literatur 1. Mempelajari teori pola pencocokan string 2. Mempelajari berbagai algorithma pencocokan
pola string
3. Mempelajari berbagai paper analisa kinerja algorithma Knuth Morris Pratt dan Boyer Moore
Data Peneltian
Pencarian Data Penunjang Peneltian
Algorithma String Pattern Matching
Komputerisasi
Aplikasi uji kinerja dan Perbandingan KMP dan BM
Metode Pengembangan Perangkat Lunak
Tahap Analisa 1. Diagram Alir 2. Algorithma KMP 3. Algorithma BM 4. Spesifikasi Alat
Tahap Perancangan 1. Perancangan Data 2. Perancangan Arsitektur 3. Perancangan Antar Muka 4. Perancangan Prosedur
Coding
(46)
33
3.2 Bahan Penelitian
Dalam melakukan perbandingan kinerja algorithma Knot Morris
Pratt dan Booyer Moore dalam tugas akhir ini, dibutuhkan bahan penelitian yang berupa artikel dalam bentuk file text (.txt). File ini adalah uraian artikel
yang diambil dari berbagai sumber. Setiap baris di dalam file tersebut dapat
mengandung kata-kata yang dapat dicari.
Kata-kata yang terdapat pada file tersebut dipisahkan dengan tanda
spasi, sehingga digunakan sebagai mekanisme dalam mengenali pola string
yang akan dicari. Hasil pencarian akan ditampilkan berupa lokasi string dan
waktu yang dibutuhkan dalam pencarian. Terdapat pula informasi berupa
grafik yang menampilkan perbandingan waktu hasil pencarian dari dua
metode tersebut.
3.2.1 Algorithma Knuth Morris Pratt
Penjelasan algorithma diatas adalah sebagai berikut : user
melakukan input string yang dicari, kemudian sistem akan membaca
file yang akan dicari. Selanjutnya sistem akan memanggil dua sub
Deklarasi Variabel
str_cari : literal karakter str_sumber : literal karakter hasil : numerik
begin
str_cari = user_input str_sumber = baca_file
Hasil = Posisi(kmp_search(str_cari,str_sumber, kmp_table(str_cari))+1)
(47)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. rutin yaitu kmp_search dan kmp_table dan mengembalikan nilai posisi
string yang ditemukan.
A. Sub Rutin Algorithma KMP_Search
Deklarasi Variabel
m, i: Numerik
W, S: Literal Karakter T : array bertipe numerik Result : numerik
begin i = 1 m = 1
while ((( m + i) <= Length(S)) and (i<= Length(W))) do begin
jika (S[m + i] = W[i]) maka i = i + 1 Selain itu
M = m + (i - T[i]) jika (i > 1) maka i = T[i]
end
jika m = Length( S ) maka Result = 0
Selain itu Result := m end
(48)
35
Penjelasan algorithma diatas adalah sebagai berikut :
Sistem akan mulai melakukan pencarian dengan selalu
memeriksa indeksnya (yang diwakili w dan s dalam menampung
string sumber dan string yang dicari), apabila karakter pada S[m + i] = W[i] maka nilai i akan bertambah satu, jika tidak sama nilai m akan
ditambah berdasarkan formula M = m + (i - T[i]). Proses ini akan terus
berlangsung sampai nilai (m+i) lebih dari panjang (S) dan nilai (i)
lebih dari panjang (W). Apabila nilai m sama dengan s, berarti string
tidak ditemukan dan sub rutin akan mengembalikan nilai 0, jika tidak
sistem akan mengembalikan posisi string, yaitu nilai m itu sendiri.
B. Sub Rutin Algorithma KMP_Table
var i, j : numerik T : Array dinamis begin
i = 3 j = 1
SetLength(T,Length(W)+1) t[1] = 0
t[2] = 1
while (i <= Length(W)) do jika (W[i - 1] = W[j]) maka T[i] = j + 1
Inc(j) Inc(i)
Selain itu jika ( j > 1 ) maka j = T[j]
selain itu T[i] = 1 Inc(i) j = 1 Result = T end
(49)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Algorithma diatas dipergunakan untuk membentuk tabel yang
menyimpan string berikutnya. Hal ini sesuai dengan prinsip utama
dalam algorithma Knot Morris Prat ( KMP ) yang menyatakan bahwa
pencocokkan string akan berjalan secara efisien bila kita mempunyai
tabel yang menentukan berapa panjang kita seharusnya menggeser
seandainya terdeteksi ketidakcocokkan di karakter ke-j dari pattern.
Tabel T harus memuat next[j] yang merupakan posisi karakter
pattern[j] setelah digeser, sehingga kita bisa menggeser pattern
sebesar j − next[j] relatif terhadap teks.
3.2.2 Algorithma Boyer Moore
var
i, j, k, m, n, MAXCHAR : numerik skip: array [100000] bertipe numerik found : boolean
begin
found = FALSE BM_search = 0 m = length(pat)
MAXCHAR = length(text) jika m=0 maka
BM_search = 1 found = TRUE
for k = 0 to MAXCHAR skip[k] = m for k = 1 to m-1
skip[ord(pat[k])] = m-k end
(50)
37
Penjelasan algorithma diatas adalah sebagai berikut : pertama sistem
akan memberikan nilai false pada variabel found ( berarti awalnya string
pattern dianggap tidak ditemukan ), kemudian sistem akan mulai mencari
dari kanan string untuk memulai pencocokan string (perhatikan pernyataan
m = length(pat)). Jika m bernilai 0 pencarian akan dihentikan, selain itu
sistem mulai melakukan iterasi pencarian berdasarkan dua kondisi. Hal ini
terdapat pada pernyataan (while not found and (k <= n)), sehingga
akan dilanjutkan pada proses (if text[i] <> pat[j]) hingga kondisi
(j = 0) yang berarti sudah mencapai akhir patter (posisi paling kiri string).
k = m
n = length(text) while not found and (k <= n) do begin
i = k j = m
while (j >= 1) do begin
if text[i] <> pat[j] then j = -1
else
j = j-1 i = i-1
jika j = 0 maka BM_search = i+1 found = TRUE;
k = k + skip[ord(text[k])] end
(51)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
3.3 Analisis Perbandingan
Analisis perbandingan merupakan evaluasi perbandingan dari
kedua algoritma agar dapat diketahui perbedaan antara algoritma satu
dengan yang lain. Proses-proses perbandingan dan hasilnya dapat
dijelaskan lebih terperinci lagi pada sub pokok dibawah ini. [4].
3.3.1 Perbandingan Booyer-Moore
Pada perbandingan ini program dilakukan uji coba terhadap
600 query dari file sumber. Dari uji coba program akan
memberikan hasil berupa waktu yang dibutuhkan dalam melakukan
pencarian serta pada posisi ke berapa substring ditemukan dan hasil
yang di berikan hanya merupakan informasi keberadaan substring
pertama saja.
Gambar 3.2 Grafik Booyer Moore
Pada grafik diatas terlihat bahwa waktu maksimal yang
dibutuhkan oleh algoritma Booyer-Moore dalam melakukan
pencarian substring yang cocok dengan query adalah 0.02 detik
(52)
39
3.3.2 Perbandingan Knut Morris Pratt
Waktu pencarian yang diperlukan oleh algoritma Knut Morris
Pratt dalam menemukan substring pertama yang cocok dengan query memiliki waktu pencarian 0.0035 detik.
Gambar 3.3 Grafik Knut Morris Pratt
3.3.3 Hasil Perbandingan
Hasil perbandingan yang dilakukan terhadap 600 query dari
file sumber, algoritma Booyer Moore tetap memberikan hasil yang
lebih baik daripada algoritma Knut Morris Pratt.
Table 3.1 Perolehan Waktu Hasil Pengujian
Apabila ditinjau dari teori yang telah dijelaskan sebelumnya,
maka running time dari algoritma Booyer Moore (N/M + O
(53)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. adalah panjang dari query, merupakan running time yang paling
cepat dibanding algoritma lainnya, sedangkan algoritma Knut
Morris Pratt memiliki running time O(M+N).
3.4 Diagram Alur Sistem
Diagram alur sistem merupakan sebuah diagram dengan
simbol-simbol grafis yang menyatakan tipe operasi program yang berbeda dan juga
sebagai representasi dari sebuah program. Berikut ini merupakan diagram
alur dari sistem aplikasi pencarian pola string :
Gambar 3.4. Diagram Alur Pencarian Pola String
START
Hard Drive Baca File Teks
Input String Pattern
Pilih KMP? Pilih BM?
Sub Rutin KMP Sub Rutin BM
Hasil Pencarian
End
Ya Ya
(54)
41
3.5 Spesifikasi Perangkat Yang Dipergunakan
Dalam melakukan penelitian tugas akhir ini, penulis menggunakan
perangkat keras dan perangkat lunak. Adapun perangkat keras yang
dipergunakan untuk aplikasi ini, yaitu :
1. Processor : Intel Dual Core, 2.4 Ghz
2. Memory : 1024 Mhz, DDR II
3. Display : LCD Monitor resolusi 1366 x 768, true color 32 bit, 60 Hz
4. Hard Drive : SATA II, dengan minimum ruang kosong 20 GB
5. Keyboard + Mouse : Standard Microsoft Compliance
Sedangkan perangkat lunak yang dipergunakan, yaitu :
1. Sistem Operasi : Microsoft Windows Seven Home Premium 64 bit
2. Developer : Embarcadero RAD Studio 2010
3. Dokumentasi : Microsoft Office Profesional Edition 2010
3.6 Perancangan Antar Muka
Perancangan antar muka diperlukan sebagai cara untuk
menentukan bentuk interaksi antara sistem dengan user. Dengan adanya
desain antar muka yang baik, berarti akan memudahkan user dalam
mempergunakan sistem tersebut sehingga meminimalkan waktu
pembelajaran. Desain antar muka dari sistem yang dibuat dalam tugas
(55)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Gambar 3.5. Perancangan Antar Muka
(56)
BAB IV
IMPLEMENTASI DAN PENGUJIAN
4.1. Implementasi Hasil Perancangan
Pada bab ini merupakan tahapan implementasi sistem yang telah
dirancang dengan landasan teori dan metodologi penelitian yang telah
dijelaskan pada bab sebelumnya. Proses ini melibatkan interaksi user
dalam menginputkan data dan mengkustomisasi hasil dari proses
encoding, kompresi, dekompresi dan decodingnya.
Dalam melakukan proses implementasi ini, terdapat beberapa
penyesuaian yang diperlukan. Penyesuaian yang dilakukan meliputi
penggunaan tipe data ataupun pembuatan prosedur atau fungsi, yang
mungkin tidak terdapat dalam proses analisa ataupun perancangan sistem.
Langkah penyesuaian tersebut dilakukan agar proses pembuatan
aplikasi dapat berjalan dengan baik sesuai tujuan dan hasil yang
diharapkan, sehingga tugas akhir ini dapat terselesaikan dengan baik.
Berikut ini adalah langkah-langkah implementasinya.
4.2. Impementasi Prosedur Knuth Morris Pratt i := 1;
m := 1;
while ( ( ( m + i ) <= Length( S ) ) and ( i <= Length( W ) ) ) do begin
if ( S[m + i] = W[i] ) then begin Inc( i );
(57)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Pada potongan prosedur Knuth Morris Pratt diatas telah diasumsikan
bahwa nilai index akan bernilai 1 apabila pola string yang dicari tidak
ditemukan dan proses pencarian akan berhenti jika panjang string yang
dicari sama dengan ( = ) panjang pattern. Setiap karakter pada pola string
yang dicari akan terus dibandingkan sampai menemukan kecocokan pada
file teks tersebut.
4.3. Impementasi Prosedur Booyer Moore
else begin
m := m + ( i - T[i] ); if ( i > 1 ) then i := T[i]; end;
ix:=ix+1; end;
if m = Length( S ) then Result := 0
else
Result := m; end;
found := FALSE; BM_search := 0; m := length(pat);
MAXCHAR:= length(text); if m=0 then
begin
BM_search := 1; found := TRUE; end;
(58)
45
Pada algorithma Booyer – Moore nilai index ditentukan dengan 0
atau telah diset dengan False, hal ini digunakan apabila pada proses
pencarian di suatu kata telah mencapai beberapa karakter namun belum
ketemu maka akan dianggap tidak ketemu meski belum karakter tersebut
belum habis.
for k:=0 to MAXCHAR do begin skip[k] := m;
ix:=ix+1; end;
for k:=1 to m-1 do begin skip[ord(pat[k])] := m-k; ix:=ix+1;
end; k := m;
n := length(text);
while not found and (k <= n) do begin
i := k; j := m; ix:=ix+1;
while (j >= 1) do begin
ix:=ix+1;
if text[i] <> pat[j] then j := -1
else begin
(59)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4.4. Pengujian Aplikasi
Pengujian menggunakan metode black box, sehingga diasumsikan
semua prosedur telah berfungsi dengan baik. Skenario pengujian meliputi
pemasukan menggunakan pola string kombinasi huruf besar dan kecil,
angka dan kombinasi keduanya. Pola string yang dicari juga meliputi kata
yang memang terdapat dalam teks ataupun tidak terdapat didalamnya.
Berikut ini adalah pengujian aplikasinya :
Gambar 4.1 Tampilan Awal Aplikasi
Tampilan awal aplikasi pencarian pola kata sebelum file teks
diinputkan maka akan tampak seperti pada Gambar 4.1 dengan grafik yang
sama kosong berada pada sisi sebelah kanan. Perbandingan algorithma
(60)
47
Gambar 4.2 Tampilan Menginputkan File Teks
Pada Gambar 4.2 diatas menunjukkan ketika tombol File Open
maka akan menampilkan direktori file teks yang akan di inputkan kedalam
aplikasi tersebut. File yang dapat diinputkan hanya berupa file teks.
Gambar 4.3 Tampilan File Teks Sudah Diinputkan
Apabila file telah diinputkan maka kolom akan terisi dengan teks.
(61)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4.4.1. Percobaan 1
Gambar 4.4 Percobaan 1 String yang Dicari “ sangkuriang “
Pada Gambar 4.4 menunjukkan bahwa pada Percobaan 1 string yang
akan dicari adalah “sangkuriang“. Dan kemudian tombol search pada
algorithma Booyer – Moore diklik maka akan menunjukkan hasil 0 pada
urutan string dikarenakan “ sangkuriang “ tidak ada didalam teks tersebut
dan waktu menunjukkan 3601 mili detik atau 0,3601 detik.
(62)
49
Pada Gambar 4.5 Percobaan 1 menunjukkan bahwa algorithma Knut
Morris Pratt menghasilkan nilai 1 yang artinya string juga tidak ditemukan
dan waktu yang dihasilkan 3016 mili detik. Waktu yang ditunjukkan pada
kedua algorithma tidak berbeda jauh pada string “ sangkuriang “.
4.4.2. Percobaan 2
Gambar 4.6 Percobaan 2 String “ sumbi “
Pada Gambar 4.6 string yang dicari adalah “ sumbi “, metode Booyer
– Moore tidak berhasil menemukan string tersebut dengan menampilkan nilai 0 dengan waktu 4145 mili detik. Grafik pun menampilkan waktu
yang telah diperoleh algorithma tersebut saat memprosesnya dan grafik
(63)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Gambar 4.7 Percobaan 2 String “ sumbi “
Pada Gambar 4.7 string yang dicari adalah “ sumbi “, metode Knut
Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 1 dengan waktu 3610 mili detik. Grafik pun
menampilkan waktu yang telah diperoleh algorithma tersebut saat
memprosesnya dan grafik menunjukkan datar.
4.4.3. Percobaan 3
(64)
51
Pada Gambar 4.8 string yang dicari adalah “ Dayang “, metode
Booyer – Moore berhasil menemukan string tersebut dengan menampilkan nilai 112 dengan waktu 2990 mili detik. Grafik pun menunjukkan ke arah
bawah karena waktu yang dimilikinya.
Gambar 4.9 Percobaan 3 string “ Dayang “
Pada Gambar 4.9 string yang dicari adalah “ Dayang “, metode Knut
Morris Pratt berhasil menemukan string tersebut dengan menampilkan nilai 112 dengan waktu 120 mili detik lebih cepat dari waktu yang
dihasilkan algorithma Booyer - Moore. Grafik yang dihasilkannya pun
(65)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4.4.4. Percobaan 4
Gambar 4.10 Percobaan 4 String “ tumang “
Pada Gambar 4.10 string yang dicari adalah “ tumang “, metode
Booyer–Moore tidak berhasil menemukan string tersebut dengan menampilkan nilai 0 dengan waktu 4044 mili detik. Grafik pun
menunjukkan ke arah atas atau naik.
Gambar 4.11 Percobaan 4 string “ tumang “
Pada Gambar 4.11 string yang dicari adalah “ tumang “, metode
Knut Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 1 dengan waktu 3073 mili detik. Grafik yang dihasilkan
(66)
53
4.4.5. Percobaan 5
Gambar 4.12 Percobaan 5 String “ Tumang “
Pada Gambar 4.12 string yang dicari adalah “ Tumang “, metode
Booyer – Moore berhasil menemukan string tersebut dengan menampilkan nilai 263 dengan waktu 3041 mili detik. Grafik pun menunjukkan ke arah
bawah atau turun.
Gambar 4.13 Percobaan 5 string “ Tumang “
Pada Gambar 4.13 string yang dicari adalah “ Tumang “, metode
Knut Morris Pratt berhasil menemukan string tersebut dengan menampilkan nilai 263 dengan waktu 271 mili detik. Grafik yang
(67)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4.4.6. Percobaan 6
Gambar 4.14 Percobaan 6 String “ jama “
Pada Gambar 4.14 string yang dicari adalah “ jama “, metode Booyer –
Moore berhasil menemukan string tersebut dengan menampilkan nilai 37 dengan waktu 2962 mili detik. Grafik pun menunjukkan ke arah bawah atau turun.
Gambar 4.15 Percobaan 6 String “ jama “
Pada Gambar 4.15 string yang dicari adalah “ jama “, metode Knut
Morris Pratt berhasil menemukan string tersebut dengan menampilkan nilai 37 dengan waktu 41 mili detik. Grafik yang dihasilkan pun turun.
(68)
55
4.4.7. Percobaan 7
Gambar 4.16 Percobaan 7 String “ jawa Barat “
Pada Gambar 4.16 string yang dicari adalah “ jawa Barat “, metode
Booyer – Moore tidak berhasil menemukan string tersebut dengan menampilkan nilai 0 dengan waktu 3695 mili detik. Grafik pun
menunjukkan ke arah atas atau naik.
Gambar 4.17 Percobaan String “ jawa Barat “
Pada Gambar 4.17 string yang dicari adalah “ jawa Barat “, metode
Knut Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 1 dengan waktu 2971 mili detik. Grafik yang dihasilkan
(69)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
4.4.8. Percobaan 8
Gambar 4.18 Percobaan 8 String “ JawaBarat “
Pada Gambar 4.18 string yang dicari adalah “ JawaBarat “, metode
Booyer – Moore tidak berhasil menemukan string tersebut dengan menampilkan nilai 0 dengan waktu 3658 mili detik. Grafik pun
menunjukkan ke normal atau datar karena grafik sebelumnya naik dan
berada di kisaran waktu 3600 mili detik.
(70)
57
Pada Gambar 4.19 string yang dicari adalah “ JawaBarat “, metode
Knut Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 1 dengan waktu 2942 mili detik. Grafik yang dihasilkan
pun cenderung datar karena waktu yang ditunjukkan tidak jauh berbeda
dari waktu sebelumnya.
4.4.9. Percobaan 9
Gambar 4.20 Percobaan 9 String “ Jawa Barat “
Pada Gambar 4.20 string yang dicari adalah “ Jawa Barat “, metode
Booyer – Moore telah berhasil menemukan string tersebut dengan menampilkan nilai string ke 93 dengan waktu 2977 mili detik. Grafik pun
(71)
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber. Gambar 4.21 Percobaan 9 String “ Jawa Barat “
Pada Gambar 4.21 string yang dicari adalah “ Jawa Barat “, metode
Knut Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 93 dengan waktu 109 mili detik. Grafik yang dihasilkan
pun turun.
4.4.10. Percobaan 10
(72)
59
Pada Gambar 4.22 string yang dicari adalah “ perahu “, metode
Booyer – Moore tidak berhasil menemukan string tersebut dengan menampilkan nilai string ke 0 dengan waktu 4736 mili detik. Grafik pun
menunjukkan ke arah atas atau naik.
Gambar 4.23 Percobaan 10 String “ perahu “
Pada Gambar 4.23 string yang dicari adalah “ perahu “, metode Knut
Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 1dengan waktu 2988 mili detik. Grafik yang dihasilkan
pun naik.
4.5 Tabel Hasil Percobaan
Tabel hasil percobaan merupakan tabel yang mencatat waktu yang
diperoleh dari percobaan satu sampai percobaan sepuluh dan dibawah ini
(73)
60
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Tabel 4.1 Hasil Percobaan
No. Percobaan Kata Yang
Dicari
Waktu Yang Diperlukan Untuk Mencari Kata Dengan Algoritma BM
Waktu Yang Diperlukan Untuk Mencari Kata Dengan Algoritma KMP 1. Percobaan 1 Sangkuriang 3601 mili detik atau 0,3601 detik 3016 mili detik
2. Percobaan 2 Sumbi 4145 mili detik 3610 mili detik
3. Percobaan 3 Dayang 2990 mili detik 120 mili detik
4. Percobaan 4 tumang 4044 mili detik 3073 mili detik
5. Percobaan 5 Tumang 3041 mili detik 271 mili detik
6. Percobaan 6 jama 2962 mili detik 41 mili detik
7. Percobaan 7 jawa Barat 3695 mili detik 2971 mili detik
8. Percobaan 8 JawaBarat 3658 mili detik (kisaran waktu 3600 mili detik) 2942 mili detik
9. Percobaan 9 Jawa Barat 2977 mili detik 109 mili detik
10. Percobaan 10 Perahu 4736 mili detik 2988 mili detik
(74)
(75)
61
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
BAB V PENUTUP
5.1. Kesimpulan
Berdasarkan hasil pengujian pada aplikasi perbandingan algorithma
Knuth Morris Pratt dan algorithma Booyer Moore dalam tugas akhir ini, berikut adalah :
1. Dalam menemukan pola pencarian string, algorithma algorithma Knuth
Morris Pratt memerlukan waktu 187,289% lebih cepat dibandingkan algorithma Booyer Moore.
2. Kedua algorithma memiliki kemampuan yang sama, yaitu dapat
menemukan posisi string yang pertama dalam suatu teks. Jadi bila terdapat
beberapa kata yang sama dalam suatu teks, maka hanya kata yang sesuai
(76)
62
5.2. Saran
Berikut ini adalah saran-saran yang dapat dijadikan pertimbangan
dalam pengembangan tugas akhir selanjutnya :
1. Perlu dibandingkan dengan algorithma lain untuk mengetahui apakah
terdapat algorithma yang lebih baik dibandingkan dengan Knuth Morris
Pratt ( KMP ) dan Booyer Moore ( BM ) seperti yang telah dilaksanakan dalam tugas akhir ini.
2. Akurasi pencarian perlu lebih ditingkatkan dengan cara menghilangkan
sifat case sensitif sehingga dapat mendeteksi pola kata yang sama
walaupun hurufnya berbeda.
3. Untuk pengembangan lebih lanjut sebaiknya pencarian dilakukan untuk
kata dasar dari suatu kata. Hal ini dapat dilakukan dengan menambahkan
(1)
59
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Pada Gambar 4.22 string yang dicari adalah “ perahu “, metode Booyer – Moore tidak berhasil menemukan string tersebut dengan menampilkan nilai string ke 0 dengan waktu 4736 mili detik. Grafik pun menunjukkan ke arah atas atau naik.
Gambar 4.23 Percobaan 10 String “ perahu “
Pada Gambar 4.23 string yang dicari adalah “ perahu “, metode Knut Morris Pratt tidak berhasil menemukan string tersebut dengan menampilkan nilai 1dengan waktu 2988 mili detik. Grafik yang dihasilkan pun naik.
4.5 Tabel Hasil Percobaan
Tabel hasil percobaan merupakan tabel yang mencatat waktu yang diperoleh dari percobaan satu sampai percobaan sepuluh dan dibawah ini adalah tabelnya :
(2)
60
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
Tabel 4.1 Hasil Percobaan No. Percobaan Kata Yang
Dicari
Waktu Yang Diperlukan Untuk Mencari Kata Dengan Algoritma BM
Waktu Yang Diperlukan Untuk Mencari Kata Dengan Algoritma KMP 1. Percobaan 1 Sangkuriang 3601 mili detik atau 0,3601 detik 3016 mili detik
2. Percobaan 2 Sumbi 4145 mili detik 3610 mili detik
3. Percobaan 3 Dayang 2990 mili detik 120 mili detik
4. Percobaan 4 tumang 4044 mili detik 3073 mili detik
5. Percobaan 5 Tumang 3041 mili detik 271 mili detik
6. Percobaan 6 jama 2962 mili detik 41 mili detik
7. Percobaan 7 jawa Barat 3695 mili detik 2971 mili detik
8. Percobaan 8 JawaBarat 3658 mili detik (kisaran waktu 3600 mili detik) 2942 mili detik
9. Percobaan 9 Jawa Barat 2977 mili detik 109 mili detik
10. Percobaan 10 Perahu 4736 mili detik 2988 mili detik
(3)
61
Hak Cipta © 2007 UPN "Veteran" Jatim
(4)
61
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
BAB V PENUTUP
5.1. Kesimpulan
Berdasarkan hasil pengujian pada aplikasi perbandingan algorithma Knuth Morris Pratt dan algorithma Booyer Moore dalam tugas akhir ini, berikut adalah :
1. Dalam menemukan pola pencarian string, algorithma algorithma Knuth Morris Pratt memerlukan waktu 187,289% lebih cepat dibandingkan algorithma Booyer Moore.
2. Kedua algorithma memiliki kemampuan yang sama, yaitu dapat menemukan posisi string yang pertama dalam suatu teks. Jadi bila terdapat beberapa kata yang sama dalam suatu teks, maka hanya kata yang sesuai pada posisi awal saja yang terdeteksi.
(5)
62
Hak Cipta © 2007 UPN "Veteran" Jatim
Dilarang mengutip sebagian atau seluruh karya tulis ini tanpa mencantumkan dan menyebutkan sumber.
5.2. Saran
Berikut ini adalah saran-saran yang dapat dijadikan pertimbangan dalam pengembangan tugas akhir selanjutnya :
1. Perlu dibandingkan dengan algorithma lain untuk mengetahui apakah terdapat algorithma yang lebih baik dibandingkan dengan Knuth Morris Pratt ( KMP ) dan Booyer Moore ( BM ) seperti yang telah dilaksanakan dalam tugas akhir ini.
2. Akurasi pencarian perlu lebih ditingkatkan dengan cara menghilangkan sifat case sensitif sehingga dapat mendeteksi pola kata yang sama walaupun hurufnya berbeda.
3. Untuk pengembangan lebih lanjut sebaiknya pencarian dilakukan untuk kata dasar dari suatu kata. Hal ini dapat dilakukan dengan menambahkan morphological analiser kedalam aplikasi.
(6)
63
[1]AOE, J.I., 1994, Computer algorithms : string pattern matching strategies, IEEE Computer Society press.
[2]Bina Sarana Informatika, 2006, Modul Praktek Laboratorium Komputer Borland Delphi, Team Penyusun Modul Delphi, Jakarta.
[3]Boyer R.S., Moore J.S., 1977, A fast string searching algorithm. Communications of the ACM. 20:762-772.
[4]Desiana. 2007. Pencarian String dengan Menggunakan Metode Indexing pada Data Genomic.pdf. Fakultas Ilmu Komputer, Universitas Indonesia. [5]Knuth D.E., Morris (Jr) J.H., Pratt V.R., 1977, Fast pattern matching in
strings, SIAM Journal on Computing 6(1):323-350.
[6]Munir, Rinaldi., 2007, Diktat Kuliah Strategi Algoritmik., Program Studi Teknik Informatika, Institut Teknologi Bandung. Diakses dari
http://www.docstoc.com/docs/40337710/Analisis-Algoritma-Pencarian-String-(-String-Matching-) ( pada tanggal 1 November 2011 ).
[7]Wahyudi Bambang, 2011, Algoritma dan Pemrograman. Diakses dari
http://www.bwahyudi.staff.gunadarma.ac.id/Downloads/files/1342/ALG
ORITMA+PEMROGRAMAN.pdf tanggal 14 November 2011.
[8]http://www.docstoc.com/docs/6849820/modul-IMK ( diakses online pada