Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat...

14
9 BAB II TINJAUAN PUSTAKA 2.1 Algoritma Rabin-Karp Algoritma Rabin-Karp adalah suatu algoritma pencarian string yang diciptakan Michael O. Rabin dan Richard M. Karp pada tahun 1987 yang menggunakan fungsi hashing untuk menemukan pola berupa substring di dalam sebuah teks. Algoritma ini jarang digunakan untuk melakukan pencarian kata tunggal, namun sangat efektif apabila digunakan untuk pencarian lebih dari satu kata (Atmopawiro, 2006). Dalam implementasinya Algoritma Rabin Karp memiliki tahapan – tahapan dalam yang harus dilalui seperti yang digambarkan pada flowchart pada Gambar 2.1 berikut. MULAI Teks : string Pattern : string i=0 Menghitung Nilai Hash i=Hash teks. length Nilai String Sama Bertambah Hash teks[i] = Hash pattern Ya SELESAI Membentuk K-Gram Substring teks : array Pattern Hash teks : array Hash pattern : string Substring teks[i] = Substring pattern Ya Ya Hitung similarity pattern dan teks Tidak Tidak Tidak Gambar 2.1 Flowchart Algoritma Rabin-Karp

Transcript of Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat...

Page 1: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

9

BAB II

TINJAUAN PUSTAKA

2.1 Algoritma Rabin-Karp

Algoritma Rabin-Karp adalah suatu algoritma pencarian string yang

diciptakan Michael O. Rabin dan Richard M. Karp pada tahun 1987 yang

menggunakan fungsi hashing untuk menemukan pola berupa substring di dalam

sebuah teks. Algoritma ini jarang digunakan untuk melakukan pencarian kata

tunggal, namun sangat efektif apabila digunakan untuk pencarian lebih dari satu

kata (Atmopawiro, 2006). Dalam implementasinya Algoritma Rabin Karp

memiliki tahapan – tahapan dalam yang harus dilalui seperti yang digambarkan

pada flowchart pada Gambar 2.1 berikut.

MULAI

Teks : stringPattern : string

i=0

Menghitung Nilai Hash

i=Hash teks. length

Nilai String Sama Bertambah

Hash teks[i] = Hash pattern

Ya

SELESAI

Membentuk K-Gram

Substring teks : arrayPattern

Hash teks : arrayHash pattern :

string

Substring teks[i] = Substring pattern

Ya

Ya

Hitung similarity pattern dan teks

Tidak

Tidak

Tidak

Gambar 2.1 Flowchart Algoritma Rabin-Karp

Page 2: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

10

Dalam algoritma Rabin-Karp, ada beberapa tahap yang harus dilalui dalam

implementasi algoritma tersebut.

1) Preprocessing

Tahap ini adalah tahap dimana dilakukan pemrosesan awal untuk

mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan

diubah ke dalam bentuk k-grams, dimana dalam hal ini teks akan dipotong – potong

dengan panjang K dari sebuah teks yang secara kontinuitas dibaca dari awal

dokumen hingga akhir dari dokumen.

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) ∗ 𝑏𝑘 + 𝑐𝑘…………………….. (2.1)

Keterangan :

c : nilai ASCII karakter

b : basis (bilangan prima)

k : banyak karakter

Metode hashing digunakan untuk mempercepat pencarian atau pencocokan

suatu string. Apabila tidak di-hash, pencarian akan dilakukan karakter per karakter.

Namun pencarian akan menjadi lebih mangkus setelah di-hash karena hanya akan

membandingkan empat digit angka untuk mengetahui kesamaan suatu substring.

Berikut ini merupakan contoh penghitungan rolling hash dengan k-grams

= 6 dan basis = 101:

Diketahui

Teks : abracadabra

ASCII : a = 97, b = 98, r = 114

Maka

hash(“abr”) = ( 97 x 1012 ) + ( 98 x 1011 ) + ( 114 x 1010 ) = 999.509

Untuk menghitung nilai hash dari substring selanjutnya, dapat dilakukan

dengan mengurangi hash dengan nilai dari karakter yang hilang kemudian

Page 3: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

11

mengalikannya dengan basis dan menambahkannya dengan nilai karakter yang

