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

(1)

WORD COMPLETION PADA SEARCH ENGINE

SKRIPSI

RYAN DHIKA PRIYATNA 131421064

PROGRAM STUDI EKSTENSI S-1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA MEDAN

2015

IMPLEMENTASI ALGORITMA LEVENSHTEIN DISTANCE DAN ALGORITMA KNUTH-MORRIS-PRATT (KMP) DALAM FITUR


(2)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer

RYAN DHIKA PRIYATNA 131421064

PROGRAM STUDI EKSTENSI S-1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA MEDAN


(3)

Judul : IMPLEMENTASI ALGORITMA LEVENSTEIN DISTANCE DAN ALGORITMA KNUTH MORRIS PRATT DALAM FITUR WORD COMPLETION PADA SEARCH ENGINE

Kategori : KECERDASAN BUATAN

Nama : RYAN DHIKA PRIYATNA

Nomor Induk Mahasiswa : 131421064

Program Studi : EKSTENSI S1 ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA Diluluskan di

Medan, Agustus 2015 Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Maya Silvi Lydia, B.Sc, M.Sc Dr.Poltak Sihombing, M.Kom

NIP. 197401272002122001 NIP.196203171991031001

Diketahui/disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom NIP. 196203171991031001


(4)

IMPLEMENTASI ALGORITMA LEVENSTEIN DISTANCE DAN ALGORITMA KNUTH MORRIS PRATT DALAM FITUR

WORD COMPLETION PADA SEARCH ENGINE

SKRIPSI

Saya mengetahui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Agustus 2015

Ryan Dhika Priyatna 13142106


(5)

Alhamdulillah. Puji dan syukur kehadirat Allah SWT, yang dengan rahmat dan karunia-Nya penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Pada pengerjaan skripsi dengan judul Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt dalam Fitur Word Completion Pada Search Engine, penulis menyadari bahwa banyak pihak yang turut membantu, baik dari pihak keluarga, sahabat dan orang-orang terkasih yang memotivasi dalam pengerjaannya. Dalam kesempatan ini, penulis mengucapkan terima kasih kepada:

1. Bapak Prof. Drs. Subhilhar, M.A.,Ph.D selaku Pejabat Rektor Universitas Sumatera Utara.

2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara .

3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara sekaligus selaku Dosen Pembimbing I yang telah memberikan arahan dan masukan yang sangat berharga kepada penulis .

4. Bapak Drs. Marihat Situmorang, M.Kom selaku Dosen Pembanding I yang telah memberikan arahan serta motivasi kepada penulis dalam pengerjaan skripsi ini. 5. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Dosen Pembimbing II yang telah memberikan arahan, kritik dan saran serta motivasi kepada penulis dalam pengerjaan skripsi ini.

6. Bapak Ade Candra, ST.,M.Kom selaku Dosen Pembanding II yang telah memberikan arahan dan masukan yang sangat berharga kepada penulis.

7. Ayahanda Ir. H .M.Joni Priyatna dan Ibunda Astrida Rani Fauliza yang telah banyak memberikan kasih sayang, semangat, serta dorongan dan dukungan kepada penulis.


(6)

Informasi USU.

9. Sahabat-sahabat penulis, Wiwin Agustini Lubis, Fera Ferdian, Tiany Dwi Lestari, Nurul Zakya Haque, Tika Puspita Sari , Maha Perdana Tarigan. 10.Sahabat terbaik penulis, Ade Rizka, Teuku Ighfar Hajar, Adli Abdillah

Nababan, Satriyo Wibowo yang telah memberikan nasehat, semangat dan dukungan selama ini dalam keadaan apapun bagi penulis.

11.Teman-teman Kom B stambuk 2013 yang telah banyak memberikan ilmu kepada penulis baik dalam menyusun skripsi ini maupun pada masa perkuliahan. 12.Dan yang terakhir,

Semoga Allah SWT melimpahkan berkah kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.

Medan, Juni 2015

Penulis


(7)

ABSTRAK

Search engine adalah program komputer yang dirancang untuk membantu seseorang menemukan file-file yang disimpan dalam komputer. Dengan adanya mesin pencari setiap orang dapat dengan mudah memperoleh informasi yang diinginkan. Perkembangan teknologi internet mendorong munculnya fitur dan inovasi terbaru untuk meningkatkan pengalaman dan kemudahan pengguna dalam menjelajahi dunia maya. Fitur tersebut dinamakan Word Completion. Fitur Word Completion memberikan pengalaman baru dan kemudahan bagi pengguna untuk memperoleh informasi . Hasil dari penelitian ini dengan menggunakan dua algoritma adalah bahwa algoritma Levenstein Distance digunakan untuk memperbaiki kesalahan kata dengan cara substitusi, eliminasi,penambahan dan algoritma Knuth Morris Pratt mencari kata dengan cara menggeser string kesebelah kanan sampai kata tersebut dinyatakan cocok.

Kata Kunci : Algoritma Levenstein Distance, Algoritma Knuth-Morris-Pratt, Word Completion, Search Engine, String


(8)

IMPLEMENTATION OF LEVENSTEIN DISTANCE ALGORITHM AND KNUTT MORRIS PRATT ALGORITHM IN WORD

COMPLETION FEATURE ON SEARCH ENGINE

ABSTRACT

Search engines are computer programs designed to help a person find the files stored in the computer . With the search engine every person can easily obtain the desired information. Development of Internet technology and innovation to encourage the emergence of the latest features to enhance the user experience and ease in navigating cyberspace. The feature is called word completion . Word completion features provide a new experience and convenience for users to obtain the information . Results from this study using two algorithms is that the Levenstein Distance is used repair word by way of substitution , elimination, addition and Knuth Morris Pratt search for words by shifting the string to the right hand until the word is declared fit .

Keyword : Levenstein Distance Algorithm, Knuth-Morris-Pratt Algorithm, Word Completion, Search Engine, String


(9)

Hal.

PERSETUJUAN ii

PERNYATAAN iii

PENGHARGAAN iv

ABSTRAK vi

DAFTAR ISI viii

DAFTAR TABEL x

DAFTAR GAMBAR xi

BAB 1 Pendahuluan 1

1.1 Latar Belakang 1

1.2 Rumusan Masalah 2

1.3 Batasan Ruang Lingkup Penelitian 2

1.4 Tujuan Penelitian 3

1.5 Manfaat Penelitian 3

1.6 Metodologi Penelitian 3

1.7 Sistematika Penulisan 4

BAB 2 Landasan Teori 6

2.1 Defenisi Algoritma 6

2.1.1 Algoritma 6

2.2 String 7

2.2.1 String Matching 7

2.2.2 Levenshtein Distance 8

2.2.3 Operasi Penghapusan 9

2.2.4 Operasi Penyisipan 10

2.2.5 Operasi Penukaran 11

2.2.6 Algoritma Knuth-Morris-Pratt (KMP) 11 2.2.7 Algoritma Knuth-Morris-Pratt (KMP) StringMatching16


(10)

2.2.10 Klasifikasi Pencocokan String 21

2.3 Penelitian yang Relevan 23

BAB 3 Analisis dan Perancangan Sistem 24

3.1 Analisis Masalah 25

3.2 Analisis Persyaratan 25

3.2.1 Persyaratan Fungsional 25 3.2.2 Persyaratan Nonfungsional 25

3.3 Pemodelan Sistem 26

3.3.1 Use Case Diagram 26

3.3.2 Activity Diagram 28

3.3.3 Sequence Diagram 29

3.4 Analisis Data 31

3.5 Analisis Pencarian Fitur Word Completion 31 3.5.1 Cara Kerja Pencarian String Algoritma LD dan KMP 32

3.5.2 Pseudocode Algoritma LD 33

3.5.3 Analisis Algoritma KMP pada fitur Word Completion 34 3.5.4 Cara Kerja Algoritma KMP pada fitur

Word Completion 35

3.5.5 Pseudocode Algoritma KMP 36

