Implementasi Algoritma Pencocokan String Sunda

Implementasi Algoritma Pencocokan String pada
Aplikasi Pengarsipan Berbasis Web
Ana Ervana 1, Asri Pertiwi 2
1

Mahasiswa Jurusan Teknik Informatika; 2Dosen Jurusan Teknik Informatika
STMIK Inti Indonesia, Jakarta
ana.ervana@gmail.com, asri.pertiwi@inti.ac.id

Abstraction
In daily activities, data searching done as a away to get information efficiently, such as
phone book searching, dictionary searching or location searching within memory storage. Some
searching algorithm was created to simplify user in searching some big data. One of searching
algorithm is Knuth-Morris-Pratt or KMP. This algorithm is string matching algorithm which do a
comparison of characters of text and characters of the pattern from left to right. The
idea of this algorithm is how to utilize the known pattern characters in the text until
a mismatch to do the shifting. This paper is written to implement KMP Algorithm to the Archieve
Web Application.
Kata Kunci : String Matching, Archive, Archiving System

1. PENDAHULUAN


1.1.

Latar Belakang
Algoritma
Pencocokan
String
merupakan algoritma yang digunakan untuk
melakukan pencarian sebuah string yang
terdiri dari beberapa karakter (yang biasa
disebut pattern) dalam sejumlah besar text.
Algoritma
Pencocokan
String
yang
diterapkan pada aplikasi pengarsipan
melakukan pencarian data dengan cara
menelusuri seluruh kata yang terdapat pada
dokumen.
Pengarsipan merupakan salah satu

kegiatan administrasi perkantoran yang
menunjang kegiatan perkantoran terutama
dalam penyimpanan catatan dan data
kelembagaan maupun organisasi. Kearsipan
meliputi beberapa proses yang dimulai dari

penciptaan, penerimaan, pengumpulan,
pengaturan, pengendalian, pemeliharaan dan
perawatan serta penyimpanan warkat
menurut sistem tertentu. Ketika arsip
dibutuhkan dapat ditemukan dengan cepat
dan tepat. Bila arsip-arsip tersebut tidak
bernilai guna lagi, maka arsip harus
dimusnahkan.
Arsip mempunyai peranan yang sangat
penting dalam suatu lembaga maupun
organisasi.
Arsip
digunakan
untuk

menunjang kinerja karyawan dalam
memberikan informasi secara teliti, cepat,
dan juga tepat kepada pihak manajemen.
Dengan demikian, akan mengoptimalkan
pihak manajemen dalam pengambilan
keputusan secara cepat. Meskipun arsip
elektonis telah hadir, namun sedikit sekali

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

1

lembaga atau organisasi yang menggunakan
manajemen
pengarsipan
model
ini.
Pengarsipan secara elektronis memberikan
banyak keuntungan dibandingkan dengan

pengarsipan secara pencatatan dokumentasi,
diantaranya : kecepatan dalam pencarian
arsip, kemudahan dalam berbagi dokumen,
kemudahan
dalam
recovery
data,
penghematan tempat dalam penyimpanan
arsip, dan penghematan dalam tenaga kerja.

1.2.

Identifikasi Masalah
Masalah yang timbul pada tempat dimana
dilakukan studi kasus apabila menggunakan
pengarsipan secara manual yaitu sebagai
berikut :
a. Departemen mengalami kesulitan
dalam melakukan pencarian arsip,
dikarenakan penomoran arsip tidak

disimpan pada sebuah database
terpusat
b. Melakukan
pekerjaan
yang
berulang-ulang, pegawai harus
menyalin status dokumen yang
masuk dan yang keluar ke dalam
beberapa buku besar (log-book).
c. Memerlukan tempat yang besar dan
banyak
untuk
penyimpanan
dokumen tertulis. Jika dokumen
semakin hari semakin bertambah
tentunya ruang penyimpanan untuk
dokumen arsip akan bertambah.
d. Kesulitan dalam recovery data.
Sebelum
melakukan

recovery,
pegawai arsip harus melakukan
pencarian file terlebih dahulu, baru
kemudian membuat salinanannya.

bantuan browser. Aplikasi ini dibuat dengan
menggunakan bahasa PHP dan data
disimpan dalam database MySQL. Didalam
aplikasi memiliki beberapa fitur seperti
berikut :
1. Pembuatan Surat
Pada fitur ini, user dapat melakukan
penulisan surat secara langsung.
2. Pencarian (Searching)
Fitur ini merupakan fitur dengan
menggunakan
algoritma
Pencocokan
String
yang

