ANALISIS DAN PERBANDINGAN ALGORITMA TURBO BOYER-MOORE DAN ALGORITMA NOT SO NAIVE PADA APLIKASI KAMUS BAHASA
BELANDA – INDONESIA BERBASIS ANDROID
SKRIPSI
ANNISA SILVY LIES PRADIPTA 141421063
PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA MEDAN
2017
ANALISIS DAN PERBANDINGAN ALGORITMA TURBO BOYER-MOORE DAN ALGORITMA NOT SO NAIVE PADA APLIKASI KAMUS BAHASA
BELANDA – INDONESIA BERBASIS ANDROID
SKRIPSI
Diajukan untuk melengkapi tugas akhir dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
OLEH :
ANNISA SILVY LIES PRADIPTA 141421063
PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA MEDAN
2017
PERSETUJUAN
Judul : ANALISIS DAN PERBANDINGAN ALGORITMA TURBO BOYER – MOORE DAN ALGORITM NOT SO NAÏVE PADA APLIKASI KAMUS BAHASA BELANDA – INDONESIA BERBASIS ANDROID
Kategori : SKRIPSI
Nama : ANNISA SILVY LIES PRADIPTA
No Induk Mahasiswa : 141421063
Program Studi :EKSTENSI S-1 ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI UNIVERSITAS SUMATERA UTARA Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Jos Timanta Tarigan, S.Kom., M.Sc. M. Andri Budiman, S.T., M.Comp.Sc., M.E.M.
NIP. 19850126 201504 1 001 NIP. 19751008200801 1 011
Diketahui / Disetujui Oleh Program Studi Ilmu Komputer Ketua,
Dr. Poltak Sihombing, M.Kom.
NIP. 19620317 199103 1 001
PERNYATAAN
ANALISIS DAN PERBANDINGAN ALGORITMA TURBO BOYER – MOORE DAN ALGORITMA NOT SO NAÏVE PDA APLIKASI KAMUS BAHASA
BELANDA – INDONESIA BERBASIS ANDROID
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telh disebutkan sumbernya.
Medan, Oktober 2017
Annisa Silvy Lies Pradipta 141421063
PENGHARGAAN
Alhamdulillah. Puji dan syukur atas kehadirat Allah SWT yang telah memberikan rahmat dan karunia-Nya kepada penulis untuk dapat menyelesaikan skripsi ini dalam waktu yang telah ditetapkan. Selama penyelesaian skripsi ini, banyak bantuan dan kerja sama serta doa dan dukungan dari berbagai pihak. Dalam kesempatan ini penulis ingin mengucapkan terima kasih kepada :
1. Bapak Prof. Dr. Runtung Sitepu, S.H., M.Hum. selaku Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul, S.Si., M.Sc. 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 Pembanding I yang telah memberikan kritik dan saran dalam pengerjaan skripsi ini.
4. Bapak Heriyance, S.T., M.Kom. selaku Sekretaris Program Studi S1 Ilmu Komputer Universitas Sumatera Utara sekaligus Dosen Pembanding II yang telah memberikan kritik dan saran dalam pengerjaan skripsi ini.
5. Bapak Mohammad Andri Budiman, S.T., M.Comp.Sc., M.E.M.selaku Dosen Pembimbing I yang telah memberikan motivasi, arahan serta masukan yang sangat penulis butuhkan dalam pengerjaan skripsi ini.
6. Bapak Jos Timanta Tarigan, S.Kom., M.Sc. selaku Dosen Pembimbing II yang telah memberikan arahan, kritik dan saran serta motivasi kepada penulis dalam pengerjaan skripsi ini.
7. Ibunda Elisa Fitriani, S.Pd serta keluarga yang selalu memberikan kasih sayang dan dukungannya kepada penulis.
8. Rekan-rekan kuliah dan teman-teman Kom C Ekstensi Ilkom 2014 yang tidak dapat dituliskan satu per satu yang selalu memberikan semangat dan dorongan, serta motivasi kepada penulis selama menyelesaikan skripsi ini.
9. Teman terdekat Yuthi Afina, Desy Rahayu, Riska Sundari, Rizky Agustina yang telah memberikan dukungan moril dalam penyelesaian tugas akhir ini.
10. Seluruh tenaga pengajar dan pegawai pada Fakultas Ilmu Komputer dan Teknologi Informasi USU, terkhususnya di Program Studi S-1 Ilmu Komputer.
Semoga Allah SWT. melimpahkan berkah dan kasih sayang-Nya kepada semua pihak yang telah memberikan bantuan, semangat, dukungan dan perhatian kepada penulis dalam menyelesaikan skripsi ini. Semoga skripsi ini bermanfaat bagi penulis, pendidikan, masyarakat, organisasi atau negara.
Medan, Oktober 2017 Penulis
Annisa Silvy Lies Pradipta
ABSTRAK
Kamus Bahasa Belanda merupakan daftar yang memuat tentang kata atau istilah Bahasa Belanda dan pengertiannya yang disusun menurut abjad berikut keterangan dan maknanya. Penggunaan Bahasa Belanda sering ditemukan pada istilah hukum dan politik di Indonesia. Bahkan beberapa kata dalam Bahasa Belanda telah dimasukkan menjadi bahasa baku dalam Bahasa Indonesia. Untuk memudahkan pengguna yang ingin mempelajari lebih lanjut tentang Bahasa Belanda, diperlukan sebuah media yang praktis dan lebih efisien dari kamus cetak, yaitu sebuah aplikasi kamus yang dapat dibawa kemanapun. Aplikasi kamus ini menggunakan dua Algoritma String Matching yaitu Algoritma Turbo Boyer – Moore dan Algoritma Not So Naive. Adapun hasil dari penelitian ini menunjukkan bahwa Algoritma Turbo Boyer Moore melakukan pencarian kata lebih lama bila dibandingkan dengan Algoritma Not So Naive. Dimana Hasil Kompleksitas Algoritma Turbo Boyer – Moore adalah T(n) = θ(m2) danHasil Kompleksitas Algoritma Not So Naive adalah θ(mn)
Kata Kunci : Kamus Bahasa Belanda, Algoritma String Matching, Algoritma Turbo Boyer – Moore, Algoritma Not So Naive.
Analysis and Comparisson Between Turbo Boyer – Moore Algorithm and Not So Naive Algorithm Implementation Through Android Application of Dutch- Indonesian Dictionary
ABSTRACT
The Dutch Dictionary contains of Dutch words or vocabularies and the arranged alphabetical meaningfull as well as each of descriptions and meanings. The uses of Dutch is often found in legal and political vocabulary in Indonesia. Even a few words in Dutch have been incorporated into standard languages in Bahasa Indonesia.
Therefore, to make the dictionary as a friendly user stuff for people who wants to enhance his/her capacity on Dutch language, usually people tends to find a much practical and more efficiency media rather than a regular dictionary; that is an application of dictionary which can be used mobile at anytime and anyplace . This dictionary application is using of two strings matching algorithm, which are called a Turbo Boyer – Moore Algorithm and a Not So Naive Algorithm. The conclusion of this study indicating that Turbo Boyer – Moore Algorithm performs more longer word searching compare to Not So Naive Algorithm. Based on researched the complexity of Algorithm result in word search for Turbo Boyer – Moore Algorithm is T(n) = θ(m2) while Not So Naive Algorithm is θ(mn)
.
Key Words : The Dutch Dictionary, String Matching Algorithm, Turbo Boyer – Moore Algorithm, Not So Naive Algorithm
DAFTAR ISI
PERSETUJUAN i
PERNYATAAN ii
PENGHARGAAN iii
ABSTRAK v
ABSTRACT vi
DAFTAR ISI vii
DAFTAR TABEL ix
DAFTAR GAMBAR ix
BAB 1PENDAHULUAN 1
1.1. Latar Belakang 1
1.2. Rumusan Masalah 3
1.3. Batasan Masalah 3
1.4. Tujuan Penelitian 4
1.5. Manfaat Penelitian 4
1.6. Metode Penelitian 4
1.7. Sistematika Penulisan 5
BAB 2LANDASAN TEORI 7
2.1. Algoritma 7
2.2. Algoritma String Matching (Pencocokan string) 7
2.2.1. Algoritma Turbo Boyer – Moore 8
2.2.2. Algoritma Not So Naive 13
2.3. Kompleksitas Algoritma 17
2.4. Kamus 18
2.5. Android 18
2.6. Versi Android 19
2.7. Penelitian yang Relevan 21
BAB 3ANALISIS DAN PERANCANGAN 23
3.1. Analisis 23
3.1.1. Analisis Masalah 23
3.1.2. Analisis Persyaratan 24
3.1.3. Pemodelan 26
3.2. Flowchart 33
3.2.1. Flowchart Sistem 34
3.2.2. Flowchart Algoritma Not So Naive 35
3.2.3. Flowchart Algoritma Turbo Boyer-Moore 36
3.3. Perancangan Antarmuka Sistem (Interface) 37
3.3.1. Rancangan Halaman Splash Screen 37
3.3.2. Rancangan Halaman Utama 38
3.3.3. Rancangan Halaman About 39
BAB 4IMPLEMENTASI DAN PENGUJIAN 40
4.1. Implementasi 40
4.1.1. Tampilan Halaman Splash Screen 40
4.1.2. Tampilan Halaman Home 41
4.1.3. Tampilan Halaman About 42
4.2. Pengujian Sistem 43
4.2.1. Pengujian Pencarian kata pada Kamus Bahasa Belanda – Indonesia dengan
Algoritma Turbo Boyer – Moore 43
4.2.2. Pengujian Pencarian kata pada Kamus Bahasa Belanda – Indonesia dengan
Algoritma Not So Naive 50
4.3. Hasil Pengujian 56
4.4. Kompleksitas Algoritma 60
4.4.1. Kompleksitas Algoritma Turbo Boyer – Moore 60
4.4.2. Kompleksitas Algoritma Not So Naive 64
BAB 5KESIMPULAN DAN SARAN 66
5.1. Kesimpulan 66
5.2. Saran 66
DAFTAR PUSTAKA 67
LAMPIRAN
DAFTAR GAMBAR
Gambar 2. 1 Versi Android 20
Gambar 3. 1 Diagram Ishikawa 24
Gambar 3. 2 Use Case Diagram 27
Gambar 3.3 Activity Diagram 31
Gambar 3. 4 Sequence Diagram 33
Gambar 3. 5 Flowchart Sistem Kamus Bahasa Belanda – Indonesia 34
Gambar 3. 6. Flowchart Algoritma Not So Naïve 35
Gambar 3. 7. Flowchart Algoritma Turbo Boyer-Moore 36
Gambar 3. 8Splash Screen 37
Gambar 3. 9 Rancangan Halaman Utama 38
Gambar 3. 10 Rancangan Halaman About 39
Gambar 4. 1 Halaman Splash Screen 40
Gambar 4. 2 Halaman Home 41
Gambar 4. 3 Hasil Pencarian 42
Gambar 4. 4 Halaman About 42
Gambar 4. 5 Grafik Hasil Running Time Algoritma Turbo Boyer – Moore 58 Gambar 4. 6 Grafik Hasil Running Time Algoritma Not So Naive 59
DAFTAR TABEL
Tabel 2. 1 Tabel BmGs dan BmBc 11
Tabel 2. 2 Percobaan Temu Pola Pertama 11
Tabel 2. 3 Percobaan Temu Pola Kedua 11
Tabel 2. 4 Percobaan Temu Pola Ketiga 12
Tabel 2. 5 Percobaan Temu Pola Keempat 12
Tabel 2. 6 Percobaan Temu Pola Kelima 12
Tabel 2. 7 Percobaan Temu Pola Keenam 13
Tabel 2. 8 Percobaan Pertama Proses Pencocokan Algoritma Not So Naïve 15 Tabel 2. 9 Percobaan Kedua Proses Pencocokan Algoritma Not So Naïve 15 Tabel 2. 10 Percobaan Ketiga Proses Pencocokan Algoritma Not So Naïve 15 Tabel 2. 11 Percobaan Keempat Proses Pencocokan Algoritma Not So Naïve 16 Tabel 2. 12 Percobaan Kelima Proses Pencocokan Algoritma Not So Naïve 16 Tabel 2. 13 Percobaan Kelima Proses Pencocokan Algoritma Not So Naïve 17 Tabel 2. 14Percobaan Kelima Proses Pencocokan Algoritma Not So Naïve 17
Tabel 2. 15Versi Android 19
Tabel 3. 1 Tabel Use Case Memilih Algoritma yang Akan Digunakan 28 Tabel 3. 2 Tabel Use Case Memilih Bentuk untuk kata yang akan diartikan 28
Tabel 3. 3 Tabel Use case Proses Input kata 29
Tabel 3. 4 Tabel Use Case Proses Algoritma Not So Naive 29 Tabel 3. 5 Tabel Use Case Proses Algoritma Turbo Boyer-Moore 30 Tabel 4. 1 Hasil Pencarian Kata Algoritma Turbo Boyer 43 Tabel 4. 2 Hasil Pencarian Kata Algoritma Not So Naive 50 Tabel 4. 3 Hasil Pengujian Bahasa Belanda – Indonesia Pada Algoritma Turbo Boyer
– Moore 57
Tabel 4. 4 Hasil Pengujian Bahasa Indonesia – Belanda Pada Algoritma Turbo Boyer -
Moore 57
Tabel 4. 5 Hasil Pengujian Bahasa Belanda – Indonesia Pada Algoritma Not So Naive 58 Tabel 4. 6 Hasil Pengujian Bahasa Indonesia – Belanda Pada Algoritma Not So Naive
59 Tabel 4. 7 Kompleksitas fungsi preBmBc dari Algoritma Turbo Boyer – Moore 60 Tabel 4. 8 Kompleksitas fungsi Suffix dari Algoritma Turbo Boyer Moore 61 Tabel 4. 9 Kompleksitas Fungsi PreBmGs dari Algoritma Turbo Boyer – Moore 61 Tabel 4. 10 Kompleksitas Fungsi Searching dari Algoritma Turbo Boyer – Moore 62 Tabel 4. 11 Kompleksitas Fungsi Preproses Algoritma Not So Naive 64 Tabel 4. 12 Kompleksitas Fungsi Proses Pencarian Algoritma Not So Naive 65
DAFTAR LAMPIRAN
Lampiran 1 Listing Program A-1
Lampiran 2 Curriculum Vitae B-1
BAB 1
PENDAHULUAN
1.1. Latar Belakang
Perkembangan ilmu teknologi dan informasi pada masa sekarang terbilang sangat pesat. Hal ini dikarenakan begitu tingginya rasa ingin tahu dari masyarakat sehingga banyak yang mencoba menemukan hal-hal baru yang dapat digunakan oleh banyak orang. Pada saat ini kebutuhan informasi merupakan hal yang sangat penting bagi masyarakat. Dengan berkembangnya teknologi informasi mengakibatkan perubahan dalam hal penyampaian informasi. Kini informasi disampaikan melalui berbagai media seperti media elektronik, cetak, telekomunikasi dan lain sebagainya. Kemajuan informasi ini haruslah diterima dengan tangan terbuka terutama pada bidang komputerisasi dan telekomunikasi. Pada era telekomunikasi ini kebutuhan masyarakat akan kamus sangat dibutuhkan untuk menunjang dalam berhubungan dengan rekan ataupun keluarga lainnya.
Penggunaan kamus pada masa sekarang ini merupakan salah satu hal yang sangat penting. Apalagi bagi masyarakat yang ingin mempelajari lebih dari satu bahasa asing, kamus merupakan alat yang tepat untuk memudahkan masyarakat mencari arti kata dari suatu bahasa asing. Hanya saja masih banyak kamus bahsa asing yang masih dalam bentuk buku dan berukuran tebal. Penggunaan bahasa asing juga sudah semakin sering terdengar jika kita pergi ke tempat umum ataupun di dalam buku pelajaran. Contohnya bahasa Belanda, beberapa kata dari bahasa Belanda dimasukkan dalam bahasa serapan Indonesia yang kemudian menjadi kata baku pada bahasa Indonesia. Penggunaan bahasa ini juga banyak ditemukan pada buku politik dan istilah hukum. Sudah banyak masyarakat yang tertarik mempelajari bahasa Belanda, baik yang megambil pendidikan hukum ataupun yang terjun ke dunia politik.
Maka dari itu penulis ingin membuat aplikasi kamus bahasa asing yang dapat memudahkan pengguna. Kamus yang dibuat merupakan kamus Bahasa Belanda. Pada aplikasi kamus ini pengguna dapat menginputkan kata yang ingin dicari. Karena pada dasarnya, Aplikasi Kamus Bahasa Belanda ini bekerja dengan melakukan String Matching atau biasa disebut pencocokkan string berdasarkan kata – kata yang sudah terdapat di database aplikasi tersebut. Seiring dengan berkembangnya ilmu pengetahuan, pengembangan dan pengkajian terus dilakukan sehingga ditemukan beberapa metode, salah satunya adalah ExactStringMatching, artinya pencarian yang dilakukan untuk menemukkan substring/patternyangtepat sama dalam sebuah string/text.
Pada penelitian ini, penulis akan menganalisis pencocokan string dengan menggunakan algoritma Turbo Boyer-Moore dan Algoritma Not So Naive. Algoritma Turbo Boyer-Moore adalah sebuah algoritma pencocokan pola tertentu terhadap suatu kalimat atau paragraf. Algoritma ini merupakan varian dari algoritma Boyer-Moore yang memungkinkan terjadinya lompatan melewati segmen sehingga tidak memerlukan preprocessing tambahan dengan kecepatan yang baik. (Margaretha Siahaan, 2010 ). Cara kerja dari algoritma ini yaitu dari kanan ke kiri, algoritma ini akan mencocokkan karakter per karakter pattern dengan karakter pada teks yang bersesuaian sampai semua karakter di pattern sesuai. Algoritma akan memberitahukan penemuan di posisi ini. Algoritma kemudian menggeser pattern dengan memaksimalkan nilai penggeseran good-suffix dan penggeseran bad-character, sampai pattern berada di ujung teks.
Algoritma Not So Naive merupakan algoritma yang digunakan untuk melakukan proses pencocokan string. Algoritma ini merupakan variasi simpel dari algoritma Naive namun menjadi lebih efisien untuk beberapa kasus. Seperti algoritma Naive, algoritma ini memiliki fase pencarian dengan mengecek teks dan pola dari kiri ke kanan. Namun, Algoritma Not So Naive mengidentifikasi terlebih dahulu dua kasus yang dimana di setiap akhir fase pencocokan pergeseran bisa dilakukan sebanyak 2 posisi ke kanan, tidak seperti algoritma Naive yang hanya sebanyak 1
posisi. (Cantone & Faro, 2004). Sedangkan cara kerja algoritma Not So Naive yaitu dari kiri ke kanan, algoritma ini akan mencocokkan karakter per karakter pada teks sampai semua karakter sesuai.
Karena kedua algoritma memiliki cara pengecekan yang berbeda dimana algoritma not so naive mengunakan konsep dari kiri ke kanan (from left to right) sedangkan algoritma turbo boyer-mooremenggunakan konsep dari kanan ke kiri (from right to left), maka pada penelitian ini penulis akan membandingkan kedua algoritma tersebut, manakah algoritma yang lebih baik dari segi kompleksitas algoritma (ϴ) dan proses waktu yang dibutuhkan.
1.2. Rumusan Masalah
Berdasarkan dari latar belakang di atas, rumusan masalah yang akan dibahas adalah masih sedikitnya aplikasi kamus Bahasa Belanda - Indonesia dengan menggunakan Algorima Turbo Boyer-Moore dan Not So Naive, serta untuk mengetahui performa dari kedua algoritma tersebut pada aplikasi kamus Bahasa Belanda – Indonesia agar diperoleh hasil perbandingan antara algoritma Turbo Boyer-Moore dan Not So Naivedalam pencarian kata pada Kamus Bahasa Belanda – Indonesia dengan kompleksitas algoritma (ϴ) dan running time sebagai parameter pembanding.
1.3. Batasan Masalah
Batasan masalah dalam penelitian ini adalah sebagai berikut:
1. Mengukur kemampuan sistem dalam menemukan kata yang diinputkan berdasarkan kata kunci atau query yang diberikan oleh pengguna serta melakukan proses terjemahan arti, pengukuran kecepatan waktu proses (running time) pencarian string/kata dalam satuan waktu (ms).
2. Parameter yang digunakan untuk membandingkan algoritma Turbo Boyer- Moore dan algoritma Not So Naiveadalah waktu proses dan kompleksitas menggunakan Big-ϴ.
3. Jumlah kata yang tersedia pada database adalah ±2000 kata.
1.4. Tujuan Penelitian
Tujuan dari penelitian ini adalah untuk mengetahui perbandingan kompleksitas algoritma yang lebih baik antara algoritma Turbo Boyer-Mooredan Not So Naiveserta untuk mengukur tingkat perbandingan waktu proses dalam satuan waktu (ms) dalam pencarian kata pada Kamus Bahasa Belanda - Indonesia.
1.5. Manfaat Penelitian
Manfaat dari penelitian ini adalah untuk mengetahui algoritma mana yang memiliki waktu proses yang lebih cepat antara algoritma Turbo Boyer-Mooredan Not So Naivedalam pencarian kata pada Kamus Bahasa Belanda – Indonesia.
1.6. Metode Penelitian
Tahapan yang dilakukan dalam penelitian ini adalah sebagai berikut:
1. Studi Literatur
Pada tahap ini penulis melakukan pencarian dan pengumpulan data dengan cara mengumpulkan referensi yang terkait dengan materi algoritma Turbo Boyer-Moore dan Not So Naive. Referensi yang digunakan dapat berupa buku, jurnal, artikel, paper, dan makalah baik berupa media cetak maupun media internet mengenai Algoritma pencarian string (String Matching).
2. Analisis dan Perancangan
Berdasarkan observasi yang telah dilakukan, langkah selanjutnya adalah melakukan perancangan aplikasi kamus. Bahasa pemrograman yang digunakan oleh penulis adalah java yang akan dijalankan dalam sistem operasi android.
Kemudian dilakukan perancangan flow diagram dengan UML.
3. Implementasi
Berdasarkan hasil perancangan yang telah dibuat, penulis mengimplementasikannya menjadi sebuah aplikasi platform android dengan menggunakan bahasa pemrograman java.
4. Pengujian
Aplikasi yang telah dibuat selanjutnya diuji coba. Pengujian ini dilakukan untuk menganalisis proses runtime dan hasil tampilan user interface. Apabila dalam proses pengujian ini terjadi error, maka akan dilakukan kembali evaluasi pada program melalui proses debugging ( perbaikan ). Pengujian dan evaluasi ini dimaksudkan untuk mendapatkan hasil yang maksimal.
5. Dokumentasi
Pada tahap ini pendokumentasian dilakukan selama penelitian dalam bentuk skripsi.
1.7. Sistematika Penulisan
Sistematika penulisan dari skripsi ini adalah sebagai berikut:
BAB 1 PENDAHULUAN
Bab ini menjelaskan latar belakang pemilihan judul skripsi “Analisis Dan Perbandingan Algoritma Turbo Boyer-Moore Dengan Algoritma Not So Naive Pada Aplikasi Kamus Bahasa Belanda - Indonesia Berbasis Android”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian dan sistematika penulisan.
BAB 2 LANDASAN TEORI
Bab ini berisi tentang penjelasan singkat mengenai Algoritma, Algoritma Turbo Boyer-Moore, Algoritma Not So Naive, Sting Matching, Kamus, dan Android.
BAB 3 ANALISIS DAN PERANCANGAN
Bab ini membahas analisis dan perancangan sistem. Tahap analisis menggambarkan dan menjabarkan kegiatan yang dilakukan pada sistem yang sedang berjalan sedangkan tahap perancangan aplikasi seperti pembuatan flow chart, tampilan interface aplikasi, algoritma pemrograman dan UML (Unified Modeling Language).
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Bab ini berisi tentang pembuatan sistem dan coding sesuai dengan analisis dan perancangan, kemudian melakukan pengujian sistem serta membahas hasil dari sistem.
BAB 5 KESIMPULAN DAN SARAN
Bab ini menjelaskan hasil akhir dari semua penulisan yang dikerjakan yaitu simpulan dan saran yang berisi masukan – masukan untuk mengembangkan dan melengkapi aplikasi yang sudah dibangun di masa yang mendatang.
BAB 2
LANDASAN TEORI
2.1. Algoritma
Kata algoritma diambil dari nama ilmuwan muslim dari Uzbekistan, yaitu Abu Ja’far Muhammad bin Musa Al- Khuwārizmi (780-846M), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12
“Algorithmi de numero Indorum”. Awalnya kata algoritma adalah istilah yang merujuk kepada aturan-aturan aritmatis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik Arab. Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan. Pemecahan sebuah masalah pada hakekatnya adalah menemukan langkah-langkah tertentu yang jika dijalankan efeknya akan memecahkan masalah tersebut (Wahid, 2004).
Dalam matematika dan komputasi, algoritma atau algoritme merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
2.2. Algoritma String Matching (Pencocokan string)
Algoritma pencocokan string merupakan operasi penting yang umumnya terdapat di banyak aplikasi. Algoritma ini merupakan masalah penting dalam pengolahan teks dan umumnya digunakan untuk menemukan satu pola dimensi pada teks.
Algoritma pencocokan string (String Matching) juga disebut sebagai algoritma pencarian string adalah kelas yang dominan dari algoritma string yang bertujuan untuk menemukan satu atau semua kejadian dari suatu string dalam kelompok yang lebih besar dari teks. (Cormen, T.H. 2001). Algoritma pencocokan string adalah salah satu algoritma yang paling umum digunakan untuk ilmu kedokteran, keamanan jaringan, pemrosesan gambar, dll. Efek dari algoritma pencocokan string adalah ukuran dalam hal kompleksitas waktu dan ruang. Kompleksitas waktu dan ruang dihitung dalam dua tahap fase preprocessing dan fase pencarian algoritma. (Anil Kumar, 2014) Tahap Algoritma pencocokan string dibagi menjadi dua kelas yaitu Exact dan Approximate. Pada kelas pencocokan Exact string pola sepenuhnya dibandingkan dengan jendela teks yang dipilih (selected text window) dari sebuah string dan menampilkan posisi awal suatu indeks. Pada kelas pencocokan Approximate string jika ada beberapa bagian dari pola cocok dengan teks yang dipilih (selected text window) maka hasil akan ditampilkan langsung. Tujuan dari algoritma pencocokan string adalah untuk menemukan semua kejadian dari pola yang ada dalam sebuah string teks.
2.2.1. Algoritma Turbo Boyer – Moore
Algoritma Turbo Boyer – Moore merupakan perbaikan dari algoritma Boyer- Moore. Algoritma ini tidak memerlukan preprocessing tambahan dan hanya membutuhkan ruang ekstra konstan sehubungan dengan algoritma Boyer-Moore terdahulu (G.L. Prajapati , 2016). Algoritma Turbo Boyer Moore adalah sebuah algoritma pencocokan pola tertentu terhadap suatu kalimat atau paragraf.
Algoritma ini merupakan varian dari Algoritma Boyer Moore yang memungkinkan terjadinya ‘lompatan’ melewati segmen yang tidak memerlukan preprocessing tambahan dengan kecepatan yang baik. Menurut Christian Thierry Charras dalam bukunya Handbook of Exact String Matching Algorithm mengatakan algoritma Boyer-Moore adalah algoritma yang paling efisien pada aplikasi umum. Algoritma Boyer-Moore bekerja dengan memulai pencocokan
pattern dari kanan bukan dari kiri. Dengan memulai pencocokan karakter dari kanan, maka akan lebih banyak informasi yang didapat (Charras, 1997).
Algoritma Turbo Boyer Mooremengambil metode pencarian string boyer moore yaitu good suffix dan bad character suffix.Akan tetapi, Algoritma Turbo Boyer Moore berbeda dengan Algoritma Boyer Moore,algoritma ini dimungkinkan terjadinya ‘lompatan’ melewati segmen mengingat faktor dariteks yang cocok dengan akhiran dari pattern selama attempt terakhir sehingga memanfaatkanteknik turbo shift. Turbo-shift dapat terjadi jika terdapat substring dari pattern yang sama dengan substring pada teks yang sudah diperiksa sebelumnya.
2.2.1.1.Cara Kerja Algoritma Turbo Boyer – Moore Cara kerja algoritma Turbo Boyer Mooreini adalah :
Pertama : inisialisasi, karena algoritma ini menggunakan good suffix shiftdan bad charactershiftdari Algoritma Boyer Moore maka untuk inisialisasi dijalankan prosedur preBmBc danpreBmGs seperti Algoritma Boyer Moore.
Kedua : Melakukan proses pencocokan karakter pada pattern dengan karakter pada teks. Jikaterjadi ketidakcocokan maka dilakukan pergeseran terbesar berdasarkan tabel BmBc, tabelBmGs dan turbo shift.
Pada fase pencarian kata dalam algoritma Turbo Boyer Moore, proses yang dilakukanhampir sama dengan fase pencarian pada Algoritma Boyer Moore. Yang membedakan adalahadanya variabel yang berfungsi untuk menampung nilai pergeseran apabila pada putaransebelumnya nilai yang diambil untuk pergeseran berasal dari tabel good suffix shift. Nilai ininantinya akan digunakan sebagai nilai yang mungkin digunakan untuk pergeseran pattern.Fase inisialisasi pada algoritma ini sama dengan fase inisialisasi pada algoritma Boyer Moore,yaitu mempunyai kompleksitas waktu dan ruang sebesar θ(n + σ) dengan σadalah besarruang alfabet. Sedangkan pada fase pencocokan, algoritma ini mempunyai kompleksitas waktu sebesar θ(m) dengan jumlah pencocokan karakter pada algoritma ini adalah 2m (Margaretha, 2010).
Berikut ini akan dijelaskan secara singkat cara pencarian pola pada Algoritma Turbo Boyer – Moore,
Misalkan :
Teks(y) : A N N I S A S I L V Y Pola (x) : N I S A
Pertama akan dilakukan perhitungan penilaian dengan tabel BmBc dan tabel BmGs.
• Cara menentukan nilai BmBc pada algoritma Turbo Boyer – Moore : Rumus BmBc = m – i – 1 dimana,
m = panjang pola
i = posisi index pada pola
Tabel 2. 1 Perhitungan Tabel BmBc
i 0 1 2 3
x N I S A
bmBc 3 2 1 4
• Cara menentukan nilai BmGs pada algoritma Turbo Boyer – Moore : Rumus BmGs = bmGs[(m - 1 – suff[i])] = (m - 1 - i)dimana,
m = panjang pola
suff [i] = posisi suffix pada index pola i = posisi index pada pola
Tabel 2. 2 Perhitungan Tabel BmGs
i 0 1 2 3
x N I S A
Suff [i] 0 0 0 4
bmGs 3 3 3 1
Tabel 2. 3 Tabel BmGs dan BmBc
i 0 1 2 3
x[i] N I S A suff[i] 0 0 0 4 bmGs[i] 3 3 3 1
bmBc 3 2 1 4
Pencarian Pola 1 :
Tabel 2. 4 Percobaan Temu Pola Pertama
y A N N I S A S I L V Y
x N I S A
Adanya perbedaan pada index I, maka dilakukan perhitungan : - BmGs [3] = BmBc [I] – m + (index bawah + 1)
BmGs [3] = 2 – 4 + 3 1 = 1 - Shift by 1
- Sehingga geser polasebanyak 1 (nilai maksimal dari kedua perhitungan)
Pencarian Pola 2 :
Tabel 2. 5 Percobaan Temu Pola Kedua
y A N N I S A S I L V Y
x N I S A
Adanya perbedaan pada index S, maka dilakukan perhitungan : - GeserBmBc [S] – m + (index bawah + 1)
1 – 4 + 3 = 0
- BmGs[3] = 1,Shift by 1
- Sehingga geser polasebanyak 1 (nilai maksimal dari kedua perhitungan)
Pencarian Pola 3 :
Tabel 2. 6 Percobaan Temu Pola Ketiga
y A N N I S A S I L V Y
x N I S A
Pada temu pola tiga, pola yang dicari telah sesuai dengan teks, maka pola bergeser sebanyak 3
- BmGs [0], Shift by 3
Pencarian Pola 4 :
Tabel 2. 7 Percobaan Temu Pola Keempat
y A N N I S A S I L V Y
x N I S A
Adanya perbedaan pada index L, maka dilakukan perhitungan : - BmGs [3] = BmBc [L] – m + (index bawah + 1)
BmGs [3] = 2 – 4 + 3 1 = 1 - Shift by 1
- Sehingga geser polasebanyak 1 (nilai maksimal dari kedua perhitungan)
Pencarian Pola 5 :
Tabel 2. 8 Percobaan Temu Pola Kelima
x A N N I S A S I L V Y
y N I S A
Adanya perbedaan pada index V, maka dilakukan perhitungan : - BmGs [3] = BmBc [V] – m + (index bawah + 1)
BmGs [3] = 2 – 4 + 3 1 = 1 - Shift by 1
- Sehingga geser polasebanyak 1 (nilai maksimal dari kedua perhitungan)
Pencarian Pola 6 :
Tabel 2. 9 Percobaan Temu Pola Keenam
x A N N I S A S I L V Y
y N I S A
Pada temu pola 6, tidak perlu dilakukan pergeseran lagi, karena sudah sampai pada indeks terakhir.
Algoritma Turbo Boyer-Moore merupakan variasi dari algoritma Boyer-Moore yang tidak memerlukan pra-proses tambahan seperti pada algoritma Boyer-Moore.
Kompleksitas waktu pada fase pencarian adalah O(n) dan untuk kasus terburuk akan terjadi 2n kali perbandingan karakter. Algoritma Turbo Boyer-Moore melakukan perbaikan terhadap waktu untuk kasus terburuk pada algoritma Boyer- Moore. Namun, algoritma ini memerlukan space memori yang lebih banyak dalam impelementasinya (Margaretha, 2010).
2.2.2. Algoritma Not So Naive
Algoritma Not So Naivemerupakan variasi turunan dari algoritma Naiveatau yang sering disebut algoritma Brute Force. Algoritma ini memiliki pola pencarian dari kiri ke kanan. Algoritma Not SoNaivekemudianakan mengidentifikasi terlebih dahulu dua kasus yang dimana di setiap akhir fase pencocokan pergeseran dapat dilakukan sebanyak 2 posisi ke kanan, tidak seperti algoritma Naive yang dimana pergeseran tetaplah sebanyak 1 posisi ke kanan.
Diasumsikan bahwa P[0] ≠ P[1]. Jika P[0] = T[s] dan P[1] = T[s+1], maka di akhir fase pencocokan pergeseran s bisa dilakukan sebanyak 2 posisi, karena P[0] ≠ P[1] = T[s+1]. Dan jika P[0] = P[1]. Jika P[0] = T[s] tapi P[1] ≠ T[s+1], maka sekali lagi pergesaran s dapat dilakukan sebanyak 2 posisi (Cantone & Faro, 2003) dimana P adalah Pattern, T adalah Teks dan s adalah nilai posisi.
2.2.2.1. Cara Kerja Algoritma Not So Naïve
Cara kerja dari Algoritma Not So Naive yaitumembandingkan suatu karakter dilakukan dengan posisi pola mengikuti urutan 1, 2, ..., m-2, m-1, 0 dimana m adalah panjang pattern. Pada setiap percobaan dimana “jendela” diposisikan di teks faktor y[i..j + m-1]. Jika x[0] = x[1] dan x[1] ≠ y[j+1] atau jika x[0] ≠ x[1] dan x[1]
= y[j+1] polanya akan digeser sebanyak 2 posisi di setiap akhir percobaan dan sebanyak 1 posisi jika kondisi di atas tidak terpenuhi dimana y adalah teks dan x adalah pattern. Dengan demikian tahap preprocessing dapat dilakukan dalam ruang dan waktu yang konstan. (Charras, 1997).
Berikut ini merupakan contoh untuk mengetahui cara kerja dari Algoritma Not So Naive dengan teks ANNISASILVY dan pola yang akan dicari ialah NISA.
Variabel yang akan digunakan pada percobaan ini adalah variabel k yang akan diinisialisasi dengan nilai 1 dan variabel ell yang akan diinisialisasi dengan nilai 2.
Dimana kedua variabel tersebut akan digunakan untuk nilai pergeseran pada proses pencocokan. Untuk karakter urutan 0 dan karakter urutan 1 pada tekslebih baik tidak mengalami kecocokan ( x[0] != x[1] ) untuk memudahkan dalam inisialisasi variabel k dan ell
Tabel 2. 10 Percobaan Pertama Proses Pencocokan Algoritma Not So Naïve
I 0 1 2 3 4 5 6 7 8 9 10
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.7perbandingan karakter pertama (x[1] !=y [j+1]) mengalami ketidakcocokan. Maka akan dilakukan percobaan kedua dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k.
Tabel 2. 11 Percobaan Kedua Proses Pencocokan Algoritma Not So Naïve
II 0 1 2 3 4 5 6 7 8 9 10
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.8perbandingan karakter pertama ( x[1] != y [j+1] ) belum mengalami kecocokan karakter. Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k.
Tabel 2. 12 Percobaan Ketiga Proses Pencocokan Algoritma Not So Naïve
III 0 1 2 3 4 5 6 7 8 9 10
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.9perbandingan karakter mengalami kecocokan ( x[1] == y[j+1] ) dimulai dari perbandingan karakter N, I, S, A. Keempat karakter sudah mengalami kecocokan, maka output teks akan ditampilkan. Namun algoritma Not So Naive belum berhenti dan akan melakukan percobaan sampai sisa teks lebih kecil dari
pola. Pada percobaan selanjutnya, posisi pola akan digeser sebanyak 2 posisi sesuai dengan nilai variabel ell.
Tabel 2. 13 Percobaan Keempat Proses Pencocokan Algoritma Not So Naïve
IV 0 1 2 3 4 5 6 7 8 9 10
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.10perbandingan karakter pertama ( x[1] != y[j+1] ) tidak mengalami kecocokan, namun pada karekter kedua mengalami kecocokan. Maka pada hal ini saat perbandingan karakter utama tidak terjadi kecocokan, maka posisi pola akan digeser sebanyak 1 posisi sesuai dengan nilai variabel k.
Tabel 2. 14 Percobaan Kelima Proses Pencocokan Algoritma Not So Naïve
V 0 1 2 3 4 5 6 7 8 9 10
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.11 perbandingan karakter pertama ( x[1] != y[j+1] ) tidak mengalami kecocokan, namun pada karekter kedua mengalami kecocokan. Maka pada hal ini saat perbandingan karakter utama tidak terjadi kecocokan, maka posisi pola akan digeser sebanyak 1 posisi sesuai dengan nilai variabel k.
Tabel 2. 15 Percobaan Kelima Proses Pencocokan Algoritma Not So Naïve
VI 0 1 2 3 4 5 6 7 8 9 10
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.12perbandingan karakter pertama mengalami kecocokan ( x[1] ==
y[j+1] ). Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 2 posisi sesuai dengan nilai variabel ell.
Tabel 2. 16Percobaan Kelima Proses Pencocokan Algoritma Not So Naïve
VI 0 1 2 3 4 5 6 7 8 9 10 11
Teks A N N I S A S I L V Y
Pola N I S A
Pada Tabel 2.13perbandingan karakter pertama tidak mengalami kecocokan ( x[1]
!= y[j+1]). Maka akan dilakukan percobaan selanjutnya dengan posisi pola digeser sebanyak 1 posisi sesuai dengan nilai variabel k. Namun karena sisa teks lebih kecil dari pada pola, maka pencarian berhenti di tahap percobaan ini.
2.3. Kompleksitas Algoritma
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk mendapatkan hasil yang diinginkan.
Algoritma yang dapat memperoleh hasil yang diinginkan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu yang lama untuk memperoleh hasil tersebut mempunyai kompleksitas yang tinggi. Dua hal penting untuk mengukur efektivitas suatu algoritma yaitu kompleksitas ruang (keadaan) dan kompleksitas waktu.
Kompleksitas ruang berkaitan dengan sistem memori yang dibutuhkan dalam
eksekusi program. Kompleksitas waktu dari algoritma berisi ekspresi bilangan dan jumlah langkah yang dibutuhkan sebagai fungsi dari ukuran permasalahan.
Analisa asimtotik menghasilkan notasi Ο (Big O) dan dua notasi untuk komputer sain yaitu ϴ (Big Theta) dan Ω (Big Omega).
Kinerja algoritma dibuktikan dengan menjumlahkan bilangan bulat dari masing-masing operasi ketika algoritma di jalankan. Kinerja sebuah algoritma dievaluasi sebagai fungsi ukuran masukan n dan konstanta modulo pengali yang digunakan. Pada penelitian ini kompleksitas yang digunakan adalah Big(ϴ).
2.4. Kamus
Menurut seorang ahli bahasa, Kamus merupakan khazanah perbendaharaan kata suatu bahasa yang menggambarkan tingkat peradaban bangsa pemiliknya. Kamus juga dapat diartikan sebuah buku yang memuat kata atau istilah yang disusun menurut abjad berikut keterangan dan maknanya. Kamus juga dapat digunakan sebagai buku rujukan yang menerangkan makna kata – kata yang berfungsi untuk membantu seseorang mengenal perkataan baru.
2.5. Android
Android merupakan sistem operasi untuk telepon seluler yang berbasis Linux.
Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka sendiri untuk digunakan oleh bermacam peranti bergerak.
Android ini diresmikan pada tahun 2007 seiring dengan berdirinya Open Handset Alliance-konsorsium hardware, software, dan perusahaan telekomunikasi yang ditujukan untuk memajukan standar perangkat selular. Smartphone yang tersedia untuk publik pertama kalinya yang menjalankan Android adalah HTC Dream, yang dirilis pada 22 Oktober 2008.
Pada Juli 2005, Google bekerjasama dengan Android Inc., perusahaan yang berada di Palo Alto, California Amerika Serikat. Para pendiri Android Inc. bekerja pada
Google, di antaranya Andy Rubin, Rich Miner, Nick Sears, dan Chris White. Saat itu banyak yang menganggap fungsi Android Inc. hanyalah sebagai perangkat lunak pada telepon seluler. Sejak saat itu muncul rumor bahwa Google hendak memasuki pasar telepon seluler. Di perusahaan Google, tim yang dipimpin Rubin bertugas mengembangkan program perangkat seluler yang didukung oleh kernel Linux. Hal ini menunjukkan indikasi bahwa Google sedang bersiap menghadapi persaingan dalam pasar telepon seluler.
2.6. Versi Android
Android memiliki beberapa versi dalam perkembangannya, berikut ini adalah versi android dari awal hingga yang terakhir :
Tabel 2. 17Versi Android
Android Versi Tanggal Rilis Level API Android 1.0 23 September 2008 API Level 1 Anndroid 1.1 9 Februari 2009 API Level 2 Andoroid 1.5 30 April 2009 API Level 3 Android 1.6 15 September 2009 API Level 4 Android 2.0
Android 2.0.1 Android 2.1
26 Oktober 2009 3 Desember 2009 12 Januari 2010
API Level 5 API Level 6 API Level 7 Android 2.2 – 2.2.3 20 Mei 2010 API Level 8 Android 2.3 – 2.3.2
Android 2.3.3 – 2.3.7
6 Desember 2010 9 Februari 2011
API Level 9 API Level 10 Android 3.0
Android 3.1 Android 3.2
22 Februari 2011 10 Mei 2011 15 Juli 2011
API Level 11 API Level 12 API Level 13 Android 4.0 – 4.0.2
Android 4.0.3 – 4.0.4
19 Oktober 2011 16 Desember 2011
API Level 14 API Level 15
Android 4.1 Android 4.2 Android 4.3
9 Juli 2012
13 November 2012 24 Juli 2013
API Level 16 API Level 17 API Level 18 Android 4.4 31 Oktober 2013 API Level 19 Android 5.0 25 Juni 2014 API Level 21 Android 6.0 28 Mei 2015 API Level 23 Android 7.0 22 Agustus 2016
Gambar 2. 1 Versi Android
Gambar 2.1. menunjukkan logo – logo android dimulai dari android versi 1.0 yang diwakili gambar Alpha, android versi 1.1 yang diwakili gambar Beta, android versi 1.2 – 1.5 yang diwakili gambar Cupcake, android versi 1.6 yang diwakili gambar Donut, android versi 2.0 – 2.1 yang diwakili gambar Eclair, android versi 2.2 – 2.2.3 yang diwakili gambar Froyo, android versi 2.3 – 2.4 yang diwakili gambar Gingerbread, android versi 3.0 – 3.2 yang diwakili gambar Honeycomb, android versi 4.0 yang diwakili gambar Ice Cream Sandwich, android versi 4.1 – 4.3 yang diwakili gambar Jelly Bean, android versi 4.4 yang diwakili gambar
KitKat, android versi 5.0 yang diwakili gambar Lolipop, android versi 6.0 yang diwakili gambar Marshmallow dan android versi 7.0 yang diwakili gambar Nougat.
2.7. Penelitian yang Relevan
1. Pada penelitian yang telah dilakukan oleh Ricky Wijaya dalam skripsi yang berjudul “Perbandingan Algoritma String Matching Not So Naive Dan Skip Search Pada Platform Android ” menghasilkan bahwa Proses searching dari Algoritma Not So Naive dilakukan dengan mencocokan teks dan pola dari kiri ke kanan. Apabila ditemukan kecocokan antar karakter pola dan teks, maka posisi pola akan bergeser sebanyak 2 langkah ke kanan (Ricky Wijaya, 2016).
2. Pada penelitian yang telah dilakukan oleh Irvi Oktanisa dalam skripsi yang berjudul “Perbandingan Algoritma Galil-Seiferas Dan Algoritma Not So Naϊve Dalam Aplikasi Kamus Hukum” menghasilkan bahwa Kompleksitas waktu pada algoritma Galil-Seiferas menggunakan waktu ukurann ϴ(n) dan algoritma Not So Naϊve menggunakan kompleksitas waktu ukuran ϴ(m x n).
3. Pada penilitian yang telah dilakukan oleh Margaretha Siahaan dalam makalah yang berjudul “Perbandingan Algoritma Boyer-Moore dan Turbo Boyer-Moore dalam Query MySQL” menghasilkan bahwa Meski menghasilkan kecepatan yang hampir sama, algoritma Turbo Boyer-Moore dipilih untuk digunakan dalam pengaksesan basis data karena dapat mengurangi kompleksitas waktu kasus terburuk dari algoritma Boyer- Moore (Margaretha Siahaan, 2010).
4. Pada penelitian yang telah dilakukan oleh Nurmardiah Siregar dalam skripsi yang berjudul ” Perbandingan Algoritma Turbo Boyer Moore Dan String Matching On Ordered Alphabets Untuk Aplikasi Kamus Fisika Berbasis Android” menghasilkan bahwa Algoritma Turbo Boyer Moore melakukan pencarian kata lebih cepat bila dibandingkan dengan String
Matching on Ordered Alphabets karena algoritma Turbo Boyer Moore memaksimalkan nilai pergeseran pattern sehingga kata yang dicari lebih cepat ditemukan dan untuk running time Turbo Boyer Moore lebih cepat dari String Matching on ordered Alphabets(Nurmardiah Siregar, 2016).
5. Pada penelitian yang telah dilakukan oleh Vici Indah dalam skripsi yang berjudul “Perbandingan Algoritma Knuth Morris Pratt Dan Boyer Moore Pada Aplikasi Kamus Bahasa Indonesia-Korea” menghasilkan bahwa Kelemahan Algoritma Knuth Morris Pratt dalam penelitian ini adalah lebih lambat dibandingkan Algoritma Boyer Moore dalam pencarian kata yang pendek karena semakin sedikit jumlah kata yg dicari maka akan semakin lama waktu yg dibutuhkan untuk pencarian kata [10].
BAB 3
ANALISIS DAN PERANCANGAN
3.1. Analisis
Pada bab ini akan membahas tentang analisis serta perancangan sistem yang dibuat secara keseluruhan. Baik kinerja sistem maupun proses perancangan aplikasi pada sistem. Serta membahas perancangan perbandingan algoritma Turbo Boyer-Moore dan Not So Naive, membuat pemodelan sistem seperti merancang alur kerja sistem (flowchart). Mempelajari konsep dan proses kerja algoritma dan merancang antarmuka pengguna (user interface).
3.1.1. Analisis Masalah
Analisis masalah merupakan proses mengidentifikasi sebab dan akibat dirancangnya sebuah sistem agar sistem tersebut dapat berjalan sebagaimana mestinya sesuai dengan tujuan sistem itu dibuat. Menurut kebiasaan masyarakat selama ini, jika seseorang ingin mencari arti dari suatu kata bahsa asing, pasti menggunakan kamus bahasa asing manual. Seriring perkembangan teknologi, masyarakat sudah mulai meninggalkan penggunaan kamus manual dan memilih kamus digital atau yang lebih sering dikenal sebagai kamus online pada smartphone. Aplikasi kamus pada smartphone tidak mencari kata secara manual.
Pencarian definisi kata yang telah tersimpan sebagai fieldnya kemudian mendapat hasil yang seksama adalah masalah yang akan diselesaikan dengan menggunakan sistem ini.
Untuk mengidentifikasi masalah tersebut, digunakan diagram Ishikawa (fishbone diagram). Diagram Ishikawa berbentuk seperti ikan yang strukturnya
terdiri dari kepala ikan (fish’s head) dan tulang-tulang ikan (fish’s bones). Nama attau judul dari masalah yang diidentifikasi terletak pada bagian kepala ikan.
Sedangkan tulang-tulang ikan menggambarkan penyebab-penyebab masalah tersebut (Whitten, J.L. & Bentley, L.D. 2007). Diagram Ishikawa pada sistem ini dapat dilihat pada Gambar 3.1
Gambar 3. 1 Diagram Ishikawa
3.1.2. Analisis Persyaratan
Dalam membangun sebuah sistem, perlu dilakukan sebuah tahap analisis persyaratan. Analisis persyaratan terbagi dua yaitu, analisis persyaratan fungsional dan persyaratan non-fungsional. Persyaratan fungsional mendeskripsikan aktivitas yang disediakan oleh sistem. Sedangkan persyaratan non-fungsional mendeskripsikan fitur, karakteristik dan batasan lainnya.
3.1.2.1. Persyaratan Fungsional
Persyaratan fungsional mendeskripsikan aktivitas yang disediakan oleh sistem.
Ada beberapa hal yang menjadi persyaratan fungsional pada aplikasi Kamus Bahasa Belanda berikut :
1. Sistem ini akan melakukan pencocokan string terhadap kata yang diinputkan oleh user.
2. Sistem dapat menghasilkan kata terjemahan dari inputan yang dicari dengan menggunakan Algoritma Turbo Boyer-Moore dan Algoritma Not So Naive.
3. Sistem melakukan inputan berupa kata.
4. Sistem menampilkan hasil pencarian berupa bentuk kata ataupun berupa kalimat.
3.1.2.2. Persyaratan Non-Fungsional
Persyaratan non-fungsional sistem merupakan karakteristik atau batasan yang menentukan kepuasan pada sebuah sistem seperti kinerja, kemudahan pengguna, biaya dan kemampuan sistem bekerja tanpa mengganggu fungsionalitas sistem lainnya. Terdapat beberapa persyaratan non-fungsional yang harus dipenuhi diantaranya :
1. Performa
Sistem yang akan dibangun harus dapat menampilkan hasil pencarian yang sesuai dengan apa yang dicari.
2. Mudah digunakan
Sistem yang akan dibangun harus mudah digunakan, artinya sistem ini akan mudah digunakan oleh user dengan tampilan yang sederhana dan dapat dimengerti.
3. Manajemen kualitas
Sistem yang akan dibangun harus memiliki kualitas yang baik yaitu tidak mempersulit user untuk melakukan pencarian kata.
3.1.3. Pemodelan
Pemodelan sistem dilakukan untuk memperoleh gambaran cara kerja sistem dan 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 penulis menggunakan Use Case Diagram, Activity Diagram, dan Sequence Diagram untuk mendesain dan merancang aplikasi Kamus Bahasa Belanda – Indonesia.
3.1.3.1. Use Case Diagram
Use Case Diagram adalah sebuah diagram yang dapat mempresentasikan interaksi yang terjadi antara user dengan sistem. Diagram use case ini mendeskripsikan siapa saja yang menggunakan sistem dan bagaimana cara mereka berinteraksi dengan sistem. Use Case Diagram dari sistem yang akan dibangun dapat ditunjukkan pada Gambar 3.2
Gambar 3. 2Use Case Diagram
Di dalam use case diagram digambarkan seorang aktor yang akan berperan yaitu user. Untuk memperoleh definisi dari bahasa Belanda maka user harus memilih algoritma yang akan digunakan antara Algoritma Turbo Boyer – Moore dan Algoritma Not So Naive. Definisi atau bahasa Belanda yang dicari akan diinputkan dalam search box yang disediakan.
Selanjutnya user memilih bentuk pencarian yang akan digunakan, apakah bahasa Belanda – Indonesia atau Bahasa Indonesia – Belanda. Setelah bentuk pencarian dipilih, lalu sistem akan melakukan pencarian dan menampilkan hasil.
Pada proses memilih algoritma yang akan digunakan, apakah Algoritma Turbo Boyer-Moore atau Algoritma Not So Naive, dapat dinyatakan dalam Tabel 3.1
Tabel 3. 1 Tabel Use Case Memilih Algoritma yang Akan Digunakan
Name Memilih Algoritma yang akan digunakan
Actors User
Description Use Case ini mendeskripsikan proses memilih algoritma, apakah Algoritma Turbo Boyer-Moore atau Algoritma Not So Naive
Basic Flow User memilih algoritma
Alternate Flow User dapat memilih algoritma Turbo Boyer-Moore atau Not So Naive
Pre Condition User ingin memilih algoritma yang ingin digunkan Post Condition User telah memilih algoritma
Pada Proses Memilih Bentuk untuk kata yang akan diartikan, dapat dinyatakan dalam Tabel 3.2
Tabel 3. 2 Tabel Use Case Memilih Bentuk untuk kata yang akan diartikan
Name Memilih bentuk untuk kata yang akan diartikan
Actors User
Description Use Case ini mendeskripsikan proses memilih bentuk kata yang akan diartikan, apakah Bahasa Belanda – Indonesia atau Bahasa Indonesia – Belanda
Basic Flow User memilih bentuk
Alternate Flow User dapat memilih bentuk dari Bahasa Belanda – Indonesia atau Bahasa Indonesia - Belanda
Pre Condition User ingin memilih bentuk untuk kata yang ingin diartikan
Post Condition User telah memilih bentuk
Pada Proses Input kata, dapat dinyatakan dalam Tabel 3.3
Tabel 3. 3 Tabel Use case Proses Input kata
Name Input kata
Actors User
Description Use Case ini mendeskripsikan penginputan kata yang ingin diterjemahkan
Basic Flow User menginput kata Alternate Flow -
Pre Condition User ingin menginput kata
Post Condition User mendapatkan hasil pencarian kata
Pada proses Algoritma Not So Naive, dapat dinyatakan dalam Tabel 3.4
Tabel 3. 4 Tabel Use Case Proses Algoritma Not So Naive
Name Algoritma Not So Naive
Actors User
Description Use Case ini mendeskripsikan proses pencarian kata menggunakan Algoritma Not So Naive
Basic Flow User memilih Algoritma Not So Naive Alternate Flow User tidak memilih algoritma
Pre Condition User ingin mencari kata
Post Condition User mendapatkan hasil pencarian kata
Pada proses Algoritma Turbo Boyer-Moore, dapat dinyatakan dalam Tabel 3.5
Tabel 3. 5 Tabel Use Case Proses Algoritma Turbo Boyer-Moore
Name Algoritma Turbo Boyer-Moore
Actors User
Description Use Case ini mendeskripsikan proses pencarian kata menggunakan Algoritma Turbo Boyer-Moore
Basic Flow User memilih Algoritma Turbo Boyer-Moore Alternate Flow User tidak memilih Algoritma
Pre Condition User ingin mencari kata
Post Condition User mendapatkan hasil pencarian kata
3.1.3.2. Activity Diagram
Activity diagram menggambarkan proses-proses yang terjadi ketika aktivitas dimulai sampai aktivitas berhenti. Diagram ini menggambarkan berbagai alur kerja dalam sistem yang sedang dirancang, bagaimana masing-masing alur kerja berawal, decision yang mungkin terjadi, dan bagaimana aktifitas atau alur kerja berakhir. Activity diagram dari sistem yang akan dibangun dapat ditunjukkan pada Gambar 3.3
Gambar 3.3Activity Diagram
Di dalam activity diagram yang terlihat pada Gambar 3.3 dapat dijelaskan bahwa user harus membuka program terlebih dahulu. Lalu user memilih algoritma yang akan digunakan, apakah itu Turbo Boyer-Moore atau Not So Naïve. Selanjutnya user memasukkan kata yang ingin dicari, lalu memilih mode terjemahan, apakah itu Bahasa Belanda – Indonesia atau Bahasa Indonesia – Belanda. Maka sistem akan melakukan pemanggilan fungsi pada algoritma dan mode yang dipilih.
Kemudian sistem akan menampilkan hasil pencarian sesuai dengan algoritma dan mode terjemahan yang telah dipilih.
3.1.3.3. Sequence Diagram
Sequence diagram adalah suatu diagram yang menggambarkan interaksi yang terjadi antar objek pada suatu sistem dalam sebuah urutan waktu atau rangkaian waktu. Sequence diagram dari sistem yang akan dibangun dijelaskan pada Gambar 3.4
Gambar 3. 4Sequence Diagram
Pada Gambar 3.4 dapat dijelaskan melalui sequence diagram mengenai informasi sistem yang berjalan saat ini, sehingga dengan adanya diagram ini dapat menggambarkan pergerakan sebuah objek dan pesan yang terjadi di dalam sistem ini.
3.2. Flowchart
Flowchart atau diagram alir merupakan gambaran atau bagan yang memperlihatkan urutan dan hubungan antar proses dengan pernyataannya (Zarlis, 2008). Gambaran ini dinyatakan dengan simbol, maka setiap simbol menggambarkan proses tertentu. Sedangkan antara proses digambarkan dengan garis penghubung.
3.2.1. Flowchart Sistem
Gambaran umum sistem dapat dilihat pada Gambar 3.5 di bawah ini.
Gambar 3. 5FlowchartSistem Kamus Bahasa Belanda – Indonesia
Pada Gambar 3.5 menggambarkan alur sistem secara umum pada kamus Bahasa Belanda – Indonesia, dimana user memilih Algoritma yang ingin digunakan untuk pencarian kata. Lalu user memilih mode terjemahan yaitu Bahasa Belanda – Indonesia atau Bahasa Indonesia – Belanda. Kemudian user memasukkan katayang ingin dicari. Maka sistem akan mencocokkan kata sesuai dengan Algoritma yang telah dipilih, lalu sistem akan menampilkan hasil
3.2.2. Flowchart Algoritma Not So Naive
Flowchart Algoritma Not So Naive dapat dilihat pada Gambar 3.6
Gambar 3. 6. Flowchart Algoritma Not So Naïve
Pada Gambar 3.6 menggambarkan alur pada proses pencarian algoritma Not So Naïve, dimana proses awal yang dilakukan adalah melihat apakah karakter urutan 0 dan 1 pada pola berupa karakter yang sama atau tidak. Jika sama, maka variabel k akan diberi nilai 2 dan variabel l diberi nilai 1 (nilai k digunakan sebagai nilai pergeseran jika saat fase pencocokan karakter di urutan 1 mengalami ketidakcocokan, dan nilai l digunakan sebagai nilai pergeseran jika saat fase
pencocokan karakter di urutan 1 mengalami kecocokan namun di urutan selanjutnya mengalami ketidakcocokan). Lalu dilanjutkan ke fase pencocokan dimana variabel x adalah panjang pola, variabel y adalah panjang teks, variabel j adalah nilai untuk perulangan pencocokan, variabel m untuk panjang pola, dan n untuk panjang teks, dari kiri ke kanan sampai string ditemukan atau posisi pola bergeser sampai penghujung teks.
3.2.3. Flowchart Algoritma Turbo Boyer-Moore
Flowchart Algoritma Turbo Boyer-Moore dapat dilihat pada Gambar 3.7
Gambar 3. 7. Flowchart Algoritma Turbo Boyer-Moore
Gambar 3.7 menggambarkan alur pada proses pencarian Algoritma Turbo Boyer-Moore, dimana proses awal yang dilakukan yaitu memasukkan teks dan
pola. Proses pencocokan teks dan pola dimulai dari karakter kanan ke kiri.
Karakter yang akan dibandingkan dimulai pada karakter paling kanan. Jika karakter tidak sesuai, maka dilakukan pergeseran berdasarkan dengan tabel bmGs dan bmGc. Lalu dilanjutkan ke fase pencocokan dimana variabel m adalah panjang pola, variabel n adalah panjang teks, variabel u adalah tempat menampung nilai pergeseran, proses pencocokan dari kanan ke kiri sampai ditemukan atau posisi pola bergeser sampai ujung teks. Jika karakter sudah sesuai maka sistem akan mengeluarkan hasil pencarian dan selesai.
3.3. Perancangan Antarmuka Sistem (Interface)
Perancangan interface bertujuan untuk memudahkan pengguna dalam menggunakan dan berinteraksi dengan sistem. Sebuah interface yang bagus adalah interface yang dirancang dengan memperhatikan kebutuhan dari pengguna, sehingga sistem yang dibangun dapat memberikan kemudahan dan kenyamanan bagi penggunanya. Interface yang dirancang diharapkan dapat menghasilkan aplikasi yang ramah pengguna (user friendly).
3.3.1. Rancangan Halaman Splash Screen
Halaman Splash Screen merupakan halaman yang pertama kali muncul pada saat aplikasi dijalankan. Rancangan splash screen dapat dilihat pada Gambar 3.8
Gambar 3. 8Splash Screen
Kamus Belanda - Indonesia
1
Keterangan :
1. Splash Screen untuk menampilkan loading saat pertama kali aplikasi dijalankan.
3.3.2. Rancangan Halaman Utama
Halaman utamaterdiri dari Toolbar, Tab Swipe Gesture, Radio Button, Text Box, Button dan List View. Rancangan tampilan halaman utama dapat dilihat pada Gambar 3.9
Gambar 3. 9 Rancangan Halaman Utama
Keterangan :
1. Toolbar menunjukkan judul dari applikasi yang dibangun
2. Tab Swipe Gesture untuk memilih algoritma yang akan digunakan 3. Text Box sebagai tempat untuk menampung kata yang akan dicari 4. Button untuk memulai pencarian
5. Radio Button untuk memilih mode terjemahan, apakah Bahasa Belanda - Indonesia atau Bahasa Indonesia – Belanda
6. List View untuk menampilkan hasil pencarian dari kata yang dicari
3.3.3. Rancangan Halaman About
Halaman About terdapat pada Action Menu yang menampilkan judul aplikasi dan nama pembuat aplikasi. Rancangan halaman About dapat dilihat pada Gambar 3.10
Gambar 3. 10 Rancangan Halaman About
Keterangan : 1. Action Menu
2. Image yang menampilkan judul dan nama pembuat aplikasi