• Tidak ada hasil yang ditemukan

Gambar 2.1 Diagram Alir Algoritma Rabin-Karp

N/A
N/A
Protected

Academic year: 2021

Membagikan "Gambar 2.1 Diagram Alir Algoritma Rabin-Karp"

Copied!
11
0
0

Teks penuh

(1)

9

Algoritma Rabin-Karp diciptakan oleh Michael O. Rabin dan Richard M.

Karp pada tahun 1987 yang menggunakan fungsi hashing untuk menemukan pattern di dalam string teks (Gipp, 2011). Algoortima Rabin-Karp (Gambar 2.1) digunakan sebagai algoritma deteksi kesamaan pada dokumen tugas akhir.

Algoritma ini memiliki beberapa keunggulan dalam penerapannya, salah satunya adalah algoritma ini sangat cocok digunakan untuk string yang panjang.

Gambar 2.1 Diagram Alir Algoritma Rabin-Karp

(2)

Karakteristik algoritma Rabin-Karp, yaitu 1) Menggunakan sebuah fungsi hashing

2) Tahap prepocessing menggunakan kompleksitas waktu O(m) 3) Untuk tahap pencarian kompleksitasnya : O(mn)

4) Waktu yang diperlukan O(n+m)

Dalam algoritma Rabin-Karp, ada beberapa tahap yang harus dilelalui dalam implementasi algoritma tersebut.

1) Preprocessing

Tahap ini melakukan analisis semantik (kebenaran arti) dan sintaktik (kebenaran susunan) teks. Tujuan dari pemrosesan awal adalah untuk mempersiapkan teks menjadi data yang mengalami pengolahan lebih lanjut.

Pembersihan yang dilakukan adalah pembersihan suatu teks dari karakter-karakter yang bersifat sebagai stoplist, dimana karakter tersebut banyak dan pasti muncul dalam setiap teks.

2) Rolling Hash

Fungsi yang digunakan untuk menghasilkan nilai hash dari rangkaian gram dalam algoritma Rabin-Karp adalah dengan menggunakan fungsi rolling hash.

Fungsi hash 𝐻(𝐶1…𝐶𝑘) didefinisikan sebagai berikut,

𝑐1∗ 𝑏(𝑘−1)+ 𝑐2∗ 𝑏(𝑘−2)+ ⋯ + 𝑐(𝑘−1)∗ 𝑏𝑘+ 𝑐𝑘

Keterangan :

c : nilai ASCII karakter b : basis (bilangan prima) k : banyak karakter

Kode Standar Amerika untuk Pertukaran Informasi atau ASCII (American Standard Code for Information Interchange) merupakan suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal. Contoh bilangan ASCII dari suatu karakter adalah karakater A dengan nilai 65 atau karakter © dengan nilai 169. Dalam matematika,

(3)

bilangan prima adalah suatu bilangan asli yang lebih besar dari angka 1, faktor pembaginya adalah 1 dan bilangan itu sendiri. Angka 2 dan 3 adalah bilangan prima. Angka empat bukan bilangan prima. Sepuluh bilangan prima pertama adalah 2, 3, 5, 7, 11, 13, 17, 19, 23 dan 29.

N-grams adalah rangkaian terms dengan panjang N (Surahman, 2013).

Kebanyakan yang digunakan sebagai terms adalah kata. N-grams merupakan sebuah metode yang diaplikasikan untuk pembangkitan kata atau karakter. Metode n-grams ini digunakan untuk mengambil potongan-potongan karakter huruf sejumlah n dari sebuah kata yang secara kontinuitas dibaca dari teks sumber hingga akhir dari dokumen.. Berikut ini adalah contoh n-grams dengan n=6:

[1] Teks : proposal tugas akhir ilmu komputer

[2] Hasil : {propos}{roposa}{oposal}{posal }{osal t}{sal tu}{al tug}

{l tuga}{ tugas}{tugas }{ugas a}{gas ak}{as akh}{s akhi}