3.6 Perancangan Sistem 36

3.6.1 Flowchart Sistem 37

3.7 Perancangan Antar Muka (Interface) 38 3.7.1 Rancangan Halaman Awal User 38 3.7.2 Rancangan Halaman Hasil Saran LD 39 3.7.3 Rancangan Halaman Hasil Saran KMP 40 3.7.4 Rancangan Halaman Tambah Kata 41

3.7.5 Rancangan Halaman Tentang 42

3.7.6 Rancangan Halaman Bantuan 43

BAB 4 Implementasi dan Pengujian 44


(11)

4.1.2 Operasi Penyisipan 45

4.1.3 Operasi Penukaran 46

4.1.3.1 Potongan Program Algoritma LD 46 4.1.3.2 Potongan Program Algoritma KMP 49 4.1.4 Perhitungan Manual Pencarian Kata Algoritma LD

Dan Algoritma KMP 50

4.2 Antar Muka Pengguna (User Interface) 54

4.2.1 Halaman Awal User 54

4.2.2 Halaman Hasil Pencarian Kata Algoritma LD 55 4.2.3 Halaman Hasil Pencarian Kata Algoritma KMP 55

4.2.4 Halaman Tambah Kata 56

4.2.5 Halaman Bantuan 57

4.3 Pengujian Sistem 57

4.3.1 Pengujian Sistem Menggunakan Sampel Data

Kamus Bahasa Sunda 57 4.3.2 Pengujian Sistem Menggunakan Sampel Data

Kamus Bahasa Batak 62 4.3.3 Pengujian Sistem Menggunakan Sampel Data

Istilah Perpustakaan 64

4.3.4 Pengujian Interface Sistem 66 4.3.5 Pengujian Fungsi Dasar Sistem 67 4.3.6 Pengujian Validasi Input kata pada algoritma LD

Dan algoritma KMP 67

BAB 5 Kesimpulan dan Saran 69

5.1 Kesimpulan 69

5.2 Saran 69

DAFTAR PUSTAKA LAMPIRAN


(12)

Hal. Gambar 3.1 Diagram Ishikawa Untuk Analisis Masalah 24

Gambar 3.2 Use Case Diagram Sistem 26

Gambar 3.3 Activity Diagram 28

Gambar 3.4 Squence Diagram 30

Gambar 3.5 Pseudocode Algoritma Levenstein Distance 32 Gambar 3.6 Pseudocode Algoritma Knuth Morris Pratt 35

Gambar 3.7 Flowchart Sistem 36

Gambar 3.8 Rancangan halaman awal User 37

Gambar 3.9 Rancangan halaman hasil saran Levestein Distance 38

Gambar 3.10 Rancangan Hasil Saran Untuk KMP 39

Gambar 3.11 Rancangan Halaman Tambah Kata 40

Gambar 3.13 Rancangan Halaman Tentang 41

Gambar 3.14 Rancangan Halaman Bantuan 42

Gambar 4.1 Halaman Awal User 54

Gambar 4.2 Halaman Hasil Pencarian Kata Algoritma Levenstein Distance 55

Gambar 4.3 Halaman Hasil Pencarian Kata KMP 56

Gambar 4.4 Halaman Tambah Kata 56

Gambar 4.5 Halaman Bantuan 57

Gambar 4.6 Pengujian Levenstein Distance 59

Gambar 4.7 Pergeseran String Levenstein Distance 60 Gambar 4.8 Pengujian KMP Pada Kamus Bahasa Sunda 60 Gambar 4.9 Pergeseran String Knuth Morris Pratt 61 Gambar 4.10 Hasil Pengujian II LD Dan KMP Pada Bahasa Batak 63 Gambar 4.11 Hasil Pengujian III LD Dan KMP Pada Istilah Perpustakaan 65


(13)

Hal. TABEL 2.1 Tabel Matriks Perhitungan Edit distance 9 TABEL 2.2 Fungsi Tabel Pinggiran Untuk abcd 18 TABEL 3.1 Tabel Use Case Proses Pencarian Kata 27 TABEL 3.2 Keterangan Bagian-Bagian Halaman Utama 29 TABEL 3.3 Sampel Data Kamus Bahasa Sunda 30 TABEL 3.4 Keterangan Rancangan Halaman Awal User 38 TABEL 3.5 Keterangan Rancangan Hasil Saran Levenstein Distance 39 TABEL 3.6 Keterangan Rancangan Hasil Saran Knuth Morris Pratt 40

TABEL 3.7 Rancangan Tambah Kata 41

TABEL 3.8 Keterangan Rancangan Halaman Tentang 42

TABEL 3.9 Keterangan Rancangan Halaman Bantuan 43 TABEL 4.1 Hitung Manual Algoritma Levenstein Distance 50 TABEL 4.2 Hitung Manual Algoritma Levenstein Distance 51

TABEL 4.3 Sampel Data Kamus Bahasa Sunda 58

TABEL 4.4 Hasil Distance Kata Pada Algoritma Levenstein Distance

dalam Kamus Bahasa Sunda 59 TABEL 4.5 Hasil Pergeseran String Kata Pada Algoritma Knuth Morris

Pratt dalam Kamus Bahasa Sunda 61

TABEL 4.6 Sampel Data Kamus Bahasa Batak 62

TABEL 4.7 Sampel Data Istilah Perpusatakaan 64

TABEL 4.8 Hasil Pengujian Interface Sistem 66

TABEL 4.9 Hasil Pengujian Fungsi Dasar Sistem 67

TABEL 4.10 Pengujian Black Box Testing Input Kata Pada Algoritma Levenstein Distance Dan Algoritma Knuth Morris Pratt 67


(14)

ABSTRAK

Search engine adalah program komputer yang dirancang untuk membantu seseorang menemukan file-file yang disimpan dalam komputer. Dengan adanya mesin pencari setiap orang dapat dengan mudah memperoleh informasi yang diinginkan. Perkembangan teknologi internet mendorong munculnya fitur dan inovasi terbaru untuk meningkatkan pengalaman dan kemudahan pengguna dalam menjelajahi dunia maya. Fitur tersebut dinamakan Word Completion. Fitur Word Completion memberikan pengalaman baru dan kemudahan bagi pengguna untuk memperoleh informasi . Hasil dari penelitian ini dengan menggunakan dua algoritma adalah bahwa algoritma Levenstein Distance digunakan untuk memperbaiki kesalahan kata dengan cara substitusi, eliminasi,penambahan dan algoritma Knuth Morris Pratt mencari kata dengan cara menggeser string kesebelah kanan sampai kata tersebut dinyatakan cocok.

Kata Kunci : Algoritma Levenstein Distance, Algoritma Knuth-Morris-Pratt, Word Completion, Search Engine, String


(15)

IMPLEMENTATION OF LEVENSTEIN DISTANCE ALGORITHM AND KNUTT MORRIS PRATT ALGORITHM IN WORD

COMPLETION FEATURE ON SEARCH ENGINE

ABSTRACT

Search engines are computer programs designed to help a person find the files stored in the computer . With the search engine every person can easily obtain the desired information. Development of Internet technology and innovation to encourage the emergence of the latest features to enhance the user experience and ease in navigating cyberspace. The feature is called word completion . Word completion features provide a new experience and convenience for users to obtain the information . Results from this study using two algorithms is that the Levenstein Distance is used repair word by way of substitution , elimination, addition and Knuth Morris Pratt search for words by shifting the string to the right hand until the word is declared fit .

Keyword : Levenstein Distance Algorithm, Knuth-Morris-Pratt Algorithm, Word Completion, Search Engine, String


(16)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

Perkembangan teknologi internet mendorong munculnya fitur dan inovasi terbaru untuk meningkatkan pengalaman dan kemudahan pengguna dalam menjelajahi dunia maya. Salah satunya fitur tersebut adalah word completion merupakan fitur yang di implementasikan pada web browser dan mesin pencari yang memungkinkan web browser atau mesin pencari untuk memberikan saran pencarian ketika baru beberapa kata diketikkan dalam kolom pencarian address bar.