ditambahkan.

hash(“bra”) = [101 x ( 999.509 – (97 x 1012 ))] + ( 97 x 1010 ) = 1.011.309

3) Pencocokan

Proses pencocokan dalam Algoritma Rabin-Karp dilakukan dengan

menggunakan 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 memperangkat

lunakkan Dice's Similarity Coefficient dalam penghitungan nilai similarity yang

menggunakan pendekatan k-gram.

𝑆 = 𝐾 × 𝐶

(𝐴+𝐵)……………………………………………..(2.2)

Dimana S adalah nilai similarity, A dan B adalah jumlah dari kumpulan k-

grams dalam teks 1 dan teks 2. C adalah jumlah dari k-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 k-gram masing-

masing dokumen secara bertutur-turut adalah 2608 dan 3040, sedangkan nilai k-

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%

Page 4: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

12

2.2 Peningkatan Performa Algoritma Rabin-Karp

Pada Algoritma Rabin-Karp spurious hit merupakan beban tambahan bagi

algoritma yang akan meningkatkan waktu proses. Hal ini dikarenakan algoritma

harus membandingkan pola terhadap teks yang hasil modulonya sama tetapi nilai

hashnya berbeda. Untuk menghindari pencocokan yang tidak perlu, Chillar dan

Kochar (2008) memberikan solusi untuk tidak hanya membandingkan sisa hasil

bagi, tetapi membandingkan hasil baginya juga.

Jadi, successful hit harus memenuhi dua syarat, yaitu nilai sisa hasil bagi

dan nilai hasil baginya harus sama. Selebihnya adalah unsuccessful hit tanpa perlu

melakukan pencocokan lagi. Hal ini berarti tidak ada pemborosan waktu untuk

mengecek spurious hit.

Berikut merupakan flowchart dari Algoritma Rabin-Karp yang telah

dimodifikasi:

MULAI

Teks : stringPattern : string

i=0

Menghitung Nilai Hash

i=Hash teks. length

Nilai String Sama Bertambah

Hash teks[mod][i] = Hash mod pattern && Hash teks[div][i] = Hash

div patternYa

SELESAI

Membentuk K-Gram

Substring teks : arrayPattern

Hash teks : arrayHash mod pattern: stringHash div pattern : string

Ya

Hitung similarity pattern dan teks

Tidak

Tidak

Gambar 2.2 Flowchart Algoritma Rabin-Karp varian Chillar - Kochar

Page 5: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

13

2.3 Text Preprocessing

Melihat dari kemungkinan berbagai macam bentuk struktur data teks yang

akan diproses, maka sebelum dilakukannya penghitungan kesamaan teks perlu

dilakukan beberapa tahap awal yang bertujuan untuk agar teks dapat diubah

menjadi lebih terstruktur dan menghilangkan noise pada dokumen. Proses

preprocessing tersebut meliputi case folding, tokenizing, filtering, dan stemming.

Gambar 2.3 berikut merupakan gambaran dari tahapan – tahapan text preprocessing

Gambar 2.3 Tahapan Text Preprocessing

2.3.1 Case Folding

Case folding merupakan proses pertama dari rangkaian preprocessing

dokumen. Dalam proses ini akan dilakukan perubahan pada kata – kata dalam

dokumen menjadi huruf kecil (a sampai z). Gambar 2.4 menunjukan flowchart dari

proses case folding.

Page 6: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

14

MULAI

Teks : array of chari=0

Teks[i] = lower case( Teks[i] )

i=Teks.length

Tidak

SELESAI

Ya

Gambar 2.4 Flowchart Case Folding

Berikut ini merupakan contoh dari proses case folding :

[1] Input : Rabin Karp adalah algoritma pencarian kata yang mencari sebuah

pola dalam sebuah teks.

[2] Output : rabin karp adalah algoritma pencarian kata yang mencari sebuah

pola dalam sebuah teks.

2.3.2 Tokenizing

Tokenizing merupakan tahapan dimana dilakukannya pemotongan terhadap

string input berdasarkan atas delimiter yang telah ditentukan. Karakter selain huruf