{ akhir}{akhir }{khir i}{hir il}{ir ilm}{r ilmu}{ ilmu }{ilmu k}

{lmu ko}{mu kom}{u komp}{ kompu}{komput}{ompute}{mputer}

Contoh Hashing

Metode hashing digunakan untuk mempercepat pencarian atau pencocokan suatu string. Apabila tidak di-hash, pencarian dilakukan karakter per karakter pada nama-namayang panjangnya bervariasi dan ada 26 kemungkinan pada setiap karakter. Namun pencarian menjadi lebih mangkus setelah di-hash karena hanya membandingkan beberapa digit angka dengan cuma 10 kemungkinan setiap angka. Nilai hash pada umumnya digambarkan sebagai fingerprint yaitu suatu string pendek yang terdiri atas huruf dan angka yang terlihat acak (data biner yang ditulis dalam heksadesimal). Contoh sederhana hashing adalah (Firdaus, 2008):

Firdaus, Hari Munir, Rinaldi Rabin, Michael Karp, Richard menjadi

(4)

7864 : Firdaus,Hari 9802 : Munir, Rinaldi 1990 : Rabin, Michae 8822 : Karp, Richard 3) Pencocokan

Pada processing, setiap m deret (kontigu) karakter pada field pencarian dicari hash key dengan cara yang sama dengan pencarian hash key untuk pattern.

Perlu diingat dengan menggunakan aturan horner, pencarian untuk m deret karakter dapat dengan mudah dihitung dari m deret karakter predesesornya.

Sedangkan untuk proses pencocokannya, dipakai sebuah teorema yaitu

Sebuah stringA identik dengan stringB, jika (syarat perlu) stringA memliki hash key yang sama dengan hash key yang dimiliki oleh stringB

4) Pengukuran Nilai Kemiripan

Mengukur similarity (kemiripan) dan jarak antara dua entitas informasi adalah syarat inti pada semua kasus penemuan informasi, seperti pada Information Retrieval dan Data Mining yang kemudian dikembangkan dalam bentuk perangkat lunak, salah satunya adalah sistem deteksi kesamaan (Salmusih, 2013).

Penggunaan ukuran similarity yang tepat tidak hanya meningkatkan kualitas pilihan informasi tetapi juga membantu mengurangi waktu dan biaya proses sehingga mengperangkat lunakkan Dice's Similarity Coefficient dalam penghitungan nilai similarity yang menggunakan pendekatan kgram.

𝑆 = 𝐾 × 𝐶 (𝐴 + 𝐵)

Dimana S adalah nilai similarity, A dan B adalah jumlah dari kumpulan n- grams dalam teks 1 dan teks 2. C adalah jumlah dari n-grams yang sama dari teks yang dibandingkan. Berikut adalah contoh dari penggunaan rumus tersebut.

Terdapat dua buah dokumen teks (dok A dan dok B) dengan nilai n-gram masing- masing dokumen secara bertutur-turut adalah 2608 dan 3040, sedangkan nilai n-

(5)

gram yang sama adalah sebesar 1203. Maka hasil nilai dari kemiripan kedua dokumen tersebut adalah

𝑆 = 𝐾 × 𝐶

(𝐴 + 𝐵) = 2 × 1203 (2608 + 3040) = 2406

5648= 0,4259 𝑥 100% = 42,59%

2.2 Pengembangan dan Pengujian Perangkat Lunak 2.2.1 Pengembangan Model Spiral

Model spiral (Gambar 2.2) dari proses perangkat lunak pada awalnya diusulkan oleh Boehm. Daripada mewakili proses perangkat lunak sebagai urutan aktivitas dengan melakukan penarikan kembali dari satu aktivitas ke aktivitas lainnya, proses ini direpresentasikan sebagai bentuk spiral. Setiap loop dalam model spiral merepresentasikan tahap dari proses perangkat lunak.