Ketika menggunakan web browser untuk berjelajah di dunia maya maka pada kolom address bar saat mengetikkan beberapa huruf/kata, web browser tersebut memberikan saran dari apa yang diketik,atau sama halnya ketika menggunakanmesin pencari untuk mencari suatu informasi, ketika baru mengetikan beberapa huruf/kata pada kolom pencarian, mesinpencari tersebut memberikan saranpencarian yang terkait dari apa yangdiketikan. Ketika memilih saran tersebut, web browser atau mesin pencari akan langsung melengkapi kata kunci pencarian sesuai dengan saran yang dipilih. Fitur tersebut dinamakan word completion. Fitur word completion memberikan pengalaman baru dan kemudahan bagi pengguna ketika berjelajah di internet. faktor yang mempengaruhi keberagaman pada word completion dan analisis semantik pada mesin pencari. (Banowosari,Lintang , 2014).

Search engine atau mesin pencari adalah program komputer yang dirancang untuk membantu seseorang menemukan file-file yang disimpan dalam komputer. Dengan adanya mesin pencari setiap orang dapat dengan mudah memperoleh informasi yang diinginkan. Dengan mengetikkan kata yang ingin dicaripada mesin pencari maka seluruh informasi yang diinginkan akan ditampilkan. Namun sejumlah penelitian


(17)

terhadap mesin pencari menyimpulkan bahwa rata-rata kesalahan dalam pengetikan kata yang dicari yang dilakukan oleh pengguna cukup tinggi (Ilmy,B.M, 2006).

Word completion, adalah fitur yang disediakan oleh banyak webbrowser, surel, antarmuka mesin pencari, source code editor, tools pada query database, pengolah kata (word processor), dan interpreter pada command line word completion juga terdapat dan sudah terintegrasi dalam teks editor yang umum digunakan. Kegunaan dari fitur word completion ini adalah menampilkan perkiraan kata atau frase yang akan dimasukkan tanpa harus mengetikkan keseluruhan kata. Auto Correct atau disebut juga Auto Text adalah suatu fitur yang biasanya dapat ditemukan di berbagai macam aplikasi seperti pemroses kata dan program untuk produk Apple, seperti iPod,iPhone dan iPad. Auto Correct ini berfungsi untuk mempersingkat waktu pengetikan sebuah kata (Pradhana,Fandi, 2012).

1.2. Rumusan Masalah

Bagaimana mengimplementasikan Algoritma Levenshtein Distance dan Algoritma Knuth-Morris-Pratt (KMP) dalam fitur word completion pada search engine .

1.3. Batasan Ruang Lingkup Penelitian

Adapun batasan masalah yang diberikan pada penelitian ini adalah sebagai berikut : 1. Menggunakan fitur word completion pada search engine dengan Algoritma

Levenshtein Distance dan Algoritma Knuth-Morris-Pratt.

2. Dalam penelitian ini peneliti membatasi bahasa pemrograman yang digunakan adalah bahasa pemrograman VB.NET 2013 dan menggunakan MySQL sebagai DBMS-nya.


(18)

1.4. Tujuan Penelitian

Adapun tujuan yang dapat diperoleh dari penelitian ini adalah :

Mengimplementasikan fitur word completion pada search engine dengan mengunakan Algoritma Levenshtein Distance dan Algoritma Knuth-Morris-Pratt.

1.5. Manfaat Penelitian

Manfaat yang diharapkan dari penelitian ini adalah :

1. Menghasilkan aplikasi pada search engine menggunakan Algoritma Levenshtein Distance dan Algoritma Knuth-Morris-Pratt (KMP) dalam fitur word completion .

2. Dapat dijadikan sebagai acuan dalam memilih antara Algoritma Levenshtein Distance atau Algoritma Knuth-Morris-Pratt (KMP) untuk dijadikan sebagai algoritma dalam fitur word completion pada search engine.

1.6. Metode Penelitian

Adapun metode penelitian yang akan digunakan adalah: 1. Studi Literatur

Pada tahap ini dilakukan dengan membaca dan mempelajari lebih dalam buku-buku referensi, jurnal atau sumber-sumber penelitian lain yang berkaitan dengan word completion serta teori algoritma Levenshtein Distance dan algoritma Knutt Morris Pratt.

2. Analisis dan Perancangan Desain Sistem

Pada tahap ini akan dilakukan analisis terhadap penerapan algoritma Levenshtein Distance dan algoritma Knutt Morris Pratt pada word completion, serta perancangan aplikasi, antara lain: menggambar flowchart, use case, dan perancangan antarmuka atau interface.


(19)

3. Implementasi Sistem

Pada tahap ini akan dilakukan pengkodean dan menerapkan perancangan aplikasi tersebut ke dalam bahasa pemrograman VB.Net dan MySQL sebagai DBMS nya.

4. Pengujian Sistem

Pada tahap ini akan dilakukan pengujian terhadap aplikasi apakah telah memenuhi kriteria atau tidak.

5. Dokumentasi Sistem

Pada tahap ini akan dilakukan penulisan laporan mengenai aplikasi tersebut yang bertujuan untuk menunjukkan hasil penelitian ini.

1.7. Sistematika Penulisan

Sistematika penulisan dari skripsi ini terdiri dari lima bagian utama sebagai berikut:

BAB 1: PENDAHULUAN

Bab ini akan menjelaskan tentang latar belakang, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.

BAB 2: LANDASAN TEORI

Bab ini akan menjelaskan tentang segala teori yang berkaitan dengan penelitian seperti pengertian wordcompletion, pembahasan algoritma Levenshtein Distance algoritma Knutt Morris Pratt, penelitian-penelitian terdahulu dan teori-teori lainnya yang berkaitan dengan penelitian.

BAB 3: ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi analisis terhadap fokus permasalahan penelitian dan perancangan sistem yang akan dibangun seperti menggambar flowchart atau diagram alur kerja sistem, analisis terhadap proses kerja algoritma Levenshtein Distance dan algoritma Knutt Morris Pratt pada wordcompletion dan perancangan antarmuka atau interface.


(20)

BAB 4: IMPLEMENTASI DAN PENGUJIAN SISTEM

Bab ini berisi pembahasan tentang implementasi algoritma yang disusun pada bab 3 dan pengujian terhadap sistem yang dibangun.

BAB 5: KESIMPULAN DAN SARAN

Bab ini memuat kesimpulan dari keseluruhan uraian bab-bab sebelumnya dan saran yang diperoleh yang diharapkan dapat bermanfaat untuk pengembangan program selanjutnya.


(21)

BAB 2

LANDASAN TEORI

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.


(22)

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.

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 (Rasool, Akhtar.dkk,2012). 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


(23)