memudahkan user dalam melakukan
pencarian arsip.
3. Upload file
Fitur ini merupakan fitur yang
digunakan user untuk meng-upload
file lampiran dari surat yang telah
dibuat.
4. Authorization
Pada fitur ini hanya user yang
memiliki user ID yang dapat
mengakses arsip.
5. User privilege
Fitur
ini
digunakan
untuk
membatasi hak akses dari user.
Nantinya terdiri dari beberapa user
privilege, user privilege untuk
admin,

admin
arsip,
dan
departemen.
6. View file

1.3.

Ruang Lingkup
Aplikasi pengarsipan berbasis website
yang menggunakan algoritma Pencocokan
String ini dijalankan pada komputer dengan

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

Fitur ini digunakan untuk melihat
file yang hasil keluarannya berupa
file pdf.
7. Download

Fitur ini terletak pada detail surat,
dimana file yang di download
merupakan lampiran file dari surat
yang ada.

2

2. LANDASAN TEORI
Algoritma merupakan suatu alur
pikiran
dalam
menyelesaikan
suatu
pekerjaan, yang dituangkan dalam bentuk
tertulis yang dapat dimengerti oleh orang
lain. Suatu pekerjaan dapat diselesaikan
dengan berbagai macam cara, akan tetapi
harus tersusun secara logis agar pekerjaan
dapat diselesaikan dengan benar (Sjukani,
2010, hal.1).

2.1. Algoritma Pencocokan String
Algoritma pencocokan string atau
yang disebut juga dengan String matching
atau adalah suatu metode yang digunakan
untuk menemukan suatu keakuratan atau
hasil dari satu atau beberapa pola teks yang
diberikan. Pencocokan string merupakan
pokok bahasan yang penting dalam ilmu
komputer karena teks merupakan adalah
bentuk utama dari pertukaran informasi
antar manusia, misalnya pada literatur, karya
ilmiah, halaman web dan sebagainya
(Hulbert-Helger, 2007).
Pencarian string juga dapat digunakan untuk
mencari pola bit dalam sejumlah besar file
binary. Dalam algoritma pencocokan string,
teks diasumsikan berada di dalam memori,
sehingga bila kita mencari string di dalam
sebuah arsip, maka semua isi arsip perlu


dibaca terlebih dahulu kemudian disimpan
di dalam memori.
Pencocokan string fokus pada pencarian
satu, atau lebih umum, semua kehadiran
sebuah kata (lebih umum disebut pattern)
dalam sebuah teks. Semua algoritma yang
akan
dibahas
mengeluarkan
semua
kehadiran pola dalam teks. Pola dinotasikan
sebagai x = x[0..m-1]; m adalah panjangnya.

2.2. Algoritma Pencocokan String KnuthMorris-Pratt (KMP)
Algoritma
Knuth-Morris-Pratt
merupakan salah satu algoritma pencarian
string, yang dikembangkan secara terpisah
oleh Donald E. Knuth pada tahun 1967 dan
James H. Morris bersama Vaughan R. Pratt
pada tahun 1966, kemudian dipublikasikan
secara bersamaan pada tahun 1977.
Algoritma Knuth-Morris-Pratt melakukan
perbandingan karakter teks dan karakter
pada pola dari kiri ke kanan. Ide dari
algoritma
ini
adalah
bagaimana
memanfaatkan karakter-karakter pola yang
sudah diketahui ada di dalam teks sampai
terjadinya
ketidakcocokkan
untuk
melakukan pergeseran.

Gambar 2.1 Pergeseran dalam Algoritma Pencocokan String
Sumber: Christian Charas & Thierry Lecroq, Handbook of Exact String-Matching Algorithms

Misalkan, string teks y pada gambar
2.1, mempunyai panjang n, indeksnya

dinyatakan dengan i, serta string pola x,
mempunyai panjang m, indeknya dinyatakan
dengan j. Jika terjadi ketidakcocokan di x[j]

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

3