Dengan demikian, loop terdalam berhubungan dengan kelayakan sistem, loop berikutnya dengan definisi persyaratan, loop berikutnya dengan sistem desain dan sebagainya.

Setiap loop dalam spiral dibagi menjadi empat sektor:

1) Objective setting. Tujuan khusus untuk itu tahap dimana proyek didefinisikan. Kendala pada proses dan produk diidentifikasi dan rencana manajemen yang dengan rinci disusun. Risiko proyek diidentifikasi.

Strategi alternatif, tergantung pada risiko yang timbul, dapat direncanakan.

2) Risk assessment and reduction. Untuk setiap risiko proyek diidentifikasi, analisis yang rinci dilakukan. Langkah-langkah yang diambil untuk mengurangi risiko. Sebagai contoh, jika ada resiko bahwa persyaratan tidak sesuai, sistem prototipe dapat dikembangkan.

3) Development and validation. Setelah evaluasi resiko, sebuah model pengembangan untuk sistem dipilih. Misalnya, jika resiko antarmuka pengguna lebih dominan, model pembangunan yang tepat mungkin adalah prototyping evolusioner. Jika resiko keselamatan adalah pertimbangan utama, pembangunan berbasis pada transformasi formal mungkin yang

(6)

paling tepat dan sebagainya. Model air terjun mungkin model pembangunan yang paling tepat jika resiko yang diidentifikasi utama adalah integrasi subsistem.

4) Planning. Proyek ini ditinjau dan keputusan dibuat apakah melanjutkan dengan loop lanjut spiral. Jika memutuskan untuk melanjutkan, rencana disusun untuk tahap berikutnya dari proyek ini.

Gambar 2.2 Model Spiral Boehm (Sommerville, 2007)

Perbedaan utama antara model spiral dan model proses perangkat lunak lain adalah pengakuan eksplisit risiko dalam model spiral. Secara informal, risiko hanya berarti sesuatu yang bisa salah. Sebagai contoh, jika tujuannya adalah untuk menggunakan bahasa pemrograman baru, risiko adalah bahwa kompiler yang tersedia tidak dapat diandalkan atau tidak menghasilkan kode obyek cukup efisien. Risiko mengakibatkan masalah proyek seperti jadwal dan cost overrun sehingga minimalisasi risiko adalah kegiatan manajemen proyek yang sangat penting. Manajemen risiko, merupakan bagian penting dari manajemen proyek.

Siklus spiral dimulai dengan mengelaborasi tujuan seperti kinerja dan fungsionalitas. Cara-cara alternatif untuk mencapai tujuan tersebut dan kendala yang dikenakan pada masing-masing kemudian dicacah. Setiap alternatif dinilai terhadap masing-masing tujuan dan sumber risiko proyek diidentifikasi. Langkah berikutnya adalah untuk mengatasi risiko ini dengan kegiatan pengumpulan-

(7)

informasi seperti analisis yang lebih rinci, prototyping dan simulasi. Setelah resiko telah dinilai, beberapa pengembangan dilakukan, diikuti dengan kegiatan perencanaan untuk tahap berikutnya dari proses.

2.2.2 Pengujian Perangkat Lunak

Setelah sistem berhasil dibuat, maka dilakukan berbagai macam pengujian.

Serangkain pengujian dilakukan untuk menguji sebuah perangkat lunak berkerja sebagaimana mestinya. Terdapat empat jenis pengujian, yakni static testing, white box testing, black box testing dan performance testing.

1. Pengujian Statis (Static Testing)

Pengujian ini membuat suatu bentuk dokumen dokumentasi pengembangan perangkat lunak, kebutuhan awal dari sistem dibandingkan kembali dengan hasil perancangan yang telah dibangun. Sehingga sistem tidak hanya diuji ketika sudah terimplementasi, tapi pada perancangan juga dilakukan suatu pengujian untuk memeriksa kebenaran dari kebutuhan pengguna terhadap perancangan yang dibuat.