window. Prosedur ini dilakukan berulang-ulang sampai window berada pada akhir teks. Mekanisme ini disebut mekanisme sliding-window. (Febriyan, 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. Levenshtein Distance

Algoritma Levenshtein merupakan algoritma yang digunakan untuk mencari jumlah operasi string yang paling sedikit untuk mentransformasikan suatu string menjadi string. (Primadani, Yuli. 2014).yang Algoritma ini digunakan dalam pencarian string dengan pendekatan perkiraan (Approximate String Matching) .

Levehenstein Distance dibuat oleh Vladimir Levehenstein pada tahun 1965. 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. (Singla,Nimisha et al 2012). Perhitungan jarak antara dua string ditentukan dari dua jumlah minimum operasi perubahan untuk membuat string A mejadi string B .

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.


(24)

s a y a

0 1 2 3 4

s 0 1 1 2 3

y 2 1 2 1 2

a 3 2 1 2 1

Contoh dari perhitungan Levenshtein mengunakan 2 string yang berbeda kemudian dihitung edit distance nya pada tabel 1. Dapat dilihat dari perhitungan edit distance antara 2 string‘sya’ dan ‘saya’ adalah 1. Pengecekan dimuai dari iterasi awal dari kedua string keudian dilakukan operasi penambahan, penyisipan dan penghapusan. Nilai edit distance nya yaitu pada ujung kanan matriks. Hanya ada satu proses

penyisipan yaitu penyisipan karakter ‘a’ pada string ‘sya’ sehingga menjadi ‘saya’. Pada kasus pengecekan ejaan proses perhitungan ini dilakukan sejumlah kata yang ada pada basis data. Tentu saja untuk saran yang terbaik dibutuhkan daftar kata berbahasa Indonesia yang lengkap. Sehingga kata yang disarankan bisa mendekati yang diharapkan oleh pengguna (Primadani, Yuli 2014).

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:

2.2.3. Operasi Penghapusan

Operasi penghapusan dilakukan dengan menghapus karakter pada indeks tertentu untuk menyamakan string sumber (S) dengan string target (T), misalnya S=networking dan T= network. Penghapusan dilakukan untuk karakter i pada indeks ke-7, penghapusan karakter n pada indeks ke-8, penghapusan karakter g pada indeks ke-9. Operasi penghapusan tersebut menunjukkan tranformasi S ke T, ilustrasinya adalah sebagai berikut :


(25)

String S

0 1 2 3 4 5 6 7 8 9

N E T W O R K I N G

String T

0 1 2 3 4 5 6

N E T W O R K

Operasi Penghapusan Pada Algoritma Levenstein Distance 0 1 2 3 4 5 6 7 8 9

N E T W O R K I N G

2.2.4. Operasi Penyisipan

Operasi penyisipan dilakukan dengan menyisipkan karakter pada indeks tertentu untuk menyamakan string sumber (S) dengan string target (T), misalnya S= program dan T= pemrograman. Operasi penyisipan dapat dilakukan dengan menyisipkan e pada indeks 1, menyisipkan m pada indeks 2, menyisipkan a pada indeks 9 dan menyisipkan n pada indeks 10. Yang dapat diilustrasikan sebagai berikut:


(26)

0 1 2 3 4 5 6

P R O G R A M

String T

0 1 2 3 4 5 6 7 8 9 10

P E M R O G R A M A N

Operasi Penyisipan Pada Algoritma Levenstein Distance

0 1 2 3 4 5 6 7 8 9 10

P E M R O G R A M A N

2.2.5. Operasi Penukaran

Operasi penukaran dilakukan dengan menukar karakter pada indeks tertentu untuk menyamakan string sumber (S) dengan string target (T), misalnya S= computer dan T= komputer. String S ditranformasikan menjadi T dengan melakukan penggantian (substitusi) pada posisi ke-1. Huruf C ditukar menjadi K. Prosesnya dapat diilustrasikan sebagai berikut:


(27)

0 1 2 3 4 5 6 7

K O M P U T E R

String T

0 1 2 3 4 5 6 7

C O M P U T E R

2.2.6. Algoritma Knuth-Morris-Pratt (KMP)

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. (J.C, Prasad et al , 2010). pada algoritma KnuthMorris-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. (Rasool, Akhtar et al , 2012).

Algoritma menggunakan informasi tersebut untuk membuat pergeseran yang lebih jauh dan melakukan evaluasi waktu (Kourie, Justin et al, 2011) 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:

1. Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch). 2. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan

penemuan di posisi ini.

3. Algoritma kemudian menggeser pattern berdasarkan tabel, lalu mengulangi langkah 2 sampai pattern berada di ujung teks.


(28)

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= “ryandhikapriy” dan yang akan dicocokkan adalah pattern= “dhikapr”. Pada karakter pertama “d” dan kedua

“h” pada pattern terjadi kecocokan (match) pada teks, akan tetapi pada karakter ketiga

“k” terjadi ketidakcocokan (mismatch) pada teks maka proses shift dilakukan dengan

berpindah tiga posisi ke arah kanan teks dikarenakan huruf “dh” dijadikan prefix terpanjang yang akan disimpan kedalam tabel failure function. Selanjutnya berpindah empat posisi ke arah kanan teks menghasil kan prefix“dhik”, berpindah lagi empat posisi ke arah kanan menghasilkan prefixpattern“dhika” sehingga terjadi kecocokan pada teks.

Contoh penggunaan algoritma string matchingKMP, yaitu : Teks : RYAN DHIKAPRIY

Pattern : DHIKAPR Cara kerja :

String S

R Y A N D H I K A P R I Y

Pattern P

D H I K A P R

Langkah 1 : Bandingkan Pattern [1] dengan String [1]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [1] tidak cocok dengan String [1], maka Pattern akan bergeser satu karakter ke kanan.


(29)

Langkah 2 : Bandingkan Pattern [1] dengan String [2]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [1] tidak cocok dengan String [2], maka Pattern akan bergeser satu karakter ke kanan.

Langkah 3 : Bandingkan Pattern [1] dengan String [3]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [1] tidak cocok dengan String [3], maka Pattern akan bergeser satu karakter ke kanan.

Langkah 4 : Bandingkan Pattern [1] dengan String [4]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [1] tidak cocok dengan String [4], maka Pattern akan bergeser satu karakter ke kanan.

Langkah 5 : Bandingkan Pattern [1] dengan String [5]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [1] cocok dengan string [5], karena ada kecocokan maka Patternt tidak melakukan pergeseran, akan tetapi membandingkan Pattern [2] dengan String [6].


(30)

R Y A N D H I K A P R I Y

D H I K A P R

Jika Pattern [2] cocok dengan String [6], maka selanjutnya membandingkan Pattern [3] dan mencocokkan dengan String [7].

Langkah 7 : Bandingkan Pattern [3] dengan String [7]

R Y N N D H I K A P R I Y

D H I K A P R

Jika Pattern [3] cocok dengan String [7], maka selanjutnya membandingkan Pattern [4] dan mencocokkan dengan String [8].

Langkah 8 : Bandingkan Pattern [4] dengan String [8]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [4] cocok dengan String [8], karena ada kecocokan untuk Pattern tidak dilakukan pergeseran dan mencocokkan Pattern [5] dengan String [9].

Langkah 9 : Bandingkan Pattern [5] dengan String [9]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [5] cocok dengan String [9], karena ada kecocokan untuk Pattern tidak dilakukan pergeseran dan mencocokkan Pattern [6] dengan String [10].

Langkah 10 : Bandingkan Pattern [6] dengan String [10]

R Y A N D H I K A P R I Y


(31)

Pattern [6] cocok dengan String [10], karena ada kecocokan untuk Pattern tidak dilakukan pergeseran dan mencocokkan Pattern [7] dengan String [11].

Langkah 11 : Bandingkan Pattern [7] dengan String [11]

R Y A N D H I K A P R I Y

D H I K A P R

Pattern [7] cocok dengan String [11], pencarian berhenti karena semua karakter di Pattern telah cocok dengan karakter di String meskipun karakter di string belum habis.

Jika semua huruf pada Pattern sudah dicocokkan dengan String maka akan ditemukan sebuah pola kosa kata di dalam String. Dalam menemukan sebuah pola Pattern di dalam String akan dilakukan pergeseran beberapa kali untuk mencocokkan setiap huruf pada Pattern yang dimulai dari sebelah kiri untuk mencocokkan setiap huruf pada String.

Berikut merupakan pseudocode pada algoritma Knuth-Morris-Pratt : public static int kmpMatch (string text, string pattern)