= a dan y[i+j] = b, maka telah diketahui
terdapat karakter-karakter pola yang ada
pada teks yaitu x[0..j-1] = y[i..j+j-1] = u.
karakter-karakter ini dapat dimanfaatkan
sehingga dapat dimungkinkan melakukan
pergeseran yang lebih jauh.
Secara sistematis, langkah-langkah yang
dilakukan algoritma Knuth-Morris-Pratt
pada saat mencocokkan string:
1. Algoritma Knuth-Morris-Pratt mulai
mencocokkan pattern pada awal teks.
2. Dari kiri ke kanan, algoritma ini akan
mencocokkan karakter per karakter
pattern dengan karakter di teks yang
bersesuaian, sampai salah satu kondisi
berikut dipenuhi:
a. Karakter di pattern dan di teks yang
dibandingkan tidak cocok (mismatch).
b. Semua karakter di pattern cocok.
Kemudian
algoritma
akan
memberitahukan penemuan di posisi
ini.
3. Algoritma kemudian menggeser pattern
berdasarkan tabel, lalu mengulangi
langkah 2 sampai pattern berada di
ujung teks

Gambar 2.2 Pseudocode KMP pada Fase
Pra Pencarian

Gambar 2.3 Pseudocode KMP pada Fase
Pencarian
2.3 Kompleksitas algoritma
Algoritma KMP menemukan semua
kemunculan dari pattern dengan panjang n
di dalam teks dengan panjang m dengan
kompleksitas waktu O(m+n). Algoritma ini
hanya membutuhkan O(n) ruang dari
memory internal jika teks dibaca dari file
eksternal. Semua besaran O tersebut tidak
tergantung pada besarnya ruang alphabet.
Sebagai
pembanding,
Algoritma
Running Karp-Rabin juga dapat menangani
masalah string maching, dan merupakan
pengembangan dari greedy. Jika [P]
merupakan panjang salah satu substring
pada pattern string [P], maka nilai hash
untuk setiap substring yang panjangnya [P]
pada text string akan dibandingkan dengan
nilai hash untuk substring dari pattern P
tersebut. Jika kedua nilai hash tersebut
identic, maka substring dari pattern P dan
substring dari text string tersebut akan

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

4

dibandingkan per elemen. Kompleksitas
kasus terburuk penggunaan algoritma ini
yaitu O(n3) dengan n merupakan panjang
string input dengan hasil hamper linier
walaupun kasus ini jarang terjadi.
Algoritma KMP mengalami inovasi
sedikit
dari
bruto-force,
memiliki
kompleksitas pembanding string yang lebih
sederhana dan ringkas sehingga proses yang
dilaluipun lebih sedikit. Algoritma ini lebih
unggul untuk string-matching antara 2 buah
nilai
hash
karena
kompleksitas
pembandingnya yang lebih sederhana.
2.3 Arsip
Amsyah (2005), mengatakan “arsip
adalah setiap catatan (record/warkat) yang
tertulis, tercetak, atau gambar, yang
mempunyai arti dan tujuan tertentu sebagai
bahan komunikasi dan informasi, yang
terekam pada kertas (kartu, formulir), kertas
film (slide, film-strip, mikro-film), media
komputer (pita tape, piringan, rekaman,
disket), kertas photocopy, dan lain-lain”.
Ada beberapa siklus hidup dari arsip
yang dimulai dari penciptaan arsip hingga
kepada disposis arsip tersebut.
1. Penciptaan
Merupakan tahap pertama, yang
menjadi
tahapan
dasar
untuk
mengontrol
perkembangan
dari
dokumen dan menetapkan aturan main
bagaimana sebuah dokumen akan
dikelola sesuai dengan nilai manfaatnya
bagi organisasi atau perusahaan.
2. Pemanfaatan
Tahap yang kedua, adalah pemanfaatan
dari sebuah dokumen. Tahapan ini
merupakan tahap implementasi dari
aturan maen yang telah disusun pada

tahap sebelumnya, yaitu bagaimana
mengefisiensikan
proses
retrievel
maupun pendistribusian arsip kepada
pihak yang berkepentingan.
3. Penyimpanan
Tahap ketiga adalah penyimpanan,
Bagi dokumen aktif, dengan frekuensi
dengan penggunaan lebih dari 12 kali
dalam setahun perlu perhatian dalam
pemanfaatannya. Untuk meningkatkan
efisiensi dan kenyamanan bagi user,
dokumen disimpan pada tempat yang
nyaman dan mudah di akses oleh
semua user.
4. Retrievel
Merupakan tahapan ke empat, yang
menitik beratkan kepada lokasi
dokumen maupun arsip yang dimaksud
dan melacaknya apabila tidak kembali
dalam waktu tertentu.
5. Disposisi
Merupakan tahapan yang terakhir,
berupa tahapan pemeliharaan dokumen
yang dianggap penting ke lokasi yang
tepat untuk penyimpanan, termasuk
pemusnahan dokumen bila dirasa
memenuhi
asas
cukup
untuk
dimusnahkan.
3.