2. Pengujian Kotak Putih (White box Testing)

Pengujian kotak putih atau white box testing adalah jenis pengujian perangkat lunak yang dapat dilakukan ketika memiliki kode sumber program dan program itu sendiri. Dengan memilki kode sumber, pengembang dan anggota tim pengujian memiliki kesempatan untuk meninjau dan menguji setiap baris kode tersebut. Bahkan dengan semua kode sumber yang tersedia, biasanya ada cukup waktu atau sumber daya untuk menguji seluruh kode sumber program.

Salah satu metode yang digunakan dalam pengujian secara white box adalah pengujian basis path testing. Dalam pelaksanaan pengujian white box, berikut langkah yang dilakukan (Pressman, 2001), yaitu:

a. Menggambar flowgraph yang ditransfer oleh flowchart.

b. Menghitung Cylomatic Complexity V (G) untuk flowgraph yang telah dibuat. V(G) untuk flowgraph dapat dihitung dengan rumus :

c. V(G) = E – N + 2 Keterangan:

E = Jumlah edge pada flowrgaph N = Jumlah node pada flowrgaph

(8)

d. Menentukan jalur pengujian dari flowgraph yang berjumlah sesuai dengan cyclomatic complexity yang telah ditentukan.

Cyclomatic complexity yang tinggi menunjukkan prosedur kompleks yang sulit untuk dipahami, diuji dan dipelihara. Ada hubungan antara cyclomatic complexity dan resiko (Tabel 2.1) dalam suatu prosedur. Berikut hubungan antara cyclomatic complexity dan resiko dalam suatu prosedur.

Tabel 2.1 Hubungan Cyclomatic Complexity dan Resiko (Bray, 1997) Cyclomatic Complexity Evaluasi Resiko

1-10 Sebuah program sederhana, tanpa banyak resiko

11-20 Agak kompleks, resiko sedang

21-50 Kompleks, program resiko tinggi

Lebih dari 50 Program belum diuji (resiko sangat tinggi) 3. Pengujian Kotak Hitam (Black box Testing)

Pengujian kotak hitam atau black box testing adalah jenis pengujian perangkat lunak yang dapat dilakukan ketika tidak memiliki kode sumber, hanya memiliki program hasil eksekusi kode tersebut. Situasi ini terjadi di beberapa titik dalam proses pembangunan suatu perangkat lunak. Sekelompok penguji, pengguna akhir, pakar bisnis dan pengembang adalah tim terbaik untuk melakukan pengujian jenis ini. Pengguna akhir memberikan kontribusi pengetahuan substansial tentang perilaku yang tepat yang diharapkan dari perangkat lunak. Pengembang memberikan kontribusi pengetahuan substansial tentang perilaku bisnis seperti yang diterapkan dalam perangkat lunak. Pengujian kotak hitam dengan pengguna akhir dan pengembang memvalidasi hasil uji yang sebenarnya. Pengujian kotak hitam juga disebut sebagai pengujian perilaku karena pada pengujian ini menguji seluruh fungsi yang seharusnya dimiliki perangkat lunak dapat berfungsi sebagaimana mestinya.

4. Pengujian Kinerja (Performance Testing)

Pengujian kinerja atau performance testing adalah jenis pengujian perangkat lunak yang dapat dilakukan setelah perangkat lunak telah ditunjukkan beroperasi dengan benar. Pengujian berubah dari penentuan kebenaran fungsi yang bekerja dari perangkat lunak ke waktu respon perangkat lunak. Perubahan penekanan ini terjadi di beberapa titik dekat dengn akhir proses pengembangan

(9)

perangkat lunak. Pengujian kinerja adalah kompleks dan membutuhkan sejumlah keterampilan pengujian yang biasanya ditemukan dalam sebuah tim penguji khusus daripada satu individu.

Sistem yang diuji harus dimulai dari kosong dan dibesarkan untuk berbagai macam proses dalam beberapa cara yang terkontrol. Pengukuran diambil pada respon secara individual dan kolektif selama pelaksanaan pengujian tersebut.

