STUDI PERBANDINGAN KINERJA TEORETIS DAN RIIL ALGORITMA EXACT STRING MATCHING APOSTOLICO-CROCHEMORE DAN
OPTIMAL MISMATCH PADA UU MD3
SKRIPSI
ASTRID NIVIA LORIAHMA SIJABAT 131401003
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2019
STUDI PERBANDINGAN KINERJA TEORETIS DAN RIIL ALGORITMA EXACT STRING MATCHINGAPOSTOLICO-CROCHEMORE DAN OPTIMAL
MISMATCH PADA UU MD3
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
ASTRID NIVIA LORIAHMA SIJABAT 131401003
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2019
PERNYATAAN
STUDI PERBANDINGAN KINERJA TEORETIS DAN RIIL ALGORITMA EXACT STRING MATCHINGAPOSTOLICO- CROCHEMORE DAN OPTIMAL MISMATCH PADA UU MD3
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali
beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, Agustus 2019
Astrid Nivia Loriahma Sijabat
UCAPAN TERIMAKASIH
Segala puji syukur, hormat serta kemulian penulis panjatkan kehadirat Allah Tritunggal yang telah memberikan berkat serta kesempatan kepada penulis mengerjakan dan menyelesaikan skripsi ini. Dalam masa pengerjaan studi dan penulisan skripsi ini, penulis telah menerima banyak dukungan dan doa, pemikiran, kerjasama, semangat, dan dana dari berbagai pihak. Pada kesempatan ini, penulis ingin mengucapkan terimakasih kepada :
1. Bapak Prof. Runtung Sitepu, S.H., M.Hum. selaku Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc Selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom. selaku dosen penguji dan Ketua Program Studi S-1 Ilmu Komputer Universitas Sumatera Utara.
4. Bapak Prof.Dr.Muhammad Zarlis selaku dosen penguji telah memberikan kritik dan saran yang membangun.
5. Ibu Sri Melvani Hardi, S.Kom, M.Kom selaku Dosen Pembimbing I yang telah banyak memberikan bimbingan dan saran serta dukungan kepada penulis.
6. Bapak Handrizal, S.Si, M.Comp.Sc selaku Dosen Pembimbing II yang telah banyak memberikan bimbingan dan saran serta dukungan kepada penulis.
7. Seluruh tenaga pengajar, Dosen dan pegawai di Fakultas Ilmu Komputer dan Tenologi Informasi Universitas Sumatera Utara
8. Terkhusus kepada orang tua penulis Bapak (Alm) E. Sijabat dan Ibu T.
Nainggolan untuk setiap doa yang dipanjatkan, keringat dan air mata yang harus menetes dalam perjuangan memberikan pendidikan yang kepada penulis, adik-adik penulis yaitu Arnold Zagola Sijabat, Boy Rizki Alan Sahler sijabat, Bella Richa Gracia Sijabat dan adek sepupu Yuliana Nainggolan untuk setiap doa, semangat, dorongan dan pengertian yang diberikan kepada penulis.
9. Kak Maya Hartina Hutagalung dan Putri Manullang yang turut membantu dalam penyelesaian skripsi.
10. Teman-Teman satu kost Gracya Malem, Dara Airani, Putri Magdalena, Helena, Natalia, yang telah memberikan doa dan dukungan selama penulis mengerjakan skripsi
11. Personil Cui-cui Star, Kak Beatrich Sinaga, Triano A Purba, Ifan Simbolon, Rio Matondang, Harnold Tampubolon yang telah memberikan doa dan dukungan selama penulis mengerjakan skripsi
12. Semua pihak yang tidak dapat disebutkan satu persatu
Terimakasih untuk semua pihak yang mendukung dan memberi semangat kepada penulis. Semoga Allah memberi limpahan berkat kepada semua pihak yang telah memberi bantuan dan dukungan serta perhatian kepada penulis dalam menyelesaikan skripsi ini. Semoga skripsi ini bermanfaat bagi penulis, pendidikan, masyarakat, organisasi atau negara.
Medan, Agustus 2019
Penulis
STUDI PERBANDINGAN KINERJA TEORETIS DAN RIIL ALGORITMA EXACT STRING MATCHINGAPOSTOLICO- CROCHEMORE DAN OPTIMAL MISMATCH PADA UU MD3
ABSTRAK
UU MD3 atau yang juga dikenal dengan UU Nomor 2 Tahun 2018 merupakan undang-undang yang mengatur tentang wewenang, tugas, hak dan kewajiban serta kode etik lembaga legislatif negara. Melalui lembaga legislatif inilah masyarakat dapat menyampaikan aspirasi. Untuk mempermudah penggunaanya didalam masyarakat dibuatlah aplikasi pencarian string berbasis desktop dengan studi kasus UU MD3. Pada peneletian ini membandingkan kompleksitas waktu (Ɵ) serta running time untuk fase preprocessing dan pencarian dari algoritma Apostolico-Crochemore dan Optimal Mismatch yang diimplementasikan didalam sistem yang di buat. Algoritma Apostolico-Crochemore memiliki rata-rata waktu pencocokan sebesar 374.8 ms, dan pada Algoritma OptimalMismatch memiliki rata-rata waktu pencocokan sebesar 350.1 ms. Kedua algoritma tersebut memiliki kompleksitas waktu sebesar Ɵ (m) dalam fase preprocessing, dan pada fase pencarian algoritma Apostolico-Crochemore memiliki kompleksitas waktu sebesar Ɵ (n), sedangkan algoritma Optimal Mismatch memiliki kompleksitas waktu sebesar Ɵ (mn).
Kata Kunci : UU MD3, UU Nomor 2 tahun 2018, Algoritma Exact String Matching, Apostolico-Crochemore, Optimal Mismatch, Notasi Asimptotik.
COMPARISON STUDY OF THEORETICAL AND REAL PERFORMANCE OF EXACT STRING MATCHING APOSTOLICO- CHROCHEMORE AND OPTIMAL MISMATCH TOWARDS LAW OF
MD3
ABSTRACT
Law of MD3or as known as Law Number 2 in 2018 is the law which regulates the authority, duty, right and obigation as well as code of ethics of state legislative institute.Through this legislative institute, society may deliver their aspirations. In order to facilitate the use in society, string search application desktop base is created using the Law of MD3 as the case study.
This research compares between time complexity (Ɵ) and running time for preprocessing fase and the searcher of algorithm Apostolico-Crochemore and Optimal Mismatch which is implemented on the created system. Algorithm Apostolico-Crochemore has time compatibility average 374.8 ms, and Algorithm Optimal Mismatch has time compatibility average 350.1 ms.
Both algorithms have time complexcity around Ɵ (m) in preprocessing face, and while algorithm Apostolico-Crochemore searcher has time complexcity around Ɵ (n), whereas algorithm Optimal Mismatch has time complexcity around Ɵ (mn).
Key word: Law of MD3, Law Number 2 in 2018, Algorithm Exact String Matching, Apoatolico-Crochemore, Optimal Mismatch, Asymptotic Notation.
BAB 1 PENDAHULUAN
1.1. Latar Belakang
Sebagai negara demokratis, maka masyarakat indonesia memiliki hak setara dalam menyampaikan pendapat dalam pemerintahan. Dalam lembaga pemerintahan, warga negara diwakilkan oleh MPR, DPD, DPR, DPRD. Melalui lembaga legislatif negara inilah masyarakat dapat menyampaikan aspirasi. Cara kerja, kode etik serta wewenang dan tugas ini diatur dalam UU MD3. Maka penting untuk masyarakat dapat memahami cara kerjanya.
Sudah terdapat UU MD3 dalam bentuk teks yang dijual bebas dikalangan masyarakat. Namun sekalipun data disimpan dalam berbagai cara, teks tetap menjadi bentuk utama dalam proses pertukaran informasi. Hal ini terutama terlihat jelas pada literatur atau linguistik dimana data terdiri dari corpus besar dan kamus. Hal ini juga berlaku untuk ilmu komputer dimana sejumlah besar file disimpan dalam bentuk file linear (Charras, 2004). Manusia sebagai pemilik atau pengguna sebuah dokumen berupa teks terkadang hanya membutuhkan sebagian kecil informasi dari seluruh teks yang ada. Informasi yang dimaksud adalah string, atau yang lebih sering disebut pattern, dalam sebuah dokumen teks.
Berbagai aplikasi yang terdapat dalam komputer maupun perangkat mobile umumnya menyediakan fitur pencarian string di dalamnya.
Dalam pencarian string, diperlukan algoritma untuk mencocokkan string yang dicari dengan semua string yang terdapat dalam dokumen teks tersebut.
Pencocokan string atau string matching adalah proses pencarian semua kemunculan string pendek P[0..n-1] yang disebut pattern di string yang lebih panjang T[0..m-1] yang disebut teks. (Kumara, 2008).
Berdasarkan arah pencocokannya, algoritma pencocokan string dibagi menjadi 3 kategori yaitu dari kiri ke kanan, dari kanan ke kiri, dan dengan urutan yang ditentukan secara spesifik. Pencocokan dari kiri ke kanan merupakan cara yang natural karna sesuai dengan arah membaca, pencocokan string dari kanan ke kiri merupakan metode yang dianggap efisien dalam praktiknya, dan pencocokan
string dari arah yang ditentukan secara spesifik merupakan algoritma yang baik secara teoritis (Sagita, 2013).
Algoritma Apostolico-Crochemore merupakan algoritma pencarian string yang mencocokan string dari kiri ke kanan. Algoritma yang melakukan perbandingan karakter sebanyak 3/2 n pada kasus terburuknya. Menggunakan tabel pergeseran KmpNext pada fase preprocessing. Algoritma ini merupakan perbaikan dari algoritma KMP karena algoritma ini memiliki kompleksitas waktu yang lebih baik dari algoritma KMP.
Algoritma Optimal Mismatch mencari pola karakter dari frekuensi yang paling sedikit hingga yang paling banyak pada setiap karakter dalam kumpulan teks, sehingga dapat juga disebut pencarian sekuensial (sequential search). Posisi pencarian string dari kanan ke kiri, dan terdapat tiga tahap yang dilakukan sebelum proses pecarian string dikerjakan.
Kinerja teoritis algoritma yang digunakan untuk mencocokkan string diukur berdasarkan kompleksitas (big Ө), waktu yang dibutuhkan untuk mencocokkan pattern (milisekon) untuk berbagai panjang pattern P[0..n-1] dan waktu (milisekon) pencarian kasus terburuknya. Secara rill algoritma diukur dari running time yang digunakan untuk mencocokan pattern yang berbeda- beda panjangnya secara bertahap dan perbandingan akan terlihat pada kedua algoritma dalam sebuah grafik. Seberapa besar sudut yang dihasilkan, semakin besar sudutnya maka semakin tidak efisienlah algoritma tersebut.
1.2. Rumusan Masalah
Berdasarkan latar belakang tersebut, maka penulis akan melihat hasil yang lebih efisien dalam proses pencocokan string untuk melihat keberhasilan algoritma Apostolico-Chrochemore dan Optimal Mismatch baik secara teoritis dan secara rill.
1.3. Batasan Masalah
1. Parameter pembanding yang diukur adalah kompleksitas teoretis (big Ө), running time pencocokkan pattern (milisekon) untuk berbagai panjang
pattern P[0..n-1], dan kompleksitas waktu pada pencarian kasus terburuk (O(m)).
2. Objek yang digunakan sebagai studi kasus adalah UU MD3 2018 3. Bahasa pemrograman yang digunakan adalah Visual Basic.
1.4. Tujuan Penelitian
Tujuan dari penelitian ini adalah untuk mencari algoritma yang lebih efisien dalam pencocokan string dengan membandingkan kompleksitas teoretis (big Ө), running time pencocokkan pattern (milisekon) untuk berbagai panjang pattern P[0..n-1], dan kompleksitas waktu pada pencarian kasus terburuk (O(m)) pada algoritma Apostolico-Crochemore dan Optimal Mismatch.
1.5. Manfaat Penelitian
Manfaat dari penelitian ini adalah pembaca dapat memahami cara kerja algoritma Apostolico-Crochemore dan Optimal Mismatch serta mengimplementasikan algoritma yang lebih efisien.
1.6. Metodologi Penelitian 1. Studi Literatur
Pada tahap ini dilakukan pengumpulan referensi yang diperlukan dalam penelitian. Hal ini dilakukan untuk memperoleh informasi dan data yang diperlukan untuk penulisan skripsi ini. Referensi yang digunakan dapat berupa buku, jurnal, artikel, maupun situs internet yang berkaitan dengan algoritma exact string matching Apostolico Crochemore, Optimal Mismatch , Boyer-Moore, Quick Search, dan Knutt-Morris-Pratt, serta kompleksitas waktu daan notasi asimptotik (big θ).
2. Analisis dan Perancangan
Dengan adanya rumusan dan batasan masalah, kebutuhan perancangan dianalisis disertai pembuatan Ishikawa Diagram, Unified Modeling Languange (UML) Diagram, Flowchart, dan Design interface system.
3. Implementasi
Pada tahap ini pembuatan sistem telah selesai dilaksanakan dan menambahkan data hasil algoritma Apostolico-Crochemore dan Optimal Mismatch ke dalam sistem.
4. Pengujian
Aplikasi diuji berdasarkan hasil analisis dan perancangan untuk mengetahui hasil perbandingan dan efisiensi kedua algoritma.
5. Dokumentasi dan laporan Akhir
Setelah implementasi, penulis akan membuat dokumentasi atau laporan dari tiap tahap pengerjaan sistem yang penulis rancang dalam bentuk skripsi.
1.7. Sistematika Penulisan
Agar pembahasan menjadi lebih sistematis, skripsi ini dibuat dalam lima bab, meliputi :
BAB I PENDAHULUAN
Bab ini berisi latar belakang penelitian judul skripsi ”Studi Perbandingan Kinerja Teoritis dan Rill Algoritma Exact String Matching Apostolico-Crochemore dan Optimal Mismatch Pada UU MD3”. Rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian, arsitektur sistem, dan sistema tika penulisan skripsi.
BAB II LANDASAN TEORI
Bab ini berisi penjelasan mengenai defenisi algoritma, algoritma pencocokan string, algoritma Apostolico- Crochemore, Algoritma Optimal Miscmatch, notasi asimptotik, dan penelitian yang relevan.
BAB III ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini berisi uraian dari analisis sistem, analisis kebutuhan, analisis proses, Ishikawa Diagram, Unified Modeling Languange (UML) Diagram, Flowchart, dan Design interface system.
BAB IV IMPLEMENTASI DA N PENGUJIAN SISTEM
Pada bab ini dilakukan pembuatan sistem dan coding sesuai dengan analisis dan perancangan. Kemudian akan dilakukan pengujian sistem.
BAB V KESIMPULAN DAN SARAN
Bab terakhir akan memuat kesimpulan isi dari bab - bab sebelumnya dan saran – saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat dalam pengembangan berikutnya
BAB II
LANDASAN TEORI
2.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. Pada awalnya algoritma adalah kata yang merujuk pada aturan sistematis untuk menyelesaikan masalah dengan menggunakan bilangan numerik. Berdasarkan defenisi tersebut maka didapat kesimpulan bahwa. Algoritma merupakan bidang ilmu yang mempelajari langkah- langkah tertentu,dalam pemecahan sebuah masalah yang disusun secara sitematis dan jika dijalankan efeknya akan memecahkan masalah tersebut.
Sebuah algoritma terjadi karena adanya permasalahan. Menurut Donald E.
Kurth,ada lima syarat algoritma yaitu:
1. Finiteness (Keterbatasan)
Setelah melakukan sejumlah proses dan langkah-langkah,sebuah algoritma haruslah berakhir. Algoritma harus menyatakan urutan langkah-langkahnya dengan jelas. Kapan sebuah langkah x atau langkah y dilakukan atau kapan berhenti dari sebuah langkah melanjutkan kelangkah berikutnya.
2. Definitess (Kepastian)
Setiap langkah algoritma harus dinyatakan atau didefenisikan dengan tepat dan tidak mengakibatkan makna ganda,tidak ambigu. Algoritma yang ada haruslah mudah dimengerti.
3. Input (Masukan)
Sebelum dijalankan, algoritma memiliki nol atau lebih masukan yang diberikan kepada algoritma.
4. Output (Keluaran)
Setiap algoritma memiliki satu atau lebih keluaran. Hasil yang didapat dari proses harus berakurasi tinggi dan benar.
5. Efectiveness (Efektivitas)
Prosesnya diselesaikan dengan secepat dan frekuensi kalkulasi yang sependek mungkin.Tidak hanya menyelesaikan satu kasus tetapi juga kasus lain yang lebih general.
2.2. Algoritma Pencocokan String (String Matching Algorithm)
Pencocokan string (string matching) menurut Dictionary of Algorithms and Data Structures,National Institute of Standards and Technology (NIST), diartikan sebagai sebuah permasalahan untuk menemukan pola susunan karakter string di dalam string lain atau bagian dari isi teks
Permasalahan pencocokan string (string matching) pada dasarnya adalah mencari sebuah string yang terdiri dari beberapa karakter yang biasa disebut (string pendek = pattern [0..n-1]) dalam sejumlah besar (string panjang = text [0..m-1]).
Persoalan pencarian string dirumuskan sebagai berikut.
1. Diberikan teks, yaitu string yang panjangnya n karakter
2. Diberikan pattern, yaitu string dengan panjang m karakter (m<n) yang akan dicari di dalam teks
3. Kemudian dicari lokasi pertama di dalam teks yang sesuai dengan pattern.
Proses pencocokan string yang merupakan bagian dalam proses pencarian string memegang peranan penting untuk mendapatkan dokumen yang sesuai kebutuhan informasi.
Contoh :
Pattern : Jabatan Teks : masa jabatan
Pattern disimbolkan dengan x = x[0..m- 1]; dimana panjangnya disebut m. Teks disimbolkan dengan y = y[0..n- 1]; dimana panjangnya disebut n. Kedua string membangun lebih dari satu set terbatas karakter yang disebut alfabet, dinotasikan dengan ∑ dengan ukuran yang sama dengan σ (Charras, 2004).
Pencocokan string (string matching) secara umum dibedakan menjadi dua yaitu:
1. Inexact string matching atau Fuzzy string matching, adalah pencocokan string secara samar, yang dimaksud pencocokan string secara samar adalah dimana string yang dicocokkan memiliki kemiripan namun keduanya memiliki susunan karakter yang berbeda (mungkin jumlah atau urutannya) tetapi string tersebut memiliki kemiripan, baik kemiripan tekstual/penulisan (approximate string matching) atau kemiripan ucapan (phonetic string matching). (Rochmawati, 2015). Inexact string matching memiliki kelemahan di bagi menjadi dua garis besar, yaitu menemukan substring yang diperkirakan sesuai dalam string tertentu dan menemukan string yang cocok pada pattern yang diperkirakan. Masa sekarang ini inexact string matching paling sering digunakan dalam pengecekan spam yang efektif serta otomatis memblokir email-email yang mengganggu pengguna.
2. Exact string matching, merupakan pencocokan dalam string secara tepat dengan susunan karakter string yang dicocokkan memiliki jumlah maupun urutan karakter dalam string yang sama (Syaroni, 2005). Misalnya, pattern
‘jabatan’ hanya akan menunjukkan kecocokan dengan string ‘jabatan’ pada teks.
2.3. Algoritma Apostolico-Crochemore
Algoritma Apostolico-Crochemore merupakan algoritma pencarian string yang mencocokan string dari kiri ke kanan. Algoritma ini adalah algoritma sederhana yang melakukan perbandingan karakter pada teks sebanyak pada kasus terburuknya (Charras,C.&Lecroq.T.,2004). Apostolico-Chochemore dicetuskan oleh Alberto Apostolico dan Maxime Crochemore pada tahun 1991. Algoritma Apostolico-Crochemore memiliki dua fase, yaitu fase preprocessing dan fase pencarian string (Ratri, 2007).
2.3.1. Fase Preprocessing
Pada fase preprocessing dilakukan perhitungan jumlah langkah pergeseran pattern terbesar yang mungkin terjadi dengan menggunakan perbandingan yang
dibentuk sebelum fase pencarian string. Fase ini menggunakan tabel pergeseran kmpNext.
Untuk mendapatkan nilai pergeseran, kmpNext[i] untuk indeks 0 diberi nilai -1 sebagai inisialisasi. Selanjutnya, bandingkan karakter pada indeks 0 dengan karakter pada indeks 1. Jika karakternya sama, maka kmpNext[1] bernilai -1.
Namun apabila karakternya berbeda, maka kmpNext[1] bernilai 0.
Berikut adalah contoh perhitungan tabel pergeseran kmpNext untuk pattern JABATAN pada teks MASA JABATAN.
Tabel 2.1. Nilai kmpNext[i] untuk pattern x = JABATAN
i 0 1 2 3 4 5 6 7
x[i] J A B A T A N *
kmpNext[i] -1 0 0 0 0 0 0 0
l = 1
Keterangan :
i : indeks untuk setiap karakter pada pattern x : pattern
kmpNext[i] : nilai kmpNext[i] untuk setiap karakter pada pattern l : posisi karakter pertama dari x yang berbeda dari x[0]
2.3.2. Fase Pencarian
Selama fase pencarian, bentuk triple (i, j, k) ditentukan dimana :
• Jendela karakter diposisikan pada teks y[j..j + m– 1]
• 0 k l dan x[0..k– 1] = y[j..j + k– 1]
• l i m dan x[l..i– 1] = y[j + l..i + j– 1]
Inisialiasi awal dari triple (i, j, k) adalah (l, 0, 0)
Gambar 2.1 Posisi Jendela Karakter pada Algoritma Apostolico-Crochemore
Perhitungan nilai (i, j, k) berikutnya mempertimbangkan tiga kemungkinan yang bergantung pada nilai i.
• i = l
Jika x[i] = y[i + j] maka triple berikutnya adalah (i + 1, j, k)
Jika x[i] y[i + j] maka triple berikutnya adalah (l, j + 1, max{0, k -1})
• l < i <m
Jika x[i] = y[i + j] maka triple berikutnya adalah (i + 1, j, k)
Jika x[i] y[i+ j] maka ada dua kemungkinan yang terjadi bergantung pada nilai kmpNext[i] :
- kmpNext[i] l; maka triple selanjutnya adalah (l, i + j– kmpNext[i], max{0, kmpNext[i]})
- kmpNext[i] > l; maka triple selanjutnya adalah (kmpNext[i], i + j–
kmpNext[i], l)
• i = m
Jika k < l dan x[k] = y[j + k] maka triple selanjutnya adalah [i, j, k + 1].
Sebaliknya, baik kedua k < l dan x[k] y[j + k], atau k = l. Jika k = l maka kemunculan x diberitahukan. Pada kedua kemungkinan itu triple selanjutnya sama dengan kemungkinan dimana l < i <m (Charras, 2004).
Berikut adalah contoh proses pencarian pattern JABATAN pada teks MASA JABATAN.
I 0 1 2 3 4 5 6 7
x[i] J A B A T A N *
kmpNext[i] -1 0 0 0 0 0 0 0
Tahap 1 :
M A S A J A B A T A N
1 2
J A B A T A N
Tahap 2 :
M A S A J A B A T A N
1 2
J A B A T A N
Shift = 2 – kmpNext[2] = 2 – 0 = 2
Tahap 3 :
M A S A J A B A T A N
1
J A B A T A N
Shift = 1 – kmpNext[1] = 1 – 0 = 1
Tahap 4 :
M A S A J A B A T A N
7 1 2 3 4 5 6 J A B A T A N
Pada percobaan keempat, pattern sudah sesuai dengan karakter pada teks.
Algoritma Apostolico-Crochemore akan terus bergerak ke kanan hingga karakter pada teks berakhir. Pada contoh ini, algoritma Apostolico-Crochemore melakukan 12 kali perbandingan karakter dengan teks.
2.4. Algoritma Optimal Mismatch
Algoritma Optimal Mismatch memiliki cara kerja pencarian kata secara berturut.
Algoritma ini mencari pola karakter dari frekuensi yang paling sedikit hingga yang paling banyak pada setiap karakter dalam kumpulan teks, sehingga dapat juga disebut pencarian sekuensial (sequential search). Melakukan hal itu mungkin berharap memiliki ketidakcocokan sebagian besar waktu dengan
demikian memindai seluruh teks dengan sangat cepat. Harus diketahui frekuensi kemunculan masing-masing karakter alfabaet. Terdapat tiga tahap yang harus dilewat. Tahap pertama adalah prosedur pengurutan karakter pada pattern. Tahap kedua adalah prosedur Quick search bad- character. Tahap ketiga adalah pencarian nilai pergeseran karakter dalam teks menggunakan good suffix adapted.
Contoh : Teks : MASA JABATAN Pattern : JABATAN
Prosedur pertama pengurutan karakter atau disebut order pattern untuk mencari frekuensi tiap-tiap karakter pada teks, kemudian diurutkan mulai dari frekuensi terendah hingga tertinggi. Jika terdapat dua atau lebih karakter yang berbeda namun memiliki frekuensi yang sama maka pengurutan didasarkan pada posisi pencarian dari kanan ke kiri. Dimana karakter yang ditemukan lebih dahulu diurutkan lebih awal.
Tabel 2.2. Frekuensi karakter pada teks
Char a m s j b t n
Freq[char] 5 1 1 1 1 1 1
Tabel 2.3. Pola Awal
Pos 0 1 2 3 4 5 6
Pattern[pos] J A B A T A N
Freq[pattern[Pos]] 1 5 1 5 1 5 1
Tabel 2.4. Pola setelah diurutkan
Pos 0 1 2 3 4 5 6
Pattern[pos] J B T N A A A
Freq[pattern[Pos]] 1 1 1 1 5 5 5
Proses kedua adalah pre search bad- character atau preQsBc yang menghitung nilai qsBc pada tiap – tiap karakter yang selanjutnya nilai tersebut akan digunakan untuk pergeseran pada pola dengan cara menentukan posisi karakter dari kanan ke kiri.
Proses ketiga adalah preAdaptedGs yang menghitung nilai pada tiap posisi dan kemudian nilai inilah akan digunakan untuk pergeseran pada pola. Selanjutnya langkah-langkah pencarian dengan menggunakan algoritma Optimal Mismatch setelah langkah diatas selesai. Maka pencarian string dengan cara mencocockkan pattern sesuai dengan tabel yang sudah diurutkan . Hitung selisih panjang pattern dengan panjang teks. Karakter dengan urutan pertama dalam order pattern dicocokan dengan teks pada posisi yang sama pada pattern. Jika terdapat kecocokan, maka akan diteruskan dengan cara mencocokan pattern sesuai dengan urutan posisi pada order pattern dan kemudian cocokan dengan karakter pada teks. Ketika semua karakter pada pattern telah berhasil dicari maka proses pencocokan string dinyatakan selesai.
Sedangkan jika tidak cocok maka dilakukan perhitungan qsBc dan adaptedGs.
Diambil nilai terbesar dari perhitungan qsBc atau adaptedGs, akan digunakan untuk pergeseran. Pergerseran tetap dilakukan sampai jumlah seluruh pergeseran lebih besar daripada selisih panjang text dengan panjang pattern.
2.5. Kompleksitas Algoritma
Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah.
Secara umum, kompleksitas algoritma terdiri dari dua macam, yaitu :
• Kompleksitas waktu (time complexity) t(n)
Diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukkan (n).
• Kompleksitas ruang (space complexity) s(n)
Diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari masukkan (n).
Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang efisien adalah algoritma yang meminimumkan kebutuhan waktu dan ruang.
2.6. Notasi Asimptotik
Untuk membandingkan dan menyususn urutan dari pertumbuhan, ilmuan komputer menggunakan tiga notasi : O (big oh), Ω (big omega), dan θ (big theta).
Dalam penelitian ini penulis akan membandingkan θ (big theta) dari algoritma Apostolico-Crochemore dan Optimal Mismatch.
2.6.1. Notasi O
Fungsi t(n) dikatakan berada dalam O(g(n)), dilambangkan dengan t(n) ϵ O(g(n)), jika t(n) diberi batas oleh beberapa pengali konstan dari g(n) untuk semua n bernilai besar, contohnya, jika ada beberapa konstan c bernilai positif dan n0
integer bukan negatif seperti t(n) ≤ cg(n) untuk semua n ≥ n0 (Levitin, 2012).
2.6.2. Notasi Ω
Fungsi t(n) dikatakan berada dalam Ω (g(n)), dilambangkan dengan t(n) ϵ Ω (g(n)), jika t(n) diberi batas bawah oleh beberapa pengali konstan dari g(n) untuk semua n bernilai besar contohnya, Jika ada beberapa konstan c bernilai positif dan n0 integer bukan negatif seperti t(n) ≥ cg(n) untuk semua n ≥ n0
(Levitin,2012).
2.6.3. Notasi θ
Fungsi t(n) dikatakan berada dalam θ(g(n)), dilambangkan dengan t(n)ϵ θ(g(n)), jika t(n) diberi batas atas dan batas bawah oleh beberapa pengali konstan dari g(n) untuk semua n bernilai besar, contohnya, jika ada beberapa konstan c1 dan c2
bernilai positif dan n0 integer bukan negatif seperti c2g(n) ≤ t(n)c2g(n) untuk semua n ≥ n0 (Levitin,2012).
2.7. Penggunaan Limit untuk Membandingkan Urutan Pertumbuhan Sekalipun defenisi formal dari О, Ω, dan θ sangat diperlukan untuk membuktikan properti abstraknya, ketiganya jarang digunakan untuk membandingan urutan pertumbuhan dari dua fungsi spesifik. Banyak metode serupa lebih mudah untuk dilakukan berdasarkan pada perhitungan limit dari rasio kedua fungsi dalam pernyataan tiga kasus principal yang mungkin terjadi adalah :
Kemungkinan yang pertama berarti t(n) ϵ О(g(n)), kemungkinan yang kedua berarti t(n) ϵ О(g(n)), dan kemungkinan yang terkahir berarti t(n) ϵ Ω(g(n)).
Pendekatan berbasis limit biasanya lebih mudah dibanding pendekatan berbasis defenisi karena bisa mengambil keuntungan dari teknik kalkulus yang dikembangkan untuk limit komputasi, seperti aturan L’Hospital
Dan dengan formula stirling
untuk nilai n yang besar (Levitin, 2012).
2.8. Undang - Undang MPR, DPR, DPRD, DPD (UU MD3)
Undang-undang ini berisi aturan mengenai wewenang, tugas, dan keanggotaan MPR, DPR, DPRD dan DPD. Hak, kewajiban, kode etik serta detil dari pelaksanaan tugas juga diatur. UU ini terdiri atas 428 pasal, dan revisi terakhirnya disahkan oleh DPR pada, 12 Februari 2018. Undang-Undang tentang MPR, DPR, DPRD dan DPD (UU MD3) telah resmi memiliki nomor dan sah tercatat di lembar administrasi negara. UU MD3 diberi nomor UU Nomor 2 Tahun 2018.
Ada beberapa poin penting dari UU ini diantaranya :
• Pimpinan MPR terdiri atas satu orang ketua dan tujuh orang wakil ketua yang dipilih dari dan oleh anggota MPR, yang dipilih secara musyawarah untuk mufakat.
• UU ini juga menyebutkan, DPR dalam Melaksanakan hak dan wewenang dan tugasnya dapat memanggil setiap orang secara tertulis untuk hadir dalam rapat DPR, bunyi pasal 73 ayat (2) UU ini.
• Pasal 224 UU ini menyebutkan, anggota DPR tidak dapat dituntut didepan pengadilan karena pernyataan, pertanyaan dan atau pendapat yang dikemukakan baik secara lisan maupun tertulis di dalam rapat DPR atau diluar rapat DPR yang berkaitan dengan fungsi serta wewenang dan tugas DPR.
• Pasal 424 UU ini menyebutkan, peraturan pelaksanaan UU ini harus ditetapkan paling lama enam bulan terhitung sejak Undang-unfang ini diundangkan.
2.9. Penelitian yang Relevan
1. Pada penelitian terdahulu yang dilakukan oleh Ratri, Sindy Gita (2007) tentang “Penggunaan Algoritma Apostolico-Crochemore Pada Proses Pencarian String Di Dalam Teks”, menyimpulkan bahwa Algoritma Apostolico-Crochemore memiliki kompleksitas waktu untuk fase proses awal sebesar O(m) dan fase pencarian string sebesar O(n). Pada kasus terburuk, perbandingan karakter yang dilakukan sebanyak 3/2 n kali. Algoritma ini merupakan perbaikan dari algoritma KMP karena algoritma ini memiliki kompleksitas waktu yang lebih baik dari algoritma KMP.
2. Penelitian terdahulu oleh Maya, Hartina Hutagalung (2016) pada “Studi perbandingan Kinerja dan Rill Algoritma Exact String Matching algoritma Apostiloco-Chrochemore dan Smith” menyimpulkan secara teoritis algoritma apostolico-chrochemore cenderung memilki running time yang jauh lebih kecil, namun pada percobaan rill algoritma Smith lebih cepat dibandingkan algoritma apostolico-chrochemore selama pattern bisa ditemukan di dalam teks. Sementara itu, jika pattern tidak berada di dalam teks, algoritma apostolico-chrochemore memiliki running time lebih kecil.
3. Pada penelitian terdahulu oleh Putri,D S (2016) tentang “Implementasi Algoritma Galil-Giancarlo dan Algoritma Optimal Mismatch Pada aplikasi kamus bahasa Indonesi-Sunda”, Menyimpulkan bahwa pencarian kata dalam aplikasi Bahasa indonesia-Sunda, algoritma Galil-Giancarlo mampu mempersingkat waktu dibandingkan algoritma Optimal Mismatch.
4. Pada penelitian terdahulu yang dilakukan oleh Putri,Aulia Noer (2017) tentang
“Implementasi dan perbandingan Algoritma Optimal Mismatch dan Algoritma Rabin-Karp pada kamus istilah Perbankan”, menyimpulkan bahwa secara teoritis, fase Preprocessing dan fase pencarian dari kedua algoritma menunjukkan bahwa algoritma Rabin-Karp lebih efisien dan memiliki running time yang lebih cepat untuk setiap pattern dari pada algoritma Optimal Mismatch.
BAB III
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Analisis sistem merupakan tahapan penelitian terhadap suatu sistem informasi yang utuh dengan sebuah teknik pemecahan masalah yang menguraikan sebuah sistem menjadi komponen - komponen lebih kecil guna menentukan solusi dan megidentifikasi kebutuhan sistem. Sehingga dapat dilakukan perbaikan untuk meningkatkan kualiatas sistem yang sudah ada. Analisis sistem adalah pembelajaran sebuah sistem dan komponen – komponennya sebagai prasyarat desain sistem, spesifikasi sebuah sistem yang baru atau yang sudah ada. Tahapan analisis sistem merupakan sebuah tahapan yang sangatlah penting, hal ini dikarenakan apabila terjadi kesalahan dalam melakukan analisis sistem maka akan menyebabkan kesalahan pada tahap selanjutnya.
Analisis sistem memiliki beberapa fase untuk mengembangkan sistem yaitu, analisis masalah, analisis kebutuhan, dan analisis proses. Secara ringkas, Analisis sistem bertujuan untuk memecahkan masalah sistem ke dalam komponen sub sistem yang lebih kecil untuk mengetahui hubungan setiap komponen tersebut dalam mencapai tujuan akhir.
3.1.1. Analisis Masalah
Permasalahan utama pada penelitian ini adalah , seperti yang sudah di jelaskan sebelumnya dalam latar belakang penulisan tugas akhir ini yang akan diselesaikan dengan menggunakan sistem ini. Mempermudah pencarian isi dan pasal – pasal yang terdapat dalam UU MD3. Permasalahan ini akan diselesaikan dengan menggunakan algoritma Apostolico-Crohemore atau Optimal Mismatch, sesuai pada algoritma yang dipilih user.
Untuk mengidentifikasi masalah tersebut, penulis menggunakan Ishikawa diagram (fishbone/cause-effect diagram). Ishikawa diagram adalah diagram yang menunjukkan penyebab – penyebab dari sebuah even yang spesifik.
Diperkenalkan oleh Kaoru Ishikawa pada tahun 1968. Ishikawa diagram pada sistem dapat dilihat pada Gambar 3.1.
Gambar 3.1. Ishikawa Diagram Sistem
Dari gambar diagram diatas dapat dilihat proses pencarian pattern yang terjadi dalam sistem. Pengguna akan memberikan input pattern yang akan dicari dengan harapan penggunakan waktu pencarian seefisien mungkin. Kemudian pattern yang akan dicari masuk kedalam metode algoritma string matching. Beberapa faktor yang mempengaruhi aktivitas pencarian pattern adalah panjang karakter dari pattern terlalu besar, spesifikasi hardware yang digunakan.
3.1.2 Analisis Kebutuhan Sistem
Untuk memepermudah menganilis sebuah sistem dibutuhkan dua jenis kebutuhan.
Kebutuhan fungsional dan kebutuhan nonfungsional. Kebutuhan fungsional adalah kebutuhan yang berisi proses – proses apa saja yang nantinya dilakukan oleh sistem. Sedangkan kebutuhan nonfungsional adalah kebutuhan yang menitikberatkanpada properti perilaku yang dimiliki oleh sistem.
3.1.2.1. Kebutuhan Fungsional
Kebutuhan fungsional dari aplikasi Undang – undang MPR, DPD, DPR, DPRD ini adalah :
1. Aplikasi ini akan menampilkan keseluruhan file teks yang memiliki kecocokan dengan pattern yang dicari.
2. Aplikasi ini juga akan menampilkan perbandingan waktu yang digunakan dalam proses pecarian pattern dari masing algoritma.
3.1.2.2. Kebutuhan Nonfungsional
Kebutuhan nonfungsional dari aplikasi Undang – Undang MPR, DPD, DPR, DPRD ini adalah :
1. Performa
Sistem yang dibuat ini dapat menampilkan berapa jumlah kecocokan dari pattern yang diinputkan pada file teks yang dicari.
2. Mudah dipelajari penggunaannya
Sistem ini dibuat sederhana dan menggunakan konsep user friendly, sehingga dapat digunakan dan dipelajari dengan baik oleh pengguna serta lebih mudah dalam proses kerjanya.
3. Panduan
Sistem ini juga dilengkapi dengan panduan penggunaan aplikasi.
4. Kontrol
Sistem ini juga akan menampilkan pesan error apabila pengguna memasukkan data input yang tidak lengkap atau salah.
5. Ekonomi
Dari segi ekonomi, sistem ini dibuat tanpa membutuhkan biaya dan perangkat tambahan lainya.
3.2. Perancangan Sistem
Perancangan sistem merupakan tahap selanjutnya setelah analisa sistem, agar mendapatkan gambaran dengan jelas tentang sistem yang akan dibangun.
Perancangan sistem adalah teknik pemecahan masalah yang saling melengkapi dengan analisis sistem yang merangkai kembali setiap komponen sehingga menjadi sebuah sitem yang lengkap (Whitten, 2004).
Perancangan sistem meliputi pemodelan sistem, flowchart dan penggunaan antarmuka. Tahapan penelitian akan dilakukan seperti ilustrasi gambar dibawah ini :
Gambar 3.2. Diagram ilustrasi tahapan penelitian
Pada diagram diatas dapat terlihat jelas setiap tahapan penelitian yang dilakukan.
Proses penelitian dimulai dengan studi literatur. Pada proses ini akan dikumpulkan berbagai informasi mengenai algoritma yang akan di gunakan pada penelitian kali ini untuk mendapatkan algoritma seperti apa yang akan di teliti, kemudian algoritma tersebut akan diimplementasikan pada suatu program. Juga dilakukan studi kasus pada undang-undang MD3 2018. Sehingga didapatkan hasil dan kesimpulan dari penelitian tersebut.
3.2.1. Arsitektur Sistem
Arsitektur sistem adalah gambaran proses kerja sistem secara keseluruhan yang meliputi proses input data, proses sistem berlangsung, dan output data yang didapat dari sistem. Melalui arsitektur sistem pembaca dan penulis di bantu mengerti alur kerja sistem yang akan di buat.
Adapun arsitektur sistem ditujukan pada Gambar 3.3. berikut :
Gambar 3.3. Arsitektur Sistem
Gambar 3.3. di atas menunjukkan arsitektur proses pencocokan string, yang terjadi dalam suatu sistem. User melakukan analisis data yang akan digunakan dalam sistem. Data berupa dokumen berbentuk teks. Didalam sistem akan diimplementasikan algoritma pencocokan string, menggunakan algoritma Apostolico-Chrochemore dan Algoritma Optimal Mismatch. User akan memasukkan pattern yang akan dicari dalam sistem.
3.2.2. Pemodelan Sistem
Pemodelan sistem dalam penelitian ini menggunakan bahasa pemodelan UML (Unified Modeling Language) yang akan ditampilkan dengan use case diagram, sequence diagram dan activity diagram.
3.2.2.1.Use-case Diagram
Use-case diagram adalah sebuah gambaran fungsionalitas dari suatu sistem yang berbentuk diagram, sehingga pengguna mengerti dan paham terhadap fungsi dari sistem yang akan dirancang. Seperti mendeskripsikan interkasi antara pengguna dengan sistem. Tiga aspek dari sistem yang ada dalam use-case diagram, yaitu : actor, use-case, dan system/sub system boundary.
• Actor ini akan digunakan untuk menjelaskan sesuatu atau juga seseorang yang sedang berinteraksi dengan sistem.
• Use-case sendiri adalah gambaran fungsi dari sebuah sistem.
• System/ Sub System Boundary, Sebagai batasan dari sitem yang ada pada relasi dengan actor.
Simbol relasi dalam use-case untuk meunjukkan kondisi tertentu disebut steoreotype. Untuk menunjukan steoreotype digunakan symbol “<<” diawalnya dan ditutup “>>” diakhirnya. “<<extends>>” digunakan untuk menunjukan bahwa satu use-case merupakan tambahan fungsional dari use-case lain jika kondisi atau syarat tertentu yang terpenuhi. Sedangkan “<<include>>” digunakan untuk menggambarkan bahwa suatu use-case seluruhnya merupakan dari use-case lainya. Use-case diagram dari sistem yang akan dibangun dapat ditunjukkan pada gambar 3.4. berikut ini.
Gambar 3.4. Use-case Diagram Sistem
User memiliki control untuk melakukan beberapa fungsi yang diinginkan, yaitu menginputkan file pdf yang berisikan string, kemudian melihat file hasil pencarian yang akan dicari dan juga melihat rekaman hasil pencarian.
Dokumentasi naratif use-case mencari file berisikan string, melihat file hasil pencarian, melihat hasil record pencarian dapat dilihat pada Tabel 3.1., Tabel 3.2., dan Tabel 3.3.
Tabel 3.1. Dokumentasi Naratif Use-case Mencari file pdf berisikan string
Name Mencari file teks pdf berisikan string Actor User
Description Menjelaskan bagaimana proses user melakukan
pencarian/memunculkan setiap teks .pdf berisikan string yang terdapat dalam listbox Apostolico-Crochemore dan Optimal Mismatch
Basic Flow 1. User membuka foldel lokasi file teks .pdf
2. User menginputkan pattern string yang akan dicari
Alternate Flow User dapat melihat isi file teks melalui judul tanpa menginput kata
Pre Condition 1. Sistem membuka folder yang dipilih user
2. Sistem menerima inputan berupa kata atau pattern yang akan dicari
Post Condition Sistem menampilkan nama file teks .pdf yang sesuai dengan inputan pattern di dalam kedua listbox serta berapa lama waktu pencarian yang digunakan.
Tabel 3.2. Dokumentasi Naratif Use-case Melihat File Hasil Pencarian Name Melihat rincian file hasil pencarian
Actor User
Description Menjelaskan bagaimana proses user memunculkan rincian file hasil pencarian yang terdaftar pada listbox.
Basic Flow User memilih nama file pada listbox Alternate Flow -
Pre Condition Sistem menampilkan hasil pencarian pada listbox
Post Condition Sistem menampilkan form yang berisikan rincian berupa nama file, jumlah kecocokan, persentase kecocokan dan isi file.
Tabel 3.3. Dokumentasi Naratif Use-Case Melihat hasil record pencarian Name Melihat hasil record pencarian
Actor User
Description Menjelaskan proses user memunculkan record hasil pencarian
Basic Flow User meng-click tombol record Alternate Flow -
Pre Condition Sistem menampilkan hasil pencarian pada listbox Post Condition Sistem menampilkan file record yang berisi
persentase kecocokan dan nama file yang memiliki string pada isinya.
3.2.2.2.Sequence Diagram
Sequence Diagram menggambarkan interaksi antar objek didalam dan di sekitar sistem. Diagram ini secara khusus berasosiasi dengan use-case diagram dan memperlihatkan tahap demi tahap dalam sistem. Melalui diagram ini dapat digrambarkan suatu objek yang saling berkaitan atau berhubungan melalui pesan dalam eksekusi operasi, untuk satu buah use-case, diagram ini memikirkan gambaran bagaimana pesan dikirim oleh objek, diterima, dan diurutan yang mana.
Sequence dari sistem yang akan dibangun dapat dilihat pada Gambar 3.5.
Gambar 3.5. Sequence Diagram Sistem 3.2.2.3.Activity Diagram
Activity diagram adalah diagram yang menggambarkan work flow (aliran kerja) dari sebuah sistem. Melalui diagram ini akan dapat dipahami bagaimana aktivitas yang terjadi pada sistem. Proses kerja sistem yang dibangun akan dijelaskan secara grafis. Activity diagram dari use case, Mencari file teks berisikan string, Melihat rincian file hasil pencarian dan Melihat hasil record pencarian dapat dilihat pada Gambar 3.6., 3.7., dan 3.8.
Gambar 3.6. Activity Diagram Mencari folder berisikan string .pdf
Gambar 3.7. Activity Diagram Melihat rincian file hasil pencarian
Gambar. 3.8. Activity Diagram Melihat hasil record pencarian
3.2.3. Flowchart
Flowchart merupakan bagan yang memperlihatkan urutan maupun hubungan antar proses beserta keterangannya yang dinyatakan dengan simbol. Setiap simbol menggambarkan suatu proses tertentu. Kemudian antara setiap proses digambarkan dengan garis penghubung. Selain itu, flowchart juga memiliki fungsi memudahkan proses pengecekan terhadap sistem yang akan dibuat.
3.2.3.1. Flowchart prekmpNext
Algoritma Apostolico-Crochemore mirip dengan algoritma Knuth-Morris-Path (KMP). Pada fase preprocessing algoritma Apostolico-Crochemore menggunakan tabel fungsi pinggiran (border function) pergeseran prekmpNext.
Proses pencariannya sama-sama dimulai dari kiri ke kanan. Fungsi pinggiran hanya bergantung pada karakter-karakter dalam pattern, dan bukan pada karakter dalam text. Adapun flowchart dari fungsi prekmpNext dapat dilihat pada gambar 3.9. berikut.
Gambar 3.9. Flowchart prekmpNext fase preprocessing Apostolico-Crochemore Keterangan gambar 3.9 :
x = pattern yang diinput m = panjang pattern
kmpNext[] = array yang menampung nilai kmpNext dari pattern i = indeks dari karakter ke- n pada pattern
j = indeks dari karakter ke- n pada text
3.2.3.2.Flowchart preqsBc
Pada fase preprocessing algoritma Optimal Mismatch menggunakan tabel preqsBc dan preAdaptedGs. Quick search bad-character (qsBc) merupakan sebuah nilai yang terdapat pada karakter yang akan digunakan untuk pergeseran pola dengan cara menentukan posisi karakter dari dengan pola dari kanan ke kiri.
Jika terdpata karakter sama dalam pola maka posisi karakter yang pertama ditemukan akan disimpan .Adapun flowchart dari fungsi preqsBc dapat dilihat pada gambar 3.10. berikut.
Gambar 3.10. Flowchart preqsBc fase preprocessing Optimal Mismatch Keterangan Gambar 3.10. :
x = pattern inputan m = panjang pattern
qsBc[] = array yang menampung nilai qsBc dari pattern i = indeks dari karakter ke – n pada pattern
ASIZE = ASCII SIZE, Jumlah kode ASCII 3.2.3.3.Flowchart AdaptedGs
AdaptedGs merupakan cara untuk menghitung nilai tiap posisi. Nilai adaptedGs ini juga akan digunakan untuk melakukan pergeseran guna mendapatkan pattern yang sesuai dengan yang dicari. Adapun flowchart dari fungsi preadaptedGs dapat dilihat pada gambar 3.11. berikut.
Gambar 3.11. Flowchart preadaptedGs fase preprocessing Optimal Mismatch
Keterangan Gambar 3.11. : x = pattern inputan
m = panjang pattern
adaptedGs[] = array yang menampung nilai adaptedGs dari pattern i = indeks dari karakter ke – n pada pattern
3.2.3.4.Flowchart Algoritma Apostolico – Crochemore
pada fase pencarian string menggunakan algoritma apostolico-crochemore dimana pada fase ini terjadi proses pencarian atau pencocokan pattern dengan text.
Dimulai dengan menentukan nilai l (ell) dimana l adalah posisi karakter pertama dari x yang berbeda dari x[0]. Selama x[l – 1] sama dengan x[l], maka nilai l ditambah 1. Kemudian setelah mendapatkan nilai l, jika l sama dengan m, maka l sama dengan 0. Selanjutnya diberikan nilai i sama dengan l dan nilai j dan k sama dengan 0. Kemudian selama nilai j <= n – m, maka akan dilakukan beberapa kondisi yaitu sebagai berikut:
1. Selama i < m dan x[i] sama dengan y[i + j] maka i ditambah dengan 2. Setelah itu, jika i >= m maka:
a. Selama k < l dan x[k] sama dengan y[j + k] maka k ditambah dengan 1.
b. Kemudian setelah itu, jika k >= l maka output nilai j yang mana nilai j merupakan indeks dari y(text) yang berhasil dicocokkan dengan x(pattern).
3. Kemudian nilai j ditambah dengan nilai i – kmpNext[i].
4. Jika i sama dengan l, maka nilai k sama dengan nilai yang paling besar antara 0 dan k-1, kemudian lewati langkah ke-5 dan lakukan perulangan kembali pada langkah pertama selama kondisi j<=n–m masih terpenuhi.
5. Jika kmpNext[i] <= l, maka nilai k sama dengan nilai yang paling besar antara 0 dan kmpNext[i], dan nilai i sama dengan nilai l. Sedangkan jika kondisi tersebut tidak terpenuhi maka nilai k = l dan i = kmpNext[i]. Kemudian lakukan perulangan kembali pada langkah satu selama kondisi j<=n–m masih terpenuhi.
Flowchart algoritma Apostolico–Crochemore dapat dilihat pada Gambar 3.12.
Gambar 3.12. Flowchart algoritma Apostolico–Crochemore
Keterangan Gambar 3.12. : x = Pattern inputan
y = text
m = panjang pattern n = panjang text
preKmp = fungsi preKmp untuk fase perprocessing algoritma Apostolico- Crochemore
ell = posisi karakter pertama dari x yang berbeda dari x[0]
k = indeks dari karakter pertama pada pattern yang tidak cocok dengan text i = indeks dari karakter ke-n pada pattern
j = indeks dari karakter ke-n pada text
3.2.3.5.Flowchart Algoritma Optimal Mismatch
Algoritma Optimal Mismatch disebut juga pencarian sekuensial (sequentian search) yaitu dengan melakukan pencarian kata secara berurut pada tiap karakter pada kumpulan. Algoritma ini mencari pola karakter dengan frekuensi yang paling sedikt hingga ke paling banyak pada teks. Sebelum pencarian dimulai terdapat tiga prosedur yang harus dilalui, yaitu adalah order pattern, Quick search bad-Character dan kemudian adaptedGs. Setelah langkah-langkah tersebut selesai maka dimulailah pencarian string.
Berikut adalah flowchart proses pencocokan kata yang dapat dilihat pada gambar 3.12.
Gambar 3.13. Flowchart algoritma Optimal Mismatch Keterangan gambar 3.13. :
x = pattern inputan y = text
m = panjang pattern
n = panjang text
i = indeks dari karakter ke – n pada pattern j = indeks dari karakter ke-n pada text
k = indeks dari karakter pertama pada pattern yang tidak cocok dengan text qsBc[] = array yang menampung nilai qsBc dari pattern
adaptedGs[] = array yang menampung nilai adaptedGs dari pattern 3.2.4. Perancangan Antarmuka (Interface)
Secara umum sistem ini akan dibangun dengan 4 halaman, yaitu halaman tentang, halaman utama, halaman rincian dan halaman bantuan. Ini adalah rancangan dari aplikasi yang akan dibangun.
1. Halaman Tentang
Halaman tentang adalah halaman/form yang akan terbuka bila tab “About” pada halaman utama diklik. Pada halaman ini akan dimuat informasi tentang penulis.
Rancangan tampilan halaman tentang ini dapat dilihat pada gambar 3.14. berikut.
Gambar 3.14. Halaman Tentang
2. Halaman Utama
Didalam halaman inilah pencocokan string dengan menggunakan algoritma Apostolico-Crochemore dan Optimal Mismatch terjadi. Halaman ini juga akan terlihat tab halaman lain “, tab “tentang” yang berisi penjelasan tentang
aplikasi, serta tab “bantuan” yang berisi penjelasan cara penggunaan aplikasi. Rancangan tampilan dari halaman utama dapat dilihat pada gambar berikut.
Gambar 3.15. Halaman Utama Keterangan gambar :
1. Nama aplikasi yang adalah nama dari kedua algoritma yang digunakan dalam perbandingan.
2. Menu strip dengan tab “About” dan “Help”
3. Textbox lokasi folder yang berisikan file text yang akan dilakukan pencarian pattern.
4. Textbox string/ kata yang akan dicari dalam text (pattern).
5. Button “Browse“ akan digunakan untuk mencari lokasi folder file text.
6. Button “Search” akan digunakan untuk memulai proses pencocokan string x pada textbox string antara pattern dengan file text.
7. Kedua algoritma yang dibandingkan dalam aplikasi dengan pemisahan form masing-masing setiap algoritma.
8. Textbox yang akan memuat lama pencarian yang digunakan dari masing- masing algoritma dalam satuan waktu millisecond.
9. Listbox saat belum ada kata yang dimasukkan pada (4) bagian ini akan berisi semua daftar file teks yang terdapat dalam folder yang dipilih.
Namun, saat proses pencarian sudah selesai, bagian ini akan berisi daftar file teks yang mengandung kata yang dicari di dalamnya.
10. Textbox yang menampilkan jumlah berapa banyak kecocokan pada file text yang ada.
11. Button “Previous” digunakan untuk menampilkan beberapa file sebelum file yang muncul di (9).
12. Textbox jumlah file text yang memiliki kecocokan pada pattern (4) dan ditampilkan pada (9)
13. Button “Next” digunakan untuk menampilkan beberapa file sesudah file yang muncul di (9).
14. Button mengeskpor pattern (4) kedalam notepad dan di simpan di local disk :d/.
3. Halaman Rincian
Halaman rincian akan terbuka jika user mengklik salah satu file yang berada pada listbox (9) pada halaman utama. Maka akan ditampilkan rincian tentang berapa jumlah kecocokan string dengan pattern. Melalui halaman ini juga akan ditampilkan persentase kecocokan serta isi dari file tersebut. Rancangan tampilan halaman rincian ini dapat dilihat pada gambar 3.16. berikut.
Gambar 3.16. Halaman Rincian
Keterangan gambar :
1. Nama halaman yang sedang ditampilkan.
2. Textbox yang akan memuat nama file yang dimuat pada (4).
3. Textbox yang memuat jumlah kecocokan dengan pattern x yang ditemukan pada file.
4. Textbox yang memuat persentase kecocokan dengan pattern x yang ditemukan pada file.
5. Rich Textbox yang berisikan isi file pdf.
4. Halaman Bantuan
Halaman bantuan adalah halaman/form yang akan terbuka bila tab “Help”
pada halaman utama ditekan. Halaman ini memuat informasi bagaimana cara menggunakan aplikasi yang akan dibuat. Rancangan tampilan dari halaman help ini dapat dilihat pada gambar 3.17 berikut.
Gambar 3.17. Halaman Help
BAB IV
IMPLEMENTASI DAN PENGUJIAN
4.1. Implementasi Sistem
Implementasi sistem merupakan tahap lanjutan dari tahap analisis dan perancangan sistem. Tahap ini bertujuan untuk merealisasikan hal-hal yang sudah dijabarkan sebelumnya pada bab analisis dan perancangan sistem. Pada tahap ini, aplikasi yang dibangun akan melakukan cara kerja utamanya yaitu melakukan pencarian pada file teks pdf pada folder yang berisikan UU Nomor 2 Tahun 2018.
Sistem ini dibangun dengan menggunakan bahasa pemograman Visual Basic 2012 pada perangkat lunak Microsoft Visual 2012 pada perangkat lunak Microsoft Visual Studio 2012 dengan Microsoft .NET Framework 4.5 sebagai library untuk menyajikan Graphical User Interface terhadap user. Aplikasi ini terdiri dari 4 halaman yaitu halaman utama, halaman rincian, halaman tentang, dan halaman bantuan serta akan menghasilkan sebuah keluaran yaitu file record dalam bentuk file text.
4.1.1. Halaman Tentang
Halaman tentang adalah halaman yang akan muncul ketika aplikasi mulai dijalankan. Halaman ini berfungsi sebagai tampilan pembuka sebelum memulai penggunaan aplikasi. Tampilan halaman tentang dapat dilihat pada gambar 4.1.
berikut :
Gambar 4.1. Halaman Tentang
Pada halaman ini akan terdapat informasi mengenai penulis dan nama aplikasi yang dibangun. Terdapat satu menu strip yaitu “Utama” Form ini akan mengarahkan user menuju halaman Utama. Jika menu strip utama diklik maka aplikasi akan memunculkan halaman utama dari aplikasi tersebut.
4.1.2. Halaman Utama
Pada halaman ini segala proses input file teks yang akan dicocokkan dengan pattern yang input secara manual juga di halaman ini pada textbox “search” dan output berupa running time didapatkan.Halaman utama merupakan form dimana akan dilakukannya proses pencocokan string yang akan diiputkan ke dalam aplikasi. Pencocokan string akan dikerjakan secara bersamaan dengan kedua algoritma yaitu Apostolico-Crochemore dan Optimal Mismatch. Tampilan halaman utama dapat dilihat pada gambar 4.2. berikut :
Gambar 4.2. Halaman Utama
Halaman ini terdiri dari dua menu strip yaitu “About” dan “Help” yang masing- masing jika diklik akan menuju halaman tentang dan halaman bantuan. Pada halaman ini di buat agar sebelum file teks UU MD3 diinputkan ke dalam aplikasi dengan menggunkana button “Browse” textbox untuk mennginput pattern dan button “search” tidak dapat di-click maupun di ketik. Pada saat diunduh dengan button “browse”, maka textbox teks browse akan menampilkan lokasi folder didalam komputer. Pada listbox akan muncul daftar file text yang terdapat dalam folder yang diinputkan ke aplikasi. Pada halaman ini juga dapat ditentukan secara langsung oleh user jumlah daftar file text yang terdapat dalam folder tersebut.
Pada listbox disertai dengan button “previous” dan “next” untuk berpindah page dari hasil pencarian.
4.1.3. Halaman Rincian
Pada halaman rincian akan ditampilkan hasil dari pencocokan pattern yang terjadi pada halaman utama. Halaman ini akan muncul jika user mengklik salah satu
daftar yang ada pada listbox halaman utama baik itu algoritma Apostolico- Chrochemore dan algoritma Optimal Mismatch. Tampilan halaman rincian dapat dilihat pada gambar 4.3. berikut :
Gambar 4.3. Halaman Rincian
Pada halaman ini user dapat melihat hasil dari pencocokan pattern dengan string yang diinputkan kedalam aplikasi. Halaman rincian berisikan textbox file name, dimana akan ditampilkan lokasi file teks pada komputer. Pada halaman ini juga akan ditampilkan jumlah string yang memiliki kecocokan dengan pattern yang inputkan pada halaman utama. User juga dapat melihat persentase kecocokan yang didapatkatkan dari proses pencocokan pattern dengan string. Hal tersebut dapat dilihat pada textbox “the percentage of matches”. Pada text box yang berukuran lebih besar juga akan ditampilkan isi dari file teks yang di klik pada halaman utama. Pada Halaman rincian tidak memiliki menu strip apapun. Jika ingin kembali ke halaman sebelumnya maka klik “X” pada sudut kanan atas halaman rincian.
4.1.4. Halaman Bantuan
Halaman bantuan merupakan halaman yang berisi panduan dalam menggunakan aplikasi ini. Tampilan halaman bantuan dapat dilihat pada gambar 4.4. berikut :
Gambar 4.4. Halaman Bantuan
Halaman ini akan memuat tentang bagaimana cara memakai aplikasi ini. Pada halaman ini di jelaskan pertahap- tahap cara menggunakan aplikasi ini. Pada Halaman bantuan tidak memiliki menu strip apapun. Jika ingin kembali ke halaman sebelumnya maka klik “X” pada sudut kanan atas halaman bantuan.
4.1.5. Record to Notepad
File record merupakan keluaran dari aplikasi ini. File ini berisi hasil pencarian yang tertera pada listbox beserta keterangan pattern yang dicocokkan dan lokasi folder yang dicari. Tampilan record to Notepad dapat dilihat pada gambar 4.5.
berikut :
Gambar 4.5. Record to notepad
Tampilan ini akan muncul sebagai hasil dari halaman utama. Muncul ketika button “eskport record to notepad” diklik.
4.2. Pengujian Sistem
Pengujian sisstem dilakukan dengan tujuan memastikan sitem yang telah dibangun dapat berjalan dengan baik sesuai analisis dan perancangan sistem yang telah dibuat sebelumnya. Fokus utama pada pengujian penelitian ini adalah seberapa efektif dan efisien penerapan dari kinerja sistem yang dibangun.
Untuk melakukan pengujian terhadap sistem, dibutuhkan perangkat keras yang mendukung kinerja pengujian. Spesifikasi dari perangkat keras yang digunakan adalah :
1. Processor : Intel(R) Core(TM)i5 CPU M 520 @2.40Ghz 2. RAM 4.00 GB
3. Sistem Operasi Windows 10 Pro Service Pack 1 64 bit
Sampel file text yang digunakan untuk pengujian file berformat .pdf yang berisi string dengan panjang 6573 karakter. Sampel pattern yang digunakan adalah string dengan kisaran panjang 3 sampai 66 karakter. Untuk mengetahui setiap
proses dilakukan dengan baik dengan hasil yang benar, maka dilakukan tes secara manual. Pengujian dilakukan pada teks UU MD3 yaitu UU Nomor 2 Tahun 2018.
4.2.1. Pengujian Algoritma Apostolico-Crochemore
Sebelum melakukan proses pencocokan algoritma Apostolico-Crochemore memiliki fase prerocessing untuk menentukan nilai pergeseran. Pada bab kedua sebelumnya sudah dipaparkan tahap menentukan nilai pergeseran dengan tabel KmpNext pada fase prerocessing. Tabel pergeseran untuk pattern ‘wujud’ dapat dilihat pada tabel 4.1. berikut ini.
Tabel 4.1. Nilai pergeseran kmpNext pattern ‘wujud’
i 0 1 2 3 4 5
x[i] w u j u d *
kmpNext[i] -1 0 0 0 0 0
l=1
pada proses pencarian pertama pattern akan dicocokan dengan isi dari teks UU MD3. Selanjutnya proses pencocokan string dilakukan.
Tahap 1
Perbandingan perkarakter dimulai dari indeks ke 1 pada pattern x
m e w u j u d k a n k e d a u l a T a n 1
w u j u d
shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 2
m e w u j u d k a n k e d a u l a T a n 1
w u j u d
shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 3
m e w u j u d k a n k e d a u l a T a n 5 1 2 3 4
w u j u d
Pada tahap ke-3, pattern x ditemukan di dalam teks y. Jumlah perbandingan yang dilakukan untuk mendapatkan pattern x dilakukan sebanyak 7 kali.
Jika pencarian dilakukan terus sampai teks habis maka pattern digeser sebanyak 5 – kmpNext[5] = 5 – 0 = 5 karakter.
Tahap 4
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 5
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 6
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 7
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 8
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 9
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 10
m e w u j u d k a n k e d a u l a T a n 1
w u j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 11
m e w u j u d k a n k e d a u l a T a n 1 2
w u j u D Shift = 2 – kmpNext[1] = 2 – 0 = 2 karakter
Tahap 12
m e w u j u d k a n k e d a u l a T a n 1
w u J u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Tahap 13
m e w u j u d k a n k e d a u l a T a n 1
w U j u d Shift = 1 – kmpNext[1] = 1 – 0 = 1 karakter
Pada tahap ke 13, seluruh teks telah habis dicari. Maka total perbandingan yang dilakukan seluruhnya sampai teks habis 22 kali.
4.2.2. Pengujian Algoritma Optimal Mismatch
Sebelum melakukan proses pencocokan, algoritma optimal mismatch memiliki tahap preprocessing untuk menetukan nilai pergeseran. Terdapat tiga tahap yang harus dilewati. Tahap pertama, order pattern (pengurutan pattern). Tahap kedua adalah prosedur quick search bad character (QsBc). Tahap ketiga adalah pencarian nilai pergeseran karakter dalam teks menggunakan adaptedGs.