{

Int n = text.length(); Int m = pattern.length();

Int fail[] = computeFail (pattern); Int i = 0 ;

Int j = 0 ;

While (i < n) {

If (pattern.charAt(j) = = text.charAt(i)) { Return i - m + 1; //match

i+ + ; j+ + ;

}else if (j > 0) J = fail[j-i] ;


(32)

else i+ + ; }

Return -1; // no match } // end of kmpMatch()

Pada fungi KMP panjang teks di masukkan ke dalam variabel n, panjang pattern dimasukkan ke variabel m, i= 0 dan j= 0, jika i lebih kecil dari pada n jika pattern pada karakter j sama dengan teks pada posisi i maka i –m + 1 (match), jika cocok.. i + 1, j+ 1 (j > 0 ). Jika tidak sama maka j menyimpan (j-i) sebagai failure Function dan i+1. jika j tidak sama dengan i dan j tidak lebih besar daripada 0 maka dikembalikan -1 (no macth).

2.2.7. 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 bruteforce, 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


(33)

ditemukan di dalam teks. Dalam algoritma Knuth Morris Pratt ini kita akan menemui beberapa definisi yang nantinya akan digunakan dalam algoritma ini.

2.2.8. 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 kerakter-karekter di dalam teks yang dicari. Oleh karena itu, kita dapat melakukan perhitungan fungsi awalah sebelum pencarian string dilakukan. Fungsi pinggiran b(j) 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

P(j) a b c a b d

B(j) 0 0 1 1 2 0

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)


(34)

{ 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


(35)

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.9 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 b(5) = 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.

j 1 2 3 4 5 6

P[j] a b c a b d b(j) 0 0 0 1 2 0


(36)

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 KMPsearch(input 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.


(37)

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 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] }

Algoritma:

HitungPinggiran(m, P, b) j 0

i 1

ketemu false

while (i n and not ketemu) do while((j > 0) and (P[j+1] T[i])) do j b[j]


(38)

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

2.2.10. 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