ANALISA DAN PERANCANGAN
SISTEM

3.1. Analisa Usulan
Aplikasi yang diusulkan merupakan
aplikasi berbasis web, yang dibuat
menggunakan bahasa pemrograman script
PHP, dimana user dapat mengakses aplikasi
tersebut
kapanpun
dan
melakukan
pekerjaannya tanpa ketergantungan dengan
orang lain.

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

5

Aplikasi ini memiliki database yang
digunakan sebagai penyimpanan data, yang
terdiri dari surat-surat dan hal-hal yang
berkaitan dengan transaksi arsip, yang akan

memudahkan
user
dalam
melakuka
pengaksesan data. Database yang digunakan
yaitu MySQL.

Gambar 3.1 Alur Sistem yang Diusulkan

3.2. Perancangan Penomoran
Penomoran
pada
aplikasi
pengarsipan berbasis web, nomor surat
dibuat berdasarkan no urut pembuatan surat,
level_id pada pada tabel level, bulan
pembuatan surat, dan tahun pembuatan yang
dibatasi dengan garis miring. Adapun format
dari penomoran surat tersebut, yaitu :
000/XXXXX/XX/0000

A

B

C

D

pengirim surat
B = Pengirim surat berdasarkan level
C = Bulan pembuatan surat yang berbentuk
angka romawi
D = Tahun pembuatan surat
3.3 Pemodelan
3.3.1 Use Case Diagram
Adapun use case diagram dari
apalikasi pengarsipan berbasis web yaitu,
seperti pada gambar dibawah ini.

Keterangan :
A = No urut pembuatan surat berdasarkan
Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

6

Gambar 3.2

Use case Diagram

3.3.2 Activity Diagram
Gambar 3.4 Activity Diagram untuk
Upload File

Gambar 3.3 Activity Diagram untuk
Create File

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

7

Gambar 3.5 Activity Diagram untuk View File

Gambar 3.6 Activity Diagram untuk Pemusnahan File

3.3.5 Sequence Diagram
Sequence diagram menjabarkan mengenai behavior sebuah scenario tunggal. Diagram
tersebut menunjukkan sejumlah object contoh dan pesan – pesan yang melewati objek-objek
didalam use case.

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

8

Gambar 3.7 Sequence Diagram Department

Gambar 3.8 Sequence Diagram Admin

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

9

Gambar 3.9 Class Diagram

3.3.7 Perancangan Aplikasi

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.

function KMP($pattern,$tex){
$pattern = strtolower($pattern);
$tex = strtolower($tex);
$result = array();
$search = separate($pattern);
$patternWide = count($search);
$text = separate ($tex);
$textWide = count($text);
$jump = preKMP($search);
$i = $j = 0;
$num=0;
while($j-1 && $search[$i]!=$text[$j]){
$i = $jump[$i];}
$i++;
$j++;
if($i>=$patternWide){
$i = $jump[$i];
$result[$num++]=$j-$patternWide;}
}
return $result;}

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

10

Gambar 3.10 Perancangan Fungsi KMP
Pada gambar 3.10 diatas, merupakan
perancangan kode untuk fungsi KMP.
Variabel Pattern merupakan text yang akan
dicari dan 11a nada11 tex, yaitu text dari
database yang ada. Kode pada baris kedua
dan ketiga digunakan untuk mengubah
semua huruf kedalam huruf kecil, guna
untuk menghindari adanya sensitive pada
huruf.
Kode pada baris kelima dan keenam
merupakan Pemrosesan awal karakter
pattern dan menghitung lebar pattern. Kode
untuk baris ketujuh dan kedelapan
merupakan pemrosesan awal untuk karakter
text, kemudian menghitung lebar text itu
sendiri. Kode pada baris kesembilan

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.

berfungsi untuk menentuan lebar lompatan
jika karakter tidak cocok, sesuai dengan
konsep yang ada pada algoritma KMP.
Kode pada baris kesepuluh hingga
baris akhir merupakan proses pencocokan
utama, dimana $i merupakan variable untuk
lompatan, dan $j merupakan variable yang
mengidentifikasikan lebar text. Kode
tersebut menjelaskan, jika lompatan bernilai
0 keatas 11a nada karakter yang tidak cocok
maka akan melakukan lompatan sebanyak
karakter yang ditentukan di preKMP. Jika
pattern cocok dengan potongan text, maka
hasil akan ditampilkan.