akan dianggap sebagai delimiter dan akan dihilangkan atau dihapus untuk proses

mendapat kata – kata penyusun teks. Dari proses ini akan dihasilkan kata – kata

penyusun string / teks atau yang sering disebut token/term.

Page 7: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

15

MULAI

Teks : array of charDelimiter : array of char

stringKata : array of string

i=0, j=0Count = 0

Teks[i] = Delimiter[j]

i=Teks.length

Tidak

j=0Kata[i] = Substring

Substring =

SELESAI

Ya

Kata

Ya

j++Substring =

Substring + Teks[i]

Tidak

Gambar 2.5 Flowchart Tokenizing

Berikut ini merupakan contoh dari proses tokenizing :

[1] Input : rabin karp adalah algoritma pencarian kata yang mencari sebuah

pola dalam sebuah teks.

[2] Output : {rabin} {karp} {adalah} {algoritma} {pencarian} {kata} {yang}

{mencari} {sebuah} {pola} {dalam} {sebuah} {teks}

2.3.3 Filtering

Filtering merupakan tahap pengambilan kata – kata penting dari hasil

tokenizing string. Filtering dilakukan dengan membuang kata – kata yang telah

terdaftar ke dalam stopword/stoplist. Stopword adalah kata-kata yang sering

muncul dalam teks dalam jumlah besar dan dianggap tidak memiliki makna

penting.

Page 8: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

16

MULAI

Kata : array of string Stop word : array of string

i : 0j : 0

Kata[i] = Stop word [j]

j++

Tidak

i = Kata.length

Ya

SELESAI

Hapus Kata[i]Ya

Tidaki++j=0

Kata

Gambar 2.6 Flowchart Filtering

Berikut ini merupakan contoh dari proses filtering :

[1] Input : {rabin} {karp} {adalah} {algoritma} {pencarian} {kata} {yang}

{mencari} {sebuah} {pola} {dalam} {sebuah} {teks}

[2] Output : {rabin} {karp} {algoritma} {pencarian} {kata} {mencari} {pola}

{teks}

2.3.4 Stemming

Stemming merupakan proses yang dilakukan untuk mendapatkan kata dasar

dari suatu kata. Stemming Nazief – Adriani merupakan suatu algoritma stemming

yang dibuat oleh Bobby Nazief dan Mirna Adriani.

Page 9: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

17

MULAI

Kata : String

Apakah kata terdapat di kamus kata dasar

SELESAI

Hapus Inflection Suffixes

Tidak

Apakah kata terdapat di kamus kata dasar

Hapus Derivation Suffixes

Tidak

Apakah kata terdapat di kamus kata dasar

Hapus Derivation Prefix

Tidak

Ya

Ya

Ya

Gambar 2. 7 Flowchart Stemming Nazief – Adriani

Pencarian kata dasar dilakukan dengan menghilangkan semua imbuhan dari

kata, baik itu awalan (prefiks), sisipan (infiks), maupun akhiran (suffiks).

Berikut ini merupakan contoh dari proses stemming :

[1] Input : {rabin} {karp} {algoritma} {pencarian} {kata} {mencari} {pola}

{teks}

[2] Output : {rabin} {karp} {algoritma} {cari} {kata} {cari} {pola} {teks}

2.4 Metode Pengembangan Waterfall

Model proses mencakup kegiatan yang merupakan bagian dari proses

perangkat lunak, produk perangkat lunak, dan peran orang yang terlibat dalam

Page 10: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

18

rekayasa perangkat lunak. Model proses Waterfall merupakan suatu model proses

klasik yang bersifat sistematis, berurutan dari satu tahap ke tahap lain dalam

membangun perangkat lunak (Sommerville, 2011).

Model proses Waterfall memiliki tahapan - tahapan dalam prosesnya, setiap

tahapan tersebut harus diselesaikan sebelum berlanjut ke tahap berikutnya. Berikut

tahapan yang ada dalam Waterfall adalah (Sommerville, 2011):

Gambar 2.8 Model proses waterfall

Berikut merupakan tahapan-tahapan dalam model proses Waterfall:

1) Analisis kebutuhan dan definisi (requirements analysis and definition)