Ketika tes kinerja gagal, jika suatu proses berjalan terlalu lambat atau tidak cukup diselesaikan per unit waktu. Dengan dilakukannya pengujian jenis ini, maka kemampuan sistem dalam mengerjakan suatu proses dapat ditentukan, sehingga bentuk antisipasi kedepannya juga diharapkan dapat dibuat.

2.2.2.1 Strategi Pengujian Dua Dimensi

Telah diketahui sebelumnya, bahwa tedapat empat jenis pengujian yang dapat dilakukan terhadap perangkat lunak dalam pengembangannya (static testing, white box testing, black box testing dan performance testing). Keempat jenis tersebut digunakan dalam teknik pengujian perangkat lunak dengan teknik papan catur atau chess board (Gambar 2.3).

Gambar 2.3 Strategi Pengujian Papan Catur (Everett, 2007)

(10)

Terdapat beberapa bagian yang ada, yakni bagian horizontal (sumbu x) yang merupakan bagian yang terdiri dari tahapan-tahapan pengembangan perangkat lunak, bagian vertikal (sumbu y) yang merupakan bagian perangkat lunak yang diperlukan dalam pengoprasian perangkat lunak tersebut dan bagian kanan atas yang merupakan legenda atau legend yang terdapat jenis pengujian perangkat lunak yang telah diwakili oleh simbol tertentu.

2.3 Tinjaun Studi

i. Deteksi Kesamaan Dokumen Menggunakan Algoritma Rabin-Karp (Firdaus, 2008)

Pada jurnal penelitian ini, peneliti hanya membahas secara skematis bagaimana algoritma Rabin-Karp bekerja dalam mendeteksi kesamaan pada suatu dokumen, bukan implementasinya dalam sebuah program atau perangkat lunak.

Algoritma Rabin-Karp digunakan dalam mendeteksi kesamaan sebab memungkinkan untuk mencari pola tulisan yang didapat dari substring-substring pada sebuah teks dalam dokumen, dimana algoritma pencarian string tunggal sangat tidak efisien dan praktis. Untuk peningkatan akurasi pencarian pola dokumen kesamaan, dapat dikembangkan varian dari algoritma Rabin-Karp untuk menyesuaikan dengan jenis dokumen. Salah satu contohnya menyesuaikan filtering dengan menambah atau mengubah kata-kata apa saja yang dapat diabaikan dan yang tidak. Selain itu dapat pula melakukan teknik pengelompokkan nilai hash. Dalam penelitian ini dihasilkan suatu kesimpulan bahwa algoritma Rabin-Karp menghasilkan efisiensi waktu yang baik dalam mendeteksi string yang memiliki lebih dari satu pola. Hal ini membuat algoritma Rabin-Karp dimanfaatkan dalam melakukan pendeteksian terhadap tindak kesamaan dokumen.

ii. Implementasi Algoritma Rabin-Karp untuk Pendeteksi Dokumen Teks Menggunakan Konsep Similarity (Salmusih, 2013)

Pada jurnal penelitian ini, peneliti menerapkan pendekatan ssecara trategis algotirma Rabin-Karp, yang merupakan algoritma pencarian multiple-pattern.

Algoritma ini adalah salah satu yang terbaik dalam menganalisis kesesuaian antara dokumen. Hasil akhir adalah persentase kesamaan antara dokumen yang

(11)

diuji. Algoritma Rabin-Karp diimplementasikan ke dalam bentuk sistem program.

Tahapan kerja sistem tersebut dimulai dari input sistem yang diperoleh dari berkas atau dokumen yang diunggah oleh pengguna. Selanjutnya dokumen melewati tahap preprocessing menggunakan text mining. Setelah itu, dokumen hasil preprocess melewati tahap processing menggunakan algoritma Rabin -Karp.