(39)

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 tekstual/penulisan (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.


(40)

2.3. Penelitian Yang Relevan.

Algoritma Levenshtein Distance terbukti dapat menyelesaikan beberapa permasalahan dalam penelitian ilmiah, penelitian yang pernah dilakukan yang berkaitan dengan algoritma Levenshtein Distance, diantaranya yaitu (Primadani, Yuli. 2014). Algoritma Levenshtein Distance pada fitur Autocomplete pada Aplikasi Katalog Perpustakaan.

Layanan autocomplete (Word completion) telah banyak digunakan pada penelitian terdahulu. layanan autocomplete juga pernahditerapkan pada Smart Phones (Pradhana, 2012), dengan menggunakan kombinasi algoritma Brute Force, Boyer-Moore dan Knuth-Morris Pratt.

Penelitian yang pernah dilakukan yang berkaitan dengan algoritma Knuth-Morris Pratt yaitu (Handari Ekaputri,Gahayu. 2007). Aplikasi Algoritma Pencarian String Knuth-Morris-Pratt dalam Permainan Word Search kesimpulan nya adalah algoritma KMP dapat menyimpan sebuah informasi yang digunakan untuk melakukan jumlah pergeseran, sehingga algoritma ini melakukan pergeseran lebih jauh tidak hanya bergeser satu karakter.

Penelitian tentang string matching juga pernah dilakukan oleh (Singla, Nimisha,2012) dengan judul String Matching Algorithms and their Applicability in various Applications. kesimpulan nya adalah jarak antara dua string didefinisikan sebagai jumlah minimum yang diperlukan untuk mengubah satu string ke yang lain, dengan diijinkan mengedit operasi penyisipan, penghapusan, atau penggantian karakter tunggal.


(41)

PEOPLE MATERIAL

METHOD

Bagaimana mengimplementasikan Algoritma Levenshtein Distance dan Algoritma Knuth-Morris-Pratt (KMP) dalam fitur word completion pada search engine.

MACHINE

Tidak dapat melakukan pencarian kosa kata yang bukan bahasa sunda,bahasa batak, istilah perpustakaan. Algoritma Levenstein Distance Algoritma Knuth-Morris-Pratt (KMP) VB.Net Mysql (DBMS) Kesulitan dalam melakukan pencarian kata dalam kamus. BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1. Analisis Masalah

Bab ini akan membahas tentang analisis serta perancangan sistem fitur Word Completion dengan menggunakan Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt, membuat pemodelan sistem seperti merancang alur kerja sistem (flowchart). Mempelajari konsep dan proses kerja Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt, serta merancang antarmuka.

3.1.1. Analisis Masalah

Gambar 3.1. merupakan diagram Ishikawa yang dapat digunakan untuk menganalisis masalah. Bagian kepala atau segiempat yang berada di sebelah kanan merupakan masalah. Sementara di pada bagian tulang merupakan penyebab.

Gambar 3.1. Diagram Ishikawa Untuk Analisis Masalah Membutuhkan waktu yang

lama dalam proses pencarian kata dalam kamus


(42)

3.1.2. Analisis Persyaratan

Untuk membangun sebuah sistem, perlu dilakukan sebuah tahap analisis kebutuhan sistem. Analisis kebutuhan sistem dapat dikelompokkan menjadi dua bagian yaitu: kebutuhan fungsional dan kebutuhan non-fungsional.

3.1.2.1 Persyaratan Fungsional

Persyaratan fungsional sistem adalah aktifitas dan pelayanan yang harus dimiliki oleh sebuah sistem berupa input, proses, output, maupun penyimpanan data.

Adapun Persyaratan fungsional yang dibutuhkan yaitu: 1. Pengguna memasukkan input berupa string.

2. Sistem melakukan pencocokan katamelalui setiap huruf yang diketikkan dari dalam database.

3.1.2.2 Persyaratan Non-Fungsional

Persyaratan non-fungsional sistem merupakan persyaratan apa yang harus dilakukan sistem. Beberapa persyaratan non-fungsional yang harus dipenuhi oleh sistem yang dirancang adalah sebagai berikut :

1. Performa

Sistem yang akan dibangun harus dapat menunjukkan hasil dari proses Algoritma Levenstein Distance Dan Algoritma Knuth Morris Pratt.

2. Mudah dipelajari dan digunakan

Sistem yang akan dibangun harus sederhana dan mudah di pelajari oleh pengguna (user).

3. Dokumentasi

Sistem yang akan dibangun dapat menyimpan saran kata yang ditambahkan oleh pengguna (user) ke dalam database.

4. Kontrol

Sistem yang akan dibangun harus memiliki pesan not found jika kata yang di ketikkan pengguna (user) tidak ada di dalam database kata.

5. Hemat biaya

Sistem yang akan dibangun tidak memerlukan perangkat tambahan dalam proses eksekusinya.


(43)

<<extends>

<<extends>> <<extends>>

<<extends>> 3.2. Pemodelan Sistem

Pemodelan sistem dilakukan untuk memperoleh gambaran yang lebih jelas tentang objek apa saja yang akan berinteraksi dengan sistem, serta hal-hal apa saja yang harus dilakukan oleh sebuah sistem sehingga sistem dapat berfungsi dengan baik sesuai dengan kegunaannya.

Pada penelitian ini digunakan UML (Unified Modeling Language). Model UML yang digunakan antara lain use case diagram, activity diagram, dan sequence diagram.

3.2.1. Use-Case Diagram

Use case merupakan fungsionalitas dari suatu sistem, sehingga customer atau pengguna sistem paham dan mengerti mengenai kegunaan sistem yang akan dibangun. Use case berperan menggambarkan interaksi antar komponen-komponen yang berperan dalam sistem yang akan dirancang.

Gambar 3.2. Use Case Diagram Sistem Algoritma

Levenstein Distance

User

Input Kata yg Dicari

Setiap karakter digeser 1 string sampai menemukan kata yang

Menggeser sebanyak 1 karakter kesebelah kanan

Menghitung nilai distance dengan substitusi,eliminasi ,penambahan

Algoritma Knuth Morris-Pratt

Hasil distance berupa nilai 0 dan


(44)

Use case pada gambar 3.2 menjelaskan aksi yang dapat dilakukan oleh user, user dapat melakukan pencarian kata lalu saran kata yang dicari menggunakan algoritma Levenstein Distance dan algoritma Knuth Morris Pratt dan menampilkan proses pencarian kata lalu menambah saran kata.

Tabel 3.1. Tabel Use Case Proses Pencarian Kata Name Proses Pencarian Kata

Actors User yang telah ditentukan.

Description Use Case ini mendeskripsikan Pencarian kata dengan algoritma Levenstein Distance dan algoritma Knuth-Morris-Pratt.

Basic Flow User memasukkan inputan karakter berupa huruf. Alternate

F low

User dapat memilih alternatif saran Levenstein Distance, Knuth-Morris-Pratt, tambah kata dan tampilan lainnya.

Pre Condition

-

Post Condition

User mengetahui hasil list saran kata alternatif Levenstein Distance,Knuth-Morris-Pratt.

3.2.2. Activity Diagram

Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang sedang dirancang atau menggambarkan proses parallel yang mungkin terjadi dalam beberapa eksekusi. Gambar 3.3 merupakan activity diagram dari sistem yang dibangun.


(45)

Gambar 3.3. Activity Diagram Sistem


(46)

3.2.3. Sequence Diagram

Sequence diagram merupakan diagram yang menggambarkan interaksi antar objek dan menjelaskan bagaimana suatu operasi dilakukan.Diagram ini juga menunjukkan serangkaian pesan yang dipertukarkan oleh objek. Dalam sistem yang akan dibangun, interaksi dilakukan antara pengguna dan sistem. Sequence diagram sistem dapat dilihat pada Gambar 3.4.

Name Activity Diagram Activity diagram Sistem

Actors User

Deskripsi Activity ini mendeskripsikan proses Sistem pada Aplikasi Search Engine Algoritma Levenstein Distance dan Algoritma Knuth Morris Pratt.

Prakondisi Sudah Masuk ke tampilan utama Bidang Khas Suatu

Kejadian

Kegiatan User Respon system

1. Menginputkan kata yang ingin dicari

2. Menekan tombol kata saran Levenstein Distance 3. Menekan tombol kata

saran Knuth-Morris-Pratt 4. Menekan tombol tambah

kata

5. Menambahkan kata yang baru

6. Menekan tombol tentang 7. Menekan tombol bantuan.

1. System menampilkan halaman yang dipilih 2. System akan melakukan

searching pada database 3. Tampilkan list kata dalam pencarian algoritma Levenstein Distance dan Algoritma Knuth Morris Pratt Menyimpan kata yang baru.


(47)

Hitung nilai karakter

Gambar 3.4. Sequence Diagram Sistem

Dari keterangan diatas dapat digambarkan dengan sequence diagram mengenai informasi sistem yang berjalan saat ini, sehingga dengan diagram ini dapat menggambarkan pergerakan sebuah objek dan pesan yang terjadi di dalam sistem penyampaian informasi.

Hitung nilai distance Dengan cara, substitusi, eliminasi, deletion

Input Karakter

Pencarian Kata

Hitung nilai edit distance Input

Karakter

Algoritma LD Hitung nilai Edit Distance

Algoritma KMP

Hitung nilai KMP user

Tampil hasil saran LD dan KMP

Menampilkan hasil saran kata LD dan KMP


(48)

3.3. Analisis Data

Data yang digunakan pada sistem ini berdasarkan data kata yang ada dan telah disimpan pada database, dimana database tersebut berisi kata yang digunakan dalam bahasa sunda. Pada tabel 3.3 akan diberikan beberapa data kata yang akan digunakan sebagai database pada algoritma Levenstein Distance dan Algoritma Knuth Morris Pratt.

No. Kamus Bahasa Sunda

1. abah

2. abdi

3. ameh

4. aben

5. ablag

6. aber

Tabel 3.3. Sampel Data Kamus Bahasa Sunda

Dapat dilihat pada tabel 3.3 bahwa data yang telah disimpan dalam database adalah sebanyak 6 data kata, dimana data tersebut akan dijadikan sebagai database yang implementasikan pencariannya dalam search engine dengan algoritma Levenstein Distance dan algorima Knuth-Morris-Pratt.

3.4. Analisis Pencarian Fitur Word Completion

Dalam pencarian sebuah informasi, kecepatan merupakan salah satu faktor yang penting. Dalam mempercepat pencarian informasi, beberapa mesin pencarian menambahkan fitur Word Completion, yang digunakan untuk mencari hasil kata terdekat dengan kata yang akan dicari. Pengguna tidak perlu mengetikkan kata yang akan dicari secara lengkap, sehingga hal ini sangat efektif untuk meningkatkan kecepatan pencarian sebuah informasi.


(49)

3.4.1. Pseudocode Algoritma Levenstein Distance Public Static,int Ld

{

Int n = s.Length Int m = t.Length d(n + 1, m + 1) Int If n = 0 Then

Return m End If

If m = 0 Then Return n End If

Int I; Int j;

For i = 0 To n ' d(i, 0) = i Next

For j = 0 To m d(0, j) = j

Next

For i = 1 To n For j = 1 To m Int cost

If t(j - 1) = s(i - 1) Then cost = 0

Else

cost = 1 End If

d(i, j) = Math.Min(Math.Min(d(i - 1, j) + 1, d(i, j - 1) + 1),

d(i - 1, j - 1) + cost) Next

Next

Return d(n, m) End Function

End Module


(50)

Cara Kerja Algoritma Levenstein Distance : 1. Operasi pengubahan karakter

Operasi pengubahan karakter merupakan operasi menukar sebuah karakter dengan karakter lain, contohnya penulis menuliskan string ‘yamg’ menjadi

‘yang’. Dalam kasus ini karakter ‘m’ diganti menjadi huruf ‘n’.

2. Operasi penambahan karakter

Operasi penambahan karakter berarti menambakan karakter kedalam suatu string. Contoh nya string ‘kepad’ menjadi ‘kepada’, dilakukan penambahan string ‘a’ diakhir string. Penambahan karakter ini tidak hanya diakhir kata, namun bisa diawal atau ditengah string.

3. Operasi penghapusan karakter

Operasi penghapusan karakter dilakukan untuk menghilangkan karakter pada suatu string. Contohnya string‘barur’ karakter terakhir dihilangkan

3.4.2. Analisis Algoritma Knuth-Morris-Pratt (KMP) Pada Fitur Word Completion

Pada analisis tentang Word Completion sebelumnya, ketika proses pencocokan kata fitur Word Completion membutuhkan algoritma string matching untuk mencocokkan karakter-karakter input dari user dengan database informasi agar menghasilkan kata yang tepat. Untuk itu berikut merupakan analisa terhadap fitur Word Completion dengan menggunakan Algoritma Knuth-Morris-Pratt dalam mencocokan karakter.

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 Levenstein Distance , setiap kali ditemukan ketidakcocokan pattern dengan teks, maka pattern akan digeser satu karakter ke kanan. Sedangkan pada algoritma Knuth Morris-Pratt, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma menggunakan informasi tersebut untuk membuat pergeseran yang lebih jauh, tidak hanya satu karakter seperti halnya pada algoritma Levenstein Distance.


(51)

3.4.3. Cara Kerja Algoritma Knuth-Morris-Pratt (KMP) Pada Fitur Word Completion

1. Menentukan Pattern dan Teks

Algoritma Knuth-Morris-Pratt adalah algoritma pencocokan string yang juga tediri dari dua komponen utama, yaitu pattern dan teks.

2. Proses Fitur Word Completion

Setelah pattern dan teks terbentuk maka proses selanjutnya adalah melakukan pencocokan karakter. Berbeda dengan algoritma Levenstein Distance, algoritma Knuth Morris-Pratt ini dapat memelihara informasi yang digunakan untuk melakukan jumlah pergeseran. Algoritma Knuth-Morris-Pratt menggunakan informasi tersebut untuk membuat pergeseran satu karakter

Adapun cara kerja algoritma dalam melakukan pencarian kataadalah sebagai berikut : 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:

3. Karakter di pattern dan di teks yang dibandingkan tidak cocok (mismatch). 4. Semua karakter di pattern cocok. Kemudian algoritma akan memberitahukan

penemuan di posisi ini.

5. Algoritma kemudian menggeser pattern berdasarkan tabel, lalu mengulangi langkah 2 sampai pattern berada di ujung teks .


(52)

3.4.4. Pseudocode Algoritma Knuth-Morris-Pratt (KMP)

public static int kmpMatch (string text, string pattern) {

Int n = text.length(); Int m = pattern.length();

Int fail[] = computeFail (pattern); Int i = 0 ;

Int k = 0 ;

While (i < n) {

If (pattern.charAt(j) == text.charAt(i)) { Return i - m + 1; //match

i++; k++;

}else if (j > 0) J = fail[k-i];

else i++; }

Return -1; // no match } // end of kmpMatch()

Gambar 3.6. Pseudocode Algoritma Knuth Morris Pratt

3.5. Perancangan Sistem

Berdasarkan gambaran dari hasil analisis proses maka dibangun suatu model rancangan flowchart sistem dan juga rancangan antar muka sistem.


(53)

3.5.1. Flowchart Sistem

Adapun alur kerja yang terdapat pada sistemdapat dilihat pada gambar 3.7.

Gambar 3.7. F lowchart System Start

Input string Halaman awal user

Apakah memilih 1. Saran Kata Levenstein Distance

Apakah memilih Saran Kata 2. Saran KMP

Apakah memilih 3. Tambah kata

Apakah memilih 4. Tentang

End

Menampilkan Hasil Saran Kata

Levenstein

Menampilkan Hasil Saran

Kata KMP

Menampilkan Halaman Tambah kata

Menampilkan Halaman

Tentang ya

ya tidak

tidak

ya

tidak

tidak


(54)

3.6. Perancangan Antarmuka (Interface)

Antarmuka (Interface) berguna untuk mempermudah pengguna ketika mengakses sebuah aplikasi, antarmuka sistem juga merupakan suatu alur komunikasi antara user dengan sistem. Antarmuka dapat disebut juga sebagai wajah dari suatu aplikasi, sehingga ketika seorang user atau pengguna pertama kali mengakses suatu aplikasi, maka bagian pertama yang akan muncul adalah antarmuka (interface).

Berikut ini akan digambarkan tentang rancangan tampilan halaman pada sistem yang akan dibuat.

3.6.1. Rancangan Halaman Awal User

Halaman awal user berisi menu utama aplikasi yaitu berisi inputan teks dan menu list box yang akan dipilih dalam fitur word completion. Gambar 3.8 menunjukkan rancangan interface halaman awal user.

Gambar 3.8 Rancangan Halaman Awal User

Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Fitur Word Completion Pada Search Engine

Word Completion Tambah Kata Tentang Bantuan

1 1 5 1

2 1

3 1

4 1

Saran Levenstein Saran Knuth-Morris-Pratt


(55)

Tabel 3.4. Keterangan Rancangan Halaman Awal User

3.6.2. Rancangan Halaman Hasil Saran Levenstein Distance

Halaman hasil saran merupakan halaman yang menampilkan hasil saran Levenstein Distance pada proses pengujian word completion. Gambar 3.9 menunjukkan rancangan interface halaman hasil saran Levenstein Distance.

Gambar 3.9. Rancangan Halaman Hasil Saran Levenstein Distance

No Keterangan

1 Merupakan Menu Bar dari aplikasi antara lain menu word completion , menu tambah kata, menu tentang,dan menu bantuan

2 Merupakan Text Field untuk menginput string yang dicari

3 Merupakan List box tempat Output dari hasil saran kata yang di berikan menggunakan Algoritma Levenstein Distance.

4 Merupakan List box tempat Output dari hasil saran kata yang di berikan menggunakan Algoritma Knuth-Morris-Pratt.

5 Merupakan Static Text untuk menampilkan judul skripsi

Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Fitur Word Completion Pada Search Engine

Word Completion Tambah Kata Tentang Bantuan

4

1 1

Hasil Saran Levenstein Distance Input String yang akan dicari :

2


(56)

Tabel 3.5. Keterangan Rancangan Halaman Hasil Saran Levenstein Distance

3.6.3. Rancangan Halaman Hasil Saran Knuth-Morris-Pratt

Halaman hasil saranmerupakan halaman yang menampilkan hasil saran Knuth-Morris-Pratt dan running time pada proses pengujian word completion. Gambar 3.10 menunjukkan rancangan interface halaman hasil iterasi saran Knutt Morris Pratt.

Gambar 3.10. Rancangan Halaman Hasil Saran Knuth-Morris-Pratt

No Keterangan

1 Merupakan Menu Bar dari aplikasi antara lain menu word completion , menu tambah kata, menu tentang,dan menu bantuan

2 Merupakan Text Field untuk menginput sting yang akan dicari

3 Merupakan List box tempat Output dari hasil saran kata yang di berikan menggunakan Algoritma Levenstein Distance.

4 Merupakan Static Text untuk menampilkan judul skripsi

Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Fitur Word Completion Pada Search Engine

Word Completion Tambah Kata Tentang Bantuan

3 1

4

1 1 2

Hasil Saran Knutt Morris Pratt Input String yang akan dicari :


(57)

Tabel 3.6. Keterangan Rancangan Halaman Hasil Saran Knuth-Morris-Pratt

3.6.4. Rancangan Halaman Tambah Kata

Halaman tambah katamerupakan halaman yang menampilkan data Word Completion yang dapat di edit atau dihapus serta dapat menambahkan data kata . Gambar 3.11 menunjukkan rancangan interface halaman tambah kata.

Gambar 3.11. Rancangan Halaman Tambah Kata No

Keterangan

1 Merupakan Menu Bar dari aplikasi antara lain menu word completion , menu tambah kata, menu tentang,dan menu bantuan

2 Merupakan Text Field untuk menginput sting yang akan dicari

3 Merupakan List box tempat Output dari hasil saran kata yang di berikan menggunakan Algoritma Knutt Morris Pratt.

4 Merupakan Static Text untuk menampilkan judul skripsi

Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Fitur Word Completion Pada Search Engine

Word Completion Tambah Kata Tentang Bantuan

2

1 1

Indonesia Sunda

Contoh Kalimat

Tambah data 3

4

5


(58)

Tabel 3.7. Keterangan Rancangan Tambah Kata

No Keterangan

1 Merupakan Menu Bar dari aplikasi antara lain menu word completion, menu tambah kata, menu tentang,dan menu bantuan

2 Merupakan Static Text untuk menampilkan judul Word Completion Database

3 Merupakan Message Box untuk mengisi bahasa sunda kedalam database 4 Merupakan Message Box untuk mengisi bahasa sunda kedalam database 5 Merupakan Message Box untuk mengisi contoh kalimat

6 Merupakan Button untuk tambah data

3.6.5. Rancangan Halaman Tentang

Halaman tentang merupakan halaman yang menampilkan tentang deskripsi pembuat program, dalam penelitian ini. Gambar 3.13 menunjukkan rancangan interface halaman tentang.

Gambar 3.13. Rancangan Halaman Tentang

Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Fitur Word Completion Pada Search Engine

Word Completion Tambah Kata Tentang Bantuan

3 1

4

1 1 2


(59)

Tabel 3.8. Keterangan Rancangan Tentang

No Keterangan

1 Merupakan Menu Bar dari aplikasi antara lain menu word completion, menu tambah kata, menu tentang,dan menu bantuan

2 Merupakan Static Text untuk menampilkan judul Tentang Aplikasi 3 Merupakan Static Text untuk menampilkan deskripsi pembuat program 4 Merupakan Static Text untuk menampilkan judul skripsi

3.6.6. Rancangan Halaman Bantuan

Halaman bantuan berisi mengenai petunjuk penggunaan aplikasi untuk memudahkan pengguna didalam memahami setiap fungsi dalam aplikasi. Perancangan interface halaman bantuan ditunjukkan pada Gambar 3.14.

Gambar 3.14. Rancangan Halaman Bantuan

Implementasi Algoritma Levenstein Distance dan Algoritma Knuth-Morris-Pratt (KMP) Dalam Fitur Word Completion Pada Search Engine

Word Completion Tambah Kata Tentang Bantuan

4

1 1 2


(60)

Tabel 3.9. Keterangan Rancangan Bantuan

No Keterangan

1 Merupakan Menu Bar dari aplikasi antara lain menu word completion, menu tambah kata, menu tentang,dan menu bantuan

2 Merupakan Static Text untuk menampilkan judul Bantuan Aplikasi 3 Merupakan Static Text untuk menampilkan petunjuk penggunaan aplikasi 4 Merupakan Static Text untuk menampilkan judul skripsi


(61)

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:


(62)

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


(63)

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 LevenshteinDistance(ByVal s As String, ByVal t As String) As Integer Dim n As Integer = s.Length


(64)

Dim d(n + 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 d(i, 0) = i

Next

For j = 0 To m //'Baris d(0, j) = j

Next

For i = 1 To n For j = 1 To m

Dim cost As Integer

If t(j - 1) = s(i - 1) Then cost = 0

Else

cost = 1 End If

d(i, j) = Math.Min(Math.Min(d(i - 1, j) + 1, d(i, j - 1) + 1), d(i - 1, j - 1) + cost) 'Substituting, Deleting, Inserting

Next Next

Return d(n, 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:


(65)

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 matchingKMP, 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]


(66)

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 charArray(i) = patternArray(k) Then k += 1

Else

//Bila tidak cocok..lanjut ke pattern selanjutnya Dim prefix As Integer = ArrayTransisi(k)

If prefix + 1 > patternArray.Length AndAlso charArray(i) <> patternArray(prefix + 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.Add(i - (patternArray.Length - 1)) k = ArrayTransisi(k - 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.


(67)

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

0 1 2 3 4 k 1 0 1 2 3 a 2 1 0 1 2 l 3 2 1 0 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

0 1 2 3 4 k 1 0 1 2 3 u 2 1 0 1 2 m 3 2 1 0 1


(68)

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


(69)

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


(70)

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


(1)

End Function

Public Shared Function

GetOccurencesForReverseString(pattern As String, teks As String) As ArrayList 'Untuk Pencarian teks terbalik

Dim array__1 As Char() = pattern.ToCharArray()

Array.Reverse(array__1)

Return GetOccurences(New String(array__1), teks)

End Function

Private Shared Function GetOccurences(pattern As String, teks As String) As ArrayList 'Pencarian normal Dim hasil As ArrayList

Dim ArrayTransisi As Integer() Dim charArray As Char()

Dim patternArray As Char()

charArray = teks.ToLower().ToCharArray() 'Mengubah char array kedalam non kapital

patternArray =

pattern.ToLower().ToCharArray() hasil = New ArrayList()

Dim prefixArray As New PrefixArray(pattern) ArrayTransisi = prefixArray.ArrayTransisi Dim k As Integer = 0

For i As Integer = 0 To charArray.Length - 1 'bila item ke-i pada char array cocok dengan item ke-k pada pattern array

If charArray(i) = patternArray(k) Then k += 1

Else

'Bila tidak cocok..lanjut ke pattern selanjutnya

Dim prefix As Integer = ArrayTransisi(k)

If prefix + 1 > patternArray.Length AndAlso charArray(i) <> patternArray(prefix + 1) Then k = 0

Else

k = prefix End If


(2)

'string ditemukan apabila panjang char array sama dengan panjang pattern

If k = patternArray.Length Then 'tambahkan pada array hasil

hasil.Add(i - (patternArray.Length - 1))

k = ArrayTransisi(k - 1) End If

Next

Return hasil End Function End Class

Public Class PrefixArray

Private pattern As String Private hArray As Integer()

Public Sub New(pattern As String)

If pattern Is Nothing OrElse pattern.Length = 0 Then

Throw New ArgumentException("Pattern tidak boleh kosong", "pattern")

End If

Me.pattern = pattern

hArray = New Integer(pattern.Length - 1) {} ComputeHArray()

End Sub

Private Sub ComputeHArray()

'Array to keep track of the sub string

' in each iteration

Dim temp As Char() = Nothing

'An array containing the characters of the string

Dim patternArray As Char() = pattern.ToCharArray()

'The first character in the string...

'At this point the patern length is validated to be atleast 1

Dim firstChar As Char = patternArray(0) 'This defaults to 0

hArray(0) = 0

For i As Integer = 1 To pattern.Length - 1 temp = SubCharArray(i, patternArray)


(3)

hArray(i) = GetPrefixLegth(temp, firstChar)

Next End Sub

Private Shared Function GetPrefixLegth(array As Char(), charToMatch As Char) As Integer

For i As Integer = 2 To array.Length - 1 'if it is a match

If array(i) = charToMatch Then

If IsSuffixExist(i, array) Then

'Return on the first prefix which is the largest

Return array.Length - i End If

End If Next

Return 0 End Function

Private Shared Function IsSuffixExist(index As Integer, array As Char()) As Boolean

'Keep track of the prefix index Dim k As Integer = 0

For i As Integer = index To array.Length - 1 'A mismatch so return

If array(i) <> array(k) Then Return False

End If k += 1 Next

Return True End Function

Private Shared Function SubCharArray(endIndex As Integer, array As Char()) As Char()

Dim targetArray As Char() = New Char(endIndex) {}

For i As Integer = 0 To endIndex targetArray(i) = array(i) Next

Return targetArray End Function

Public ReadOnly Property ArrayTransisi() As Integer()

Get

Return hArray End Get


(4)

End Property

End Class End Namespace

Public Function LevenshteinDistance(ByVal s As String, ByVal t As String) As Integer

Dim n As Integer = s.Length Dim m As Integer = t.Length Dim d(n + 1, m + 1) As Integer If n = 0 Then

Return m End If

If m = 0 Then Return n End If

Dim i As Integer Dim j As Integer For i = 0 To n 'Kolom d(i, 0) = i

Next

For j = 0 To m 'Baris d(0, j) = j

Next

For i = 1 To n For j = 1 To m

Dim cost As Integer

If t(j - 1) = s(i - 1) Then cost = 0

Else

cost = 1 End If

d(i, j) = Math.Min(Math.Min(d(i - 1, j) + 1, d(i, j - 1) + 1),

d(i - 1, j - 1) + cost) 'Substituting, Deleting, Inserting

Next Next

Return d(n, m) 'Return last distance End Function


(5)

Dim k As Integer = 0

For i As Integer = 0 To charArray.Length - 1 If charArray(i) = patternArray(k) Then k += 1

Else

Dim prefix As Integer = ArrayTransisi(k)

If prefix + 1 > patternArray.Length AndAlso charArray(i) <> patternArray(prefix + 1) Then k = 0

Else

k = prefix End If

End If

If k = patternArray.Length Then

hasil.Add(i - (patternArray.Length - 1))

k = ArrayTransisi(k - 1) End If

Next

Return hasil End Function End Class


(6)

DAFTAR RIWAYAT HIDUP

Saya yang bertanda tangan dibawah ini :

DATA PRIBADI

Nama : Ryan Dhika Priyatna

Alamat : JL. Bunga Wijaya Kesuma No. 64 A Medan

HP : 085261006228

E-mail : ryandhikapriyatna@gmail.com

Tempat / Tanggal Lahir : Binjai 07 Agustus 1992 Jenis Kelamin : Laki-Laki

Status : Belum Menikah

PENDIDIKAN

1998 – 2004 : SD Taman Asuhan Kota Pematang Siantar

2004 – 2007 : SMP Yayasan Perguruan Keluarga Pematang Siantar 2007 – 2010 : SMA Negeri 4 Pematang Siantar

2010 – 2013 : D-III Teknik Informatika Universitas Sumatera Utara 2013 – 2015 : S-1 Ekstensi Ilmu Komputer Universitas Sumatera Utara SEMINAR

 Seminar Nasional Literasi Informasi (SENARAI) 2014 Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

Demikianlah Daftar Riwayat Hidup ini saya perbuat dengan sebenarnya.

Hormat Saya,