Layanan sistem, kendala, dan tujuan yang ditetapkan dengan berkonsultasi

dengan pengguna sistem. Kemudian didefinisikan secara rinci dan dijadikan

sebagai spesifikasi sistem.

2) Design sistem dan perangkat lunak (system and software design)

Software desain meliputi mengidentifikasi dan menggambarkan abstraksi

sistem perangkat lunak yang mendasar dan hubungan mereka.

3) Implementasi dan pengujian unit (implementation and unit testing)

Selama tahap ini, perancangan perangkat lunak direalisasikan sebagai

serangkaian program atau unit program. Unit pengujian melibatkan

verifikasi bahwa setiap unit memenuhi spesifikasinya.

4) Integrasi dan pengujian sistem (integration and system testing)

Tahapan dimana unit program individu atau program yang terintegrasi diuji

sebagai sistem yang lengkap untuk memastikan bahwa persyaratan

Page 11: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

19

perangkat lunak telah dipenuhi. Setelah pengujian, sistem perangkat lunak

disampaikan kepada pengguna.

5) Pengoprasian dan maintenance (operation and maintenance)

Biasanya tahap ini merupakan tahapan dengan masa waktu paling lama.

Pemeliharaan meliputi kesalahan mengoreksi yang tidak ditemukan pada

awal tahap siklus hidup, meningkatkan implementasi unit sistem dan

meningkatkan pelayanan sistem sebagai kebutuhan baru ditemukan.

Model ini memiliki keunggulan dalam kemudahan pengaplikasiannya,

selain itu kelebihan lain yang dimiliki oleh model proses Waterfall adalah ketika

seluruh kebutuhan sistem dapat didefinisikan secara lengkap, eksplisit, dan benar

di awal proyek, maka fase - fase dalam pembangunan sistem akan dapat berjalan

dengan baik. Sedangkan kekurangan utama dari model proses Waterfall ini adalah

kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase

sebelumnya harus lengkap dan telah selesai sebelum dapat lanjut mengerjakan fase

berikutnya.

2.5 Pengujian Sistem

Terdapat 4 jenis pengujian yang dapat dilakukan pada suatu perangkat

lunak, yaitu static testing, blackbox testing, whitebox testing, performance testing

(Everett, 2007).

2.5.1 Static Testing

Sekitar 85% kecacatan perangkat lunak bisa dilihat pada fase design dari

pengembangan (Software Testing, Testing Across the Entire Software Development

Life Cycle), sehingga diperlukan sebuah pengujian pada fase design tersebut untuk

mengurangi cacat yang ada.

Pengujian dilakukan dengan cara menguji dokumen – dokumen pendukung

sistem, hal ini dilaksanakan dikarenakan proses dokumentasi telah dimulai dan

dibuat dari saat pengembangan dimulai, berlanjut, bahkan berakhir. Pengujian

dokumentasi dapat dilakukan dengan beberapa cara, diantaranya adalah dilakukan

dengan inspeksi, presentasi, walktrough, dan pengecekkan. Teknik – teknik tersebut

akan menguji kebenaran dan kelengkapan dari suatu dokumen. Dan apabila

Page 12: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

20

ditemukkan kekurangan atau kecacatan pada dokumen, maka dokumen tersebut

harus segera dikoreksi atau dibenahi.

2.5.2 Blackbox Testing

Blackbox Testing merupakan test yang dapat dilakukan walaupun tester

tidak memiliki source code dari software yang diuji, dan hanya yang software yang

bisa dijalankan. Testing blackbox dilakukan dengan menjalankan aplikasi dan

melakukan apa yang bisa dikerjakan oleh aplikasi, apa yang dilakukan dan

bagaimana hasil yang diberikan aplikasi adalah hal yang diteliti. Hal penting yang

harus dilakukan pada testing ini adalah, apakah tester mengetahui hasil (benar) apa

yang diharapkan dan apakah tester melakukan test dengan benar. Dari kedua hal

tersebut maka bisa dilihat apabila terjadi kesalahan, apakah kesalah tersebut

dikarenakan kesalahan aplikasi atau kesalahan implementasi.

2.5.3 Whitebox Testing