function preKMP($search){
$patternWide = count($search);
$i = 0;
$j = $jump[0] = -1;
while($i-1 && $search[$i]!=$search[$j]){
$j = $jump[$j];}
$i++;
$j++;
if($search[$i]==$search[$j]){
$jump[$i]=$jump[$j];}}
return $jump;}
Gambar 3.11 Perancangan Fungsi Pre KMP

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

11

Gambar 4.2 Halaman Input Surat

4. TESTING DAN IMPLEMENTASI
4.1

c. Halaman Keluaran Pencarian Kata

Tampilan Aplikasi

Berikut ini akan ditampilkan
beberapa halaman penting dari aplikasi
pengarsipan yang dibuat, diantaranya
adalah :

\

a. Halaman Utama

Gambar 4.3 Halaman Keluaran

Gambar 4.1 Halaman Utama

b. Halaman Input Surat

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

12

Brawijaya.

5. KESIMPULAN DAN SARAN
Algoritma KMP telah berhasil di
implementasikan pada aplikasi pengarsipan
berbasis web dengan fitur utama searching.
Berdasarkan uji coba aplikasi, algoritma
KMP dapat membantu user melakukan
pencarian arsip dengan mudah. Untuk
pengembangannya dimasa depan dapat
dilakukan penelitian mengenai aplikasi yang
sama dengan penerapan pada mobile.

Amsyah, Zulkifli. 2005. Manajemen
Kearsipan. Jakarta : Gramedia
Pustaka Utama.
Sukoco, Badri Munir. 2007. Manajemen
Administrasi Perkantoran Modern.
Jakarta : Erlangga.
Suparjati, Tuginem, Rahayu,Pudji. 2000.
Tata Usaha dan Kearsipan.
Yogyakarta : Kanisius.

6. DAFTAR PUSTAKA
Sjukani, Moh. 2010. Algoritma (Algoritma
& Struktur data 1) dengan c, c++,
dan Java, Edisi 6. Jakarta :
Mitrawacanamedia.
Purwanto, Eko Budi. 2008. Perancangan &
Analisis Algoritma. Yogyakarta :
Graha Ilmu.
Knuth, Donald E.Morris, James H.Pratt,
Vaughan R.1977. fast Pattern
Matching in Strings. SIAM Journal
Of Computing Vol 6 No.2.
Utomo, Darmawan, Harjo, Erick Wijaya.
Handoko,
2008.
Perbandingan
Algoritma String Searching Bruto
Force, Knuth Morris Pratt, Boyer More,
dan Karb Kabin Pada Teks Al-kitab
Bahasa Indonesia. Techne jurnal ilmiah
elektroteknika vol.7 No.1 hal 1-13.
Universitas Kristen Satya Wacana.
Nugroho, Eko.2011. Perancangan Sistem
Deteksi Plagiarisme Dokumen Teks
Dengan menggunakan Algoritma
Karb-Kabin. Skripsi. Universitas

Kurweni, ukar. 2006. Student Guide Series
Pengenalan Komputer. Jakarta :
Elex Media Komputindo.
Maryono. Y, Istiana, B.Patmi.
Teknologi
Informasi
Komunikasi 1. Yudhistira.

2007.
dan

Connolly, Thomas.M, Begg, Carolyn.E.
2004. Database Systems: A
Practical Approach to Design,
Implementation and Management
(4th Edition). London : Pearson
education.
Indrajani, 2009. Sistem Basis Data dalam
Paket Five in One. Jakarta : Elex
Media Komputindo.
Nogroho,
Bunafit.
2005.
Relasional
dengan
Yogyakarta : Andi.

Database
MySQL.

Peranginangin, Kasiman. 2006. Aplikasi
Web dengan PHP dan MySQL.
Yogyakarta : Andi.
Munawar. 2005. Pemodelan Visual dengan
UML. Yogyakarta : Graha Ilmu.

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

13

Fowler, Martin. 2005. UML Distilled Edisi
3, Panduan Singkat Bahasa
pemodelan
Objek
Standar.
Yogyakarta : Andi.

Volume III – Nomor 2, November 2012
Journal Informatika, STMIK Inti Indonesia. ISSN:2085-8566

14