Tahap ini adalah tahap pencocokan dokumen. Hasil pencocokan string kemudian dihitung nilai similarity menggunakan Dice's Similarity Coefficient, yang kemudian nilai tersebut diubah ke dalam bentuk persentase similarity. Kesimpulan yang dapat ditarik dalam penelitian ini adalah bahwa sistem dalam membandingkan berkas memberikan hasil berupa prrsentase similarity. Beberapa faktor yang mempengaruhi performa algoritma Rabin-Karp, diantaranya banyaknya konten sebuah berkas, waktu stemming dan preprocessing dan nilai kgram.

iii. Perancangan Sistem Penentuan Similarity Kode Program pada Bahasa C dan Pascal dengan Menggunakan Algoritma Rabin-Karp (Surahman, 2013)

Masalah yang diangkat dalam penelitian ini yaitu bentuk kecurangan yang sering terjadi akibat perkembangan teknologi adalah menjiplak hasil karya orang lain yang kemudian menjadikan seolah-olah hasil karyanya sendiri. Pencegahan dalam pencontekan merupakan salah satu cara yang paling efektif untuk meningkatkan kualitas pendidikan, sehingga mahasiswa institusi pendidikan dapat mengembangkan kreativitas serta imajinasinya secara alamiah. Menerapkan algortima Rabin-Karp untuk membuat suatu sistem yang mampu mendeteksi kesamaan pada kode pemrograman bahasa C dan Pascal. Setelah dilakukannya serangkain proses pengujian dan hasil yang didapat, kesimpulan yang dapat diambil adalah aplikasi yang dirancang dapat melakukan pengecekan similairty kode program, tingkat persentase similarity dipengaruhi oleh nilai dari n-gram, waktu proses di tahap preprocessing berbeda pada setiap jenis dan panjang kode program yang diuji dan aplikasi yang dirancang diharapkan membantu proses evaluasi hasil belajar mahasiswa baik itu berupa tugas maupun dalam ujian.

Gambar

Gambar 2.1 Diagram Alir Algoritma Rabin-Karp
Gambar 2.2 Model Spiral Boehm (Sommerville, 2007)
Tabel 2.1 Hubungan Cyclomatic Complexity dan Resiko (Bray, 1997)  Cyclomatic Complexity Evaluasi Resiko
Gambar 2.3 Strategi Pengujian Papan Catur (Everett, 2007)

Referensi

Dokumen terkait

Perairan Muara Badak memiliki 24 jenis plankton, dari hasil analisis indeks keanekaragaman, indeks keseragaman dan indeks dominansi menunjukkan bahwa perairan ini

q) Mengesahkan pengisian lowongan antar waktu jabatan Kepengurusan di DPTP, DPTKK , DPTKC GENPENUS, berdasarkan usulan dari DPTP, DPTKK , DPTKC GENPENUS yang

Metodologi penelitian yang digunakan dalam pembuatan Program Visualisasi Panduan Manasik Haji Bagi Calon Jamaah Haji ini diawali dengan pengumpulan data,

Langkah kemudian yaitu memahami proses keputusan pembelian mulai dari tahap awal mengenai pemahaman masalah, pencarian informasi, pemilihan alternatif, keputusan

Kebijakan puritanisme oleh sultan Aurangzeb dan pengislaman orang-orang Hindu secara paksa demi menjadikan tanah India sebagai negara Islam, dengan menyerang berbagai praktek

Jadi secara umum Museum Kapal Perang TNI AL di Surabaya ini mempunyai pengertian merupakan bangunan fasilitas umum yang berfungsi sebagai tempat untuk

Sekiranya ruang makan khusus tidak dapat disediakan, ruang yang sesuai di luar bangunan seperti di serambi boleh dijadikan sebagai ruang makan dengan dibina 2

Kelas S3 : Lahan mempuyai faktor pembatas yang sedang, lebih dari satu faktor dan faktor pembatas ini akan sangat berpengaruh terhadap produktivitasnya, faktor pembatas