Whitebox testing merupakan sebuah pengujian yang dapat dilakukan saat

user atau tester memiliki source code dari software yang akan dilakukan test.

Testing whitebox dapat dilakukan oleh developer dengan cara mengetest tiap line

dalam code satu-persatu. Namun Hal ini akan memakan banyak waktu untuk

mengetest masing-masing line, terutama jika line mencapai ribuan hingga puluhan

ribu, sehingga developer terkadang harus membuat rencana testing yang mengetest

kebanyakan source code secara metodis. Testing seperti inipun lebih condong ke

pengujian logika karena dominannya analisis jalur logika bagaimana input yang

dimasukkan di proses oleh perangkat lunak menjadi hasil-hasil yang akan diproses

hingga menjadi hasil yang diinginkan.

Salah satu metode yang digunakan dalam White Box Testing adalah

pengujian basis path testing atau disebut dengan Cylomatic Complexity. Dalam

pelaksanaan White Box Testing, berikut langkah yang dilakukan (Pressman, 2010):

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:

Page 13: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

21

V(G) = E – N + 2

Keterangan:

E = Jumlah edge pada flowrgaph

N = Jumlah node pada flowrgaph

c. 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 dalam suatu prosedur. Berikut hubungan antara cyclomatic

complexity dan resiko dalam suatu prosedur.

Tabel 2.1 Hubungan Cyclomatic Complexity dan resiko

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)

2.6 Tinjauan Studi

Ada beberapa penelitian terkait yang pernah dilakukan mengenai sistem

penilaian jawaban esai otomatis dan Algoritma Rabin-Karp, antara lain yaitu:

1) Automatic Essay Grading System Menggunakan Metode Latent

Semantic Analysis (Bayu P, Baizal, dan Firdaus, 2011)

Penelitian ini memiliki tujuan untuk membangun serta menganalisis

kelayakan Automatic Essay Grading dengan mengimplementasikan Latent

Semantic Analysis (LSA). Pada jurnal penilitian ini peniliti juga melakukan analisis

mengenai seberapa besar pengaruh stemming pada proses essay grading bahasa

Indonesia pada penerapan Latent Semantic Analysis. Pada penilitian ini peniliti

menggunakan LSA dikarenakan LSA telah digunakan pada IEA dan memiliki

kecocokan dengan human rater serta dianggap reliable dalam memberikan skor

yang sama dengan human rater. Dalam penelitian ini peniliti menyatakan bahwa

tingkat akurasi rata – rata dari penilaian yang oleh sistem tidak tinggi, akurasi

Page 14: Hash teks[i] = Hash pattern Ya Substring teks[i ... II.pdf · mempersiapkan teks agar dapat digunakan dalam proses selanjutnya. Teks akan ... Design sistem dan perangkat lunak (system

22

berada di kisaran 45,03% dan 50,55%. Hal ini dikarenakan beberapa hal, seperti

perbedaan panjang jawaban dengan kunci jawaban, persebaran term pada kalimat

jawaban serta ketidakmampuan sistem untuk mendeteksi adanya maksud jawaban

yang sama maupun sinonim. Selain itu dinyatakan pula bahwa proses stemming

mampu menambah keakuratan dalam penilaian dengan rata – rata nilai perbedaan

0,49% dan 0,63%.

2) A Comparison of Rabin Karp and Semantic-Based Plagiarism Detection

(Supriyanto, Rakasiwi, & Syukur, 2012)

Pada penilitian ini dilakukan perbandingan dua buah algoritma yaitu Rabin-

Karp dan LSA. Penelitian ini bertujuan untuk membandingkan performa kedua

algoritma tersebut dalam mendeteksi plagiarisme pada dokumen. Di dalam

penilitian ini dihasilkan suatu kesimpulan bahwa performa Algoritma Rabin-Karp

dalam pendeteksian plagiarisme melebihi performa dari Algoritma LSA.

3) Deteksi Plagiat Dokumen menggunakan Algoritma Rabin Karp

(Firdaus, 2008)

Pada penelitian ini peneliti membahas secara skematis bagaimana

Algoritma Rabin-Karp bekerja dalam mendeteksi kesamaan pada suatu dokumen